随着PDF文档在平常工做学习中的运用愈来愈普遍,为了便于更好地储存和管理文档,不可避免地会遇到将多个PDF文档合为一个文档,或将一个PDF文档拆分红若干个文档的操做。本文就将详细介绍如何使用Java程序来对PDF文档进行合并及拆分。html
方法1:经过官网下载获取jar包。解压后将lib文件夹下的Spire.Pdf.jar文件导入Java程序。(以下图)java
方法2:经过maven仓库安装导入。具体安装详解参见此网页。app
方法1:加载三个独立的PDF文档,而后将第2、第三个PDF文档中的数据插入到第一个文档。maven
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(); } }
文档合并效果:学习
原PDF文档以下:spa
方式1:将一个PDF文档均分为多个PDF(每一个PDF包含1页)。3d
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(); } }
文档拆分效果:code
方式2:将一个PDF文档拆分为2个或多个PDF(每一个PDF可包含不用的页数)。htm
如下代码将原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"); } }
文档拆分效果:
(本文完)