`
weigang.gao
  • 浏览: 486151 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

PDF拆分与合并

 
阅读更多

在进行开发的时候,需要在每个页面进行盖章

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import uk.ltd.getahead.dwr.util.Logger;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfCopy;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;

public class PdfOperateUtil {
	private static Logger log = Logger.getLogger(PdfOperateUtil.class);

	public static void main(String[] args) throws Exception {
		List<String>  list = splitPdfFile("D:\\report\\GISS\\20150708113914663_LIST_133.pdf");
		for(String fileName : list){
			System.out.println(fileName);
		}
		//合并
		mergePdfFiles(list,"D:\\report\\GISS\\20150708113914663_LIST_gaoweigang.pdf");
	}

	/**
	 * PDF合并
	 * @param files
	 * @param savepath
	 */
	public static void mergePdfFiles(List<String> files, String savepath) {
		try {
			Document document = new Document(new PdfReader(files.get(0)).getPageSize(1));
			PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));
			document.open();

			for (int i = 0; i < files.size(); i++) {
				PdfReader reader = new PdfReader(files.get(i));

				int n = reader.getNumberOfPages();

				for (int j = 1; j <= n; j++) {
					document.newPage();
					PdfImportedPage page = copy.getImportedPage(reader, j);
					copy.addPage(page);
				}
			}

			document.close();

		} catch (IOException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
    /**
     * PDF拆分
     * @param filepath
     */
	public static List<String> splitPdfFile(String filepath) throws Exception{
		log.info("进入splitPdfFile方法");
		List<String> fileFullNameList = new ArrayList<String>();//存放拆分之后的文件全路径
		Document document = null;
		PdfCopy copy = null;

		try {
			PdfReader reader = new PdfReader(filepath);

			int n = reader.getNumberOfPages();//获取源PDF共有多少页

			if (n == 1) {//如果只有一页
				fileFullNameList.add(filepath);
				return fileFullNameList;
			}
            //如果有多页PDF
			String remotePath = filepath.substring(0,filepath.lastIndexOf("\\") + 1);//临时文件
			log.info("remote path:"+remotePath);
			String splitfilename = null;//文件名
			String splitfilefullname = null;//文件全路径
			for (int i = 1; i <= n; i++) {
				splitfilename = filepath.substring(
						filepath.lastIndexOf("\\") + 1,filepath.length() - 4);
				splitfilefullname = remotePath + splitfilename + "_" + i + ".pdf";
				fileFullNameList.add(splitfilefullname);
			}
			
			
			for (int i = 0; i < n; i++) {
				//创建一个新的文档,文档大小与reader相同
				document = new Document(reader.getPageSize(1));
				copy = new PdfCopy(document, new FileOutputStream(
						fileFullNameList.get(i)));
				document.open();
				document.newPage();
				//从输入流 中抓取 指定页面
				PdfImportedPage page = copy.getImportedPage(reader, i+1);
				//将 指定页面 复制到 输出流
				copy.addPage(page);
				document.close();
			}
            log.info("拆分成:"+fileFullNameList.size()+"页");
		} catch (IOException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		log.info("退出splitPdfFile方法");
		return fileFullNameList;
	}
	
}

 

 

分享到:
评论

相关推荐

    【免费、无任何限制】PDF拆分与合并工具

    网上很多PDF合并与拆分工具,都是收费的,但是这个工具是真正意义上免费的。无任何限制、无水印,不限制页数,可以在PDF文档中提取任意位置任意页数组成一个新文档。也可以将很多PDF文档合并成一个新的文档。

    PDF拆分及合并工具

    "PDF拆分及合并工具"就是针对这种情况设计的实用软件,能够帮助用户高效地处理PDF文档。 PDF拆分工具的主要功能是将一个大的PDF文件分割成多个小的PDF文件。这在处理包含多章节的长篇文档或者需要分别处理不同部分...

    c# PDF拆分合并工具源码

    标题中的“C# PDF拆分合并工具源码”指的是一个基于C#编程语言开发的软件,主要用于处理PDF文档,能够实现PDF文件的合并与拆分功能。这种工具在日常工作中非常实用,尤其对于需要处理大量PDF文档的用户,能够极大地...

    PDF拆分及合并

    本文将深入探讨“PDF拆分及合并”的主题,并基于提供的文件信息给出相应的知识点。 首先,PDF拆分是指将一个大的PDF文件分割成多个较小的PDF文件,每个小文件通常包含原文件的一部分页面。这种操作对于管理和组织...

    拆分pdf工具

    1. **PDF拆分**:这个工具能够将一个多页的PDF文件按照页面进行拆分,将原本的文件分割成多个单页PDF文件。这样的功能对于处理包含多个独立部分的长文档特别有用,比如学术论文、报告或合同,用户可以根据需要只提取...

    Aspose excel转pdf、pdf拆分合并

    在“PDF拆分合并”这部分,Aspose.Pdf可以方便地将一个PDF文件拆分为多个单独的文件,或者将多个PDF文件合并成一个。 4. **PDF转换**: 在实际应用中,将Excel转换为PDF有助于保持格式的一致性,便于分享和打印。...

    Spire.Pdf C# PDF合并,PDF拆分

    2. **PDF拆分**:Spire.Pdf也允许你从一个PDF文档中提取部分页面,创建新的PDF文件。这在需要提取特定页面或章节时特别有用。以下是如何拆分PDF的示例: ```csharp using Spire.Pdf; using System.IO; // 加载PDF...

    Java文件的拆分与合并.pdf

    Java文件的拆分与合并 一、Java文件的拆分 Java文件的拆分是指将一个大的Java文件分割成多个小的文件,以便于更好地管理和维护。在上述代码中,我们可以看到,作者使用了Java的文件操作类库来实现文件的拆分...

    itext合并和拆分PDF实例

    根据提供的文件信息,我们可以深入探讨如何使用iText库在Java环境中进行PDF文件的合并与拆分操作。以下是对这些操作的详细解释。 ### iText简介 iText 是一个开源库,用于生成、修改以及处理PDF文件。它支持多种...

    PDF拆分合并,pdf9spliter.zip

    在这种情况下,"PDF拆分合并"工具显得尤为重要。本压缩包文件“pdf9spliter.zip”正是为了解决这类问题而设计的,它包含了"PDF9Splitter"这款软件,可以高效地实现PDF的拆分与合并功能。 首先,我们来看"PDF9...

    pdf合并拆分文件工具

    本文将深入探讨PDF合并与拆分这一主题,并介绍一种免安装版本的PDF处理工具。 PDF合并是指将多个PDF文件整合成一个单一的PDF文档,这在整理报告、论文或手册时非常有用。合并PDF文件通常涉及到调整文件顺序、添加...

    python pdf 拆分 合并

    python pdf 拆分 合并,给出要拆分页码头尾,就可拆分合并pdf为小pdf文件

    PDF调用spire.pdf拆分合并

    以下是使用Spire.Pdf拆分PDF的基本步骤: - 首先,我们需要引入Spire.Pdf命名空间: ```csharp using Spire.Pdf; ``` - 接着,加载要拆分的PDF文档: ```csharp PdfDocument pdfDocument = new PdfDocument(); ...

    PDF拆分合并工具(免费).doc

    本文将介绍一款免费的PDF拆分合并工具,这款工具无需会员,也不需要安装,操作简单,支持批量处理,且无文件大小限制。 首先,这款PDF工具提供了两种版本供用户选择:安装版和免安装压缩包版。安装版可以通过提供的...

    PDF文件拆分合并工具

    本文将详细介绍PDF文件拆分合并工具的功能、操作方法以及在实际工作中的应用场景。 PDF拆合机是一种专门针对PDF文档设计的软件,其主要功能包括PDF文件的拆分与合并。拆分功能允许用户将一个大型的PDF文档分割成多...

    PDF合并拆分

    可合并拆分PDF文件,可合并拆分PDF文件,可合并拆分PDF文件,可合并拆分PDF文件,

    pdf文件拆分合并软件

    此时,PDF拆分功能就显得非常实用。通过PDF-Splitter&Merger.exe,用户可以选择性地拆分PDF文件,将一个大文件分割成多个小文件,每个小文件对应原文件中的一页或多页。这不仅可以减少文件的大小,方便存储和传输,...

    c#管理pdf,可以拆分,合并,以及盖章之类的

    1. **PDF拆分**:在C#中处理PDF文档时,我们可以利用开源库如iTextSharp或PDFsharp。这些库提供了API来读取PDF文档,并允许我们将单个文档拆分为多个小文档。例如,iTextSharp的PdfReader类可以用来读取PDF,然后...

    pdf合并与拆分小软件绿色版

    而PDF拆分功能则相反,它能将一个大的PDF文件分割成若干个小文件,每个小文件包含原文件的一部分内容。这在需要提取PDF中的特定页面或者章节,或者减小文件大小以便于电子邮件传输时特别实用。比如,你可能有一个...

    PDF 合并拆分工具

    "PDF Split and Merge V2.2.1"是一款开源的PDF处理工具,它的主要功能包括PDF文件的合并与拆分。开源意味着其源代码对公众开放,用户可以自由地查看、修改和分享,同时,这也为开发者提供了更多的定制可能性。这款...

Global site tag (gtag.js) - Google Analytics