【发布时间】:2017-03-16 11:49:21
【问题描述】:
你好
我们使用带有 PdfWriter(Document 组合的块和短语以及 DirectContent 等) 创建 PDF。到目前为止,这工作正常。虽然在某些空间创建 PDF,但我需要合并来自另一个 PDF 的页面。到目前为止我这样做是通过在实际报告的末尾保留要合并的文件列表并将它们合并在一起(通过关闭该报告,使用 PdfCopy 重新打开报告并在相应页面上合并文件)。
到目前为止,这也很好,但它有一个主要缺点:如果报告较大(例如,1800 页)并且需要将 1000 个 PDF 合并到该 PDF 中,它会变得非常非常慢。我想这与需要重写主 PDF 的事实有关,因为要合并到主文档中的 PDF 不仅在主报告的末尾简单地合并,而且在内部的某个地方,并且正在重复其他 999 个 PDF 要合并。
所以我考虑加快速度并导入页面,同时我仍在使用 PdfWriter.getImportedPage() 创建报告并将其作为模板添加到 PDF 中。这工作正常,但在阅读“如何不合并文档”(http://developers.itextpdf.com/examples/merging-pdf-documents-itext5/how-not-merge-documents) 之后,我不太确定这是否真的是一个好的解决方案。
但是.. 除了在主报告完成时合并之外,我真的不知道有什么更好的方法,而且这真的很慢,要合并数百个 PDF。
那么使用 PdfWriter.getImportedPage() 并相应地旋转页面是一个好主意还是一个坏主意?还是有什么我不知道的替代方案?
【问题讨论】:
-
您是否每次都将 PDF 写入文件?如果您将其保存在内存中并仅在最后将其写入文件,它可能会加快速度。
-
@AmedeeVanGasse 我们无法将它保存在内存中,因为我们不知道它会有多大,并且内存耗尽的机会高于我们可以获得的性能提升。在应用程序服务器上耗尽内存通常不是一个好主意,因此我们需要将其保留为外部进程并像这样运行它,但我们暂时避免这样做。