gpt4 book ai didi

java - 使用 PDFBOX 合并 PDF 仅在 AWS lambda 上给出暂存文件大小 65536 错误

转载 作者:行者123 更新时间:2023-12-02 01:25:25 26 4
gpt4 key购买 nike

我们正在使用 PDFBOX 合并两个 PDF

  1. 文件 1:35 KB
  2. 文件 2:32 KB

合并时,我收到错误预期临时文件大小为 65536,但发现为 61440

我正在使用 MemoryUsuageSetting 使用 tempfile 进行合并,如下所示

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: Expected scratch file size of 65536 but found 61440r   at org.apache.pdfbox.io.ScratchFile.enlarge(ScratchFile.java:237)r  at org.apache.pdfbox.io.ScratchFile.getNewPage(ScratchFile.java:167)r   at org.apache.pdfbox.io.ScratchFileBuffer.addPage(ScratchFileBuffer.java:126)r  at org.apache.pdfbox.io.ScratchFileBuffer.<init>(ScratchFileBuffer.java:84)r    at org.apache.pdfbox.io.ScratchFile.createBuffer(ScratchFile.java:403)r at org.apache.pdfbox.cos.COSStream.createRawOutputStream(COSStream.java:271)r   at org.apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:119)r    at org.apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:101)r    at org.apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:140)r    at org.apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:101)r    at org.apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:110)r    at org.apache.pdfbox.multipdf.PDFCloneUtility.cloneForNewDocument(PDFCloneUtility.java:101)r    at org.apache.pdfbox.multipdf.PDFCloneUtility.cloneMerge(PDFCloneUtility.java:194)r at org.apache.pdfbox.multipdf.PDFCloneUtility.cloneMerge(PDFCloneUtility.java:225)r at org.apache.pdfbox.multipdf.PDFCloneUtility.cloneMerge(PDFCloneUtility.java:185)r at org.apache.pdfbox.multipdf.PDFCloneUtility.cloneMerge(PDFCloneUtility.java:225)r at org.apache.pdfbox.multipdf.PDFCloneUtility.cloneMerge(PDFCloneUtility.java:174)r at org.apache.pdfbox.multipdf.PDFMergerUtility.appendDocument(PDFMergerUtility.java:558)r   at org.apache.pdfbox.multipdf.PDFMergerUtility.legacyMergeDocuments(PDFMergerUtility.java:391)r at org.apache.pdfbox.multipdf.PDFMergerUtility.mergeDocuments(PDFMergerUtility.java:277)r

我们使用的是PDFBox版本2.0.12

有人可以指导解决这个问题吗?

谢谢,安佳娜

最佳答案

我在 AWS 中遇到了同样的问题,只是更改了合并的内存使用量

pdfMerger.mergeDocuments(MemoryUsageSetting.setupMixed(MEMORY_USE));

pdfMerger.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());

它适用于 AWS Lambda,

希望这对其他人有帮助。

问候

关于java - 使用 PDFBOX 合并 PDF 仅在 AWS lambda 上给出暂存文件大小 65536 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57028524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com