在 pdfbox 2.00 中使用 PDFMergerUtility 合并文档
Posted
技术标签:
【中文标题】在 pdfbox 2.00 中使用 PDFMergerUtility 合并文档【英文标题】:Merge document with PDFMergerUtility in pdfbox 2.00 【发布时间】:2016-06-24 23:15:05 【问题描述】:Pdfbox 将文档与 1.8.xx 合并,就像 mergePdf.mergeDocuments() 一样工作正常。现在 pdfbox 版本 2.0.0 包含一些参数,例如 org.apache.pdfbox.multipdf.PDFMergerUtility.mergeDocuments(MemoryUsageSetting arg0)
什么是 MemoryUsageSetting 如何与 mergeDocuments 一起使用。我读起来像 合并源文档列表,将结果保存在目标文件中。 请提供一些相当于 2.0 版的代码.0
public void combine()
try
PDFMergerUtility mergePdf = new PDFMergerUtility();
String folder ="pdf";
File _folder = new File(folder);
File[] filesInFolder;
filesInFolder = _folder.listFiles();
for (File string : filesInFolder)
mergePdf.addSource(string);
mergePdf.setDestinationFileName("Combined.pdf");
mergePdf.mergeDocuments();
catch(Exception e)
【问题讨论】:
【参考方案1】:根据javadoc,MemoryUsageSetting
控制如何使用内存/临时文件进行缓冲。
两个最简单的用法是:
MemoryUsageSetting.setupMainMemoryOnly()
这会将缓冲内存使用设置为仅使用大小不受限制的主内存(无临时文件)。
MemoryUsageSetting.setupTempFileOnly()
这会将缓冲内存使用设置为仅使用大小不受限制的临时文件(无主内存)。
所以对你来说,电话是
mergePdf.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
或
mergePdf.mergeDocuments(MemoryUsageSetting.setupTempFileOnly());
或者只是传递null。这将默认仅用于主内存。这也是javadoc 告诉的内容:memUsageSetting
定义了如何使用内存来缓冲 PDF 流;在 null 的情况下使用不受限制的主内存。
【讨论】:
appendchild 在 1.8.8 的 PDDocumentOutline 中使用,现在我们使用 2.00 作为 addLast 它有什么不同 @SenthilKumar 这是一个不同的问题,但是是的,您可以使用它。我看到迁移指南中没有提到它。作为一般规则 - 始终查看示例源。还有一个关于 2.0 文档的建议问题(但不是关于“如何”的问题!):issues.apache.org/jira/browse/PDFBOX-3030 今天晚些时候我会提到大纲。 @SenthilKumar 如果答案有用,请点击绿色复选标记。 (这适用于您在此处提出的所有问题)。如果答案没有帮助或不清楚,请向此人提供反馈,以便她/他可以改进答案。以上是关于在 pdfbox 2.00 中使用 PDFMergerUtility 合并文档的主要内容,如果未能解决你的问题,请参考以下文章