随着PDF文档在日常工作学习中的运用越来越广泛,为了便于更好地储存和管理文档,不可避免地会遇到将多个PDF文档合为一个文档,或将一个PDF文档拆分成若干个文档的操作。本文就将详细介绍如何使用Java程序来对PDF文档进行合并及拆分。

使用工具:Free Spire.PDF for Java(免费版)

Jar文件获取及导入:

方法1:通过官网下载获取jar包。解压后将lib文件夹下的Spire.Pdf.jar文件导入Java程序。(如下图)
安装图.png

方法2:通过maven仓库安装导入。具体安装详解参见此网页

【示例1】合并PDF文档

方法1:加载三个独立的PDF文档,然后将第二、第三个PDF文档中的数据插入到第一个文档。

import com.spire.pdf.PdfDocument;  
public class MergeDocument {  
public static void main(String[] args) {  
String[] files = new String[]  
{  
    "C:\\Users\\Test1\\Desktop\\Sample1.pdf",  
    "C:\\Users\\Test1\\Desktop\\Sample2.pdf",  
    "C:\\Users\\Test1\\Desktop\\Sample3.pdf",  
                };  
String outputFile = "output/MergeDocument.pdf"; 

//创建PDFDocument示例并加载三个示例文档  
PdfDocument[] docs = new PdfDocument[files.length];  
PdfDocument doc = new PdfDocument();  
for (int i = 0; i < files.length; i++) {  
            docs[i] = new PdfDocument();  
            docs[i].loadFromFile(files[i]);  
        }  
        
//添加第一页并写入第一个示例文档的数据  
docs[0].appendPage(docs[1]);  
  
//将另外两个文档的数据插入新的页面  
for (int i = 0; i < docs[2].getPages().getCount(); i = i + 2) {  
            docs[0].insertPage(docs[2], i);  
        }  
// 保存文档  
docs[0].saveToFile(outputFile);  
doc.close();  
    }  
}

方法2:通过流的方式加载三个示例文档,并使用mergeFiles(streams)方法将多个PDF文件合并为一个PDF文档。

import com.spire.pdf.*;  
import java.io.*;  
public class MergeFilesByStream {  
    public static void main(String[] args) throws FileNotFoundException {  
        String outputFile = "output/mergeFile.pdf";  
  
        FileInputStream stream1 = new FileInputStream(new File("C:\\Users\\Test1\\Desktop\\Sample1.pdf"));  
        FileInputStream stream2 = new FileInputStream(new File("C:\\Users\\Test1\\Desktop\\Sample2.pdf"));  
        FileInputStream stream3 = new FileInputStream(new File("C:\\Users\\Test1\\Desktop\\Sample3.pdf"));  
   //加载PDF示例文档  
  InputStream[] streams = new FileInputStream[]{stream1, stream2, stream3};  
  
   //合并PDF文档  
  PdfDocumentBase doc = PdfDocument.mergeFiles(streams);  
  
   //保存文档  
  doc.save(outputFile);  
        doc.close();  
    }  
}

文档合并效果:

效果1.png

【示例2】拆分PDF文档

原PDF文档如下:

源文档.png

方式1:将一个PDF文档均分为多个PDF(每个PDF包含1页)。

import com.spire.pdf.*;  
public class SplitFile {  
    public static void main(String[] args) {  
     //加载PDF文档  
  PdfDocument doc = new PdfDocument();  
        doc.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.pdf");  
  
    //拆分为多个PDF文档  
  doc.split("output/splitDocument-{0}.pdf", 0);  
  doc.close();  
    }  
}

文档拆分效果:

效果2.png

方式2:将一个PDF文档拆分为2个或多个PDF(每个PDF可包含不用的页数)。

以下代码将原PDF文档的第1-4页拆分为一个PDF文档,第5-9页拆分为另一个PDF文档:

import com.spire.pdf.*;  
import com.spire.pdf.graphics.PdfMargins;  
import java.awt.geom.Point2D;  
  
public class SplitFile2 {  
    public static void main(String[] args) {  
   //加载PDF文档  
  PdfDocument doc = new PdfDocument();  
        doc.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.pdf");  
  
  //新建一个PDF文档  
  PdfDocument newDoc1 = new PdfDocument();  
        PdfPageBase page;  
  
  //将原PDF文档的第1页到3页页添加至新建的PDF  
  for(int i = 0;i<4;i++)  
        { page = newDoc1.getPages().add(doc.getPages().get(i).getSize(), new PdfMargins(0));  
        doc.getPages().get(i).createTemplate().draw(page, new Point2D.Float(0,0));  
        }  
  
  //保存文档  
  newDoc1.saveToFile("output/SplitDoc1.pdf");  
  
  //新建另一个PDF文档  
  PdfDocument newDoc2 = new PdfDocument();  
  
  //将原PDF文档的第4至9页添加至新建的PDF  
  for(int i = 4;i<9;i++)  
        { page = newDoc2.getPages().add(doc.getPages().get(i).getSize(), new PdfMargins(0));  
        doc.getPages().get(i).createTemplate().draw(page, new Point2D.Float(0,0));  
        }  
  
 //保存文档  
  newDoc2.saveToFile("output/SplitDoc2.pdf");  
    }  
}

文档拆分效果:

效果3.png

(本文完)


Tina_Tang
298 声望9 粉丝