使用 PDFBox 替换 PDF 页面

Riv*_*ivu 5 java pdf-generation pdfbox

我有两个 PDF 文件(命名为:A1.pdf 和 B1.pdf)。现在我想以编程方式用第一个 (A1.pdf) 替换第二个 PDF 文件 (B1.pdf) 的某些页面。在这种情况下,我使用的是 PDFBox 库。

这是我的示例代码:

try {
        File file = new File("/Users/test/Desktop/A1.pdf");
        PDDocument pdDoc = PDDocument.load(file);

        PDDocument document = PDDocument.load(new File("/Users/test/Desktop/B1.pdf"));
        document.removePage(3);
        document.addPage((PDPage) pdDoc.getDocumentCatalog().getAllPages().get(0));
        document.save("/Users/test/Desktop/"+"generatedPDFBox"+".pdf");
        document.close();
     }catch(Exception e){}
Run Code Online (Sandbox Code Playgroud)

这个想法是替换第三页。在此实现中,页面附加到输出 pdf 的最后一页。谁能帮我实现这个?如果没有 PDFBOX。你能在java中推荐一些其他的库吗?

Til*_*err 3

此解决方案创建第三个 PDF 文件,其中包含您要求的内容。请注意,页面是从零开始的,因此问题中的“3”必须是“2”。

    PDDocument a1doc = PDDocument.load(file1);
    PDDocument b1doc = PDDocument.load(file2);
    PDDocument resDoc = new PDDocument();

    List<PDPage> a1Pages = a1doc.getDocumentCatalog().getAllPages();
    List<PDPage> b1Pages = b1doc.getDocumentCatalog().getAllPages();

    // replace the 3rd page of the 2nd file with the 1st page of the 1st one
    for (int p = 0; p < b1Pages.size(); ++p)
    {
        if (p == 2)
            resDoc.addPage(a1Pages.get(0));
        else
            resDoc.addPage(b1Pages.get(p));
    }

    resDoc.save(file3);
    a1doc.close();
    b1doc.close();
    resDoc.close();
Run Code Online (Sandbox Code Playgroud)

如果您想从命令行工作,请查看此处: https ://pdfbox.apache.org/commandline/

然后使用 PDFSplit 和 PDFMerge。