我正在使用 pdfbox 来操作 PDF 内容。我有一个很大的 PDF 文件(比如 500 页)。我还有一些其他单页 PDF 文件只包含一个图像,每个文件最大大约 8-15kb。我需要做的是将这些单页 pdf 像覆盖一样导入到大 PDF 文件的某些页面上。
我已经成功尝试了 pdfbox 的 LayerUtility,但它创建了一个非常大的文件作为输出。源 pdf 在处理前约为 1MB,当添加较小的 pdf 文件时,大小可达 64MB。有时我需要将两个较小的 PDF 包含在较大的 PDF 中。
有没有更好的方法来做到这一点,或者我只是做错了?下面发布代码尝试将两个图层添加到单个页面上:
...
...
..
overlayDoc[pCounter] = PDDocument.load("data\\" + overlay + ".pdf");
outputPage[pCounter] = (PDPage) overlayDoc[pCounter].getDocumentCatalog().getAllPages().get(0);
LayerUtility lu = new LayerUtility( overlayDoc[pCounter] );
form[pCounter] = lu.importPageAsForm( bigPDFDoc, Integer.parseInt(pageNo)-1);
lu.appendFormAsLayer( outputPage[pCounter], form[pCounter], aTrans, "OVERLAY_"+pCounter );
outputDoc.addPage(outputPage[pCounter]);
mOverlayDoc[pCounter] = PDDocument.load("data\\" + overlay2 + ".pdf");
mOutputPage[pCounter] = (PDPage) mOverlayDoc[pCounter].getDocumentCatalog().getAllPages().get(0);
LayerUtility lu2 = new LayerUtility( mOverlayDoc[pCounter] );
mForm[pCounter] = lu2.importPageAsForm(outputDoc, outputDoc.getNumberOfPages()-1);
lu.appendFormAsLayer( mOutputPage[pCounter], mForm[pCounter], aTrans, "OVERLAY_2"+pCounter );
outputDoc.removePage(outputPage[pCounter]);
outputDoc.addPage(mOutputPage[pCounter]);
...
...