使用PDFBOX合并PDF仅在AWS Lambda上产生65536错误的临时文件大小

时间:2019-07-14 14:59:04

标签: aws-lambda pdfbox

我们正在使用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

1 个答案:

答案 0 :(得分:2)

我在AWS中遇到了同样的问题,只是从

更改了合并的内存使用情况
pdfMerger.mergeDocuments(MemoryUsageSetting.setupMixed(MEMORY_USE));

pdfMerger.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());

它适用于AWS Lambda,

希望这对其他人有帮助。

致谢