在 Java 中合并 PDF 文件通常可以通过以下几种方式来实现:
以下是这两种方法的详细说明:
iTextPDF(iText 7)
iText 是一个流行的 Java 库,用于处理 PDF 文件。以下是使用 iText 7 来合并 PDF 文件的步骤:
Maven 依赖:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.16</version>
</dependency>
Gradle 依赖:
implementation 'com.itextpdf:itext7-core:7.1.16'
示例代码:
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfMerger;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import java.io.File;
import java.io.IOException;
import java.util.List;
public class PdfMergerExample {
public static void main(String[] args) throws IOException {
List<String> pdfFiles = List.of("file1.pdf", "file2.pdf", "file3.pdf");
mergePDFs(pdfFiles, "merged.pdf");
}
public static void mergePDFs(List<String> pdfFiles, String outputFile) throws IOException {
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outputFile));
PdfMerger pdfMerger = new PdfMerger(pdfDoc);
for (String pdfFile : pdfFiles) {
PdfDocument sourcePdf = new PdfDocument(new PdfReader(pdfFile));
pdfMerger.merge(sourcePdf, 1, sourcePdf.getNumberOfPages());
sourcePdf.close();
}
pdfMerger.close();
pdfDoc.close();
}
}
Apache PDFBox
Apache PDFBox 是另一个用于处理 PDF 的 Java 库。以下是使用 PDFBox 来合并 PDF 文件的步骤:
Maven 依赖:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.30</version>
</dependency>
Gradle 依赖:
implementation 'org.apache.pdfbox:pdfbox:2.0.30'
示例代码:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.multipdf.PDFMergerUtility;
import java.io.IOException;
import java.util.List;
public class PdfBoxMergerExample {
public static void main(String[] args) throws IOException {
List<String> pdfFiles = List.of("file1.pdf", "file2.pdf", "file3.pdf");
mergePDFs(pdfFiles, "merged.pdf");
}
public static void mergePDFs(List<String> pdfFiles, String outputFile) throws IOException {
PDFMergerUtility pdfMerger = new PDFMergerUtility();
for (String pdfFile : pdfFiles) {
pdfMerger.addSource(pdfFile);
}
pdfMerger.setDestinationFileName(outputFile);
pdfMerger.mergeDocuments(null);
// Close the output file
try (PDDocument mergedDoc = PDDocument.load(new File(outputFile))) {
mergedDoc.save(outputFile);
}
}
}
手动合并 PDF 文件通常涉及解析 PDF 文件格式,提取页面内容,然后将它们写入一个新的 PDF 文件。这种方式非常复杂,不建议使用,因为有现成的库可以简化这个过程。
总结: