我们正在使用PDFBOX合并PDF,但我有两个pdf 1.文件1:35 KB 2.文件2:32 KB
合并时出现错误 “预期的暂存文件大小为65536,但发现为61440”
我正在使用使用tempfile进行合并的MemryUsuageSetting pdfMerger.mergeDocuments(MemoryUsageSetting.setupTempFileOnly());
下面是我的合并例程中的代码
List<InputStream> sources (inputsteam of my files to merge)
mergedPDFOutputStream = new ByteArrayOutputStream();
cosStream = new COSStream();
PDFMergerUtility pdfMerger = new PDFMergerUtility();
pdfMerger.addSources(sources);
pdfMerger.setDestinationStream(mergedPDFOutputStream);
pdfMerger.mergeDocuments(MemoryUsageSetting.setupTempFileOnly());
在AWS Lambda中调用上述合并例程时,我们遇到了错误 预期暂存文件大小为65536,但发现为61440
但是,如果在本地计算机上运行的Java主程序中调用pdf合并例程,则文件将成功生成。
下面是错误的堆栈跟踪
java.io.IOException:预期的暂存文件大小为65536,但在org.apache.pdfbox.io.ScratchFile.getNewPage上的org.apache.pdfbox.io.ScratchFile.enlarge(ScratchFile.java:237)r找到61440r (ScratchFile.java:167)r在org.apache.pdfbox.io.ScratchFileBuffer.addPage(ScratchFileBuffer.java:126)r在org.apache.pdfbox.io.ScratchFileBuffer。(ScratchFileBuffer.java:84)r在org。 org.apache.pdfbox.cos.COSStream.createRawOutputStream(COSStream.java:271)r(位于org.apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument()处的apache.pdfbox.io.ScratchFile.createBuffer(ScratchFile.java:403)r org.apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:101)r(org.apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:140)r org.apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:110)上的apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:101)r位于org.apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:101)的r位于org.apache.pdfbox.multipdf.PDFCloneUtility.cloneMerge(PDFCloneUtility.java:194)的r位于org.apache.pdfbox.multipdf。 org.apache.pdfbox.multipdf.PDF.PDFCloneUtility.cloneMerge(PDFCloneUtility.java:185)r(位于org.apache.pdfbox.multipdf.PDFCloneUtility.cloneMerge(PDFCloneUtility.java:225)) r位于org.apache.pdfbox.multipdf.PDFCloneUtility.cloneMerge(PDFCloneUtility.java:174)r位于org.apache.pdfbox.multipdf.PDFMergerUtility.appendDocument(PDFMergerUtility.java:558)的r位于org.apache.pdfbox.multipdf。 org.apache.pdfbox.multipdf.PDFMergerUtility.mergeDocuments(PDFMergerUtility.java:277)r上的PDFMergerUtility.legacyMergeDocuments(PDFMergerUtility.java:391)r
我们正在使用PDFBox版本(2.0.12)
有人可以指导吗?
谢谢 Anjana
答案 0 :(得分:2)
我在AWS中遇到了同样的问题,只是从
更改了合并的内存使用情况pdfMerger.mergeDocuments(MemoryUsageSetting.setupMixed(MEMORY_USE));
到
pdfMerger.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
它适用于AWS Lambda,
希望这对其他人有帮助。
致谢