Java 合併、拆分PDF文檔

隨着PDF文檔在平常工做學習中的運用愈來愈普遍,爲了便於更好地儲存和管理文檔,不可避免地會遇到將多個PDF文檔合爲一個文檔,或將一個PDF文檔拆分紅若干個文檔的操做。本文就將詳細介紹如何使用Java程序來對PDF文檔進行合併及拆分。html

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

Jar文件獲取及導入:

方法1:經過官網下載獲取jar包。解壓後將lib文件夾下的Spire.Pdf.jar文件導入Java程序。(以下圖)
安裝圖.pngjava

方法2:經過maven倉庫安裝導入。具體安裝詳解參見此網頁app

【示例1】合併PDF文檔

方法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();  
    }  
}

文檔合併效果:學習

效果1.png

【示例2】拆分PDF文檔

原PDF文檔以下:spa

源文檔.png

方式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.png

方式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");  
    }  
}

文檔拆分效果:

效果3.png

(本文完)

相關文章
相關標籤/搜索