【问题标题】:Merge document with PDFMergerUtility in pdfbox 2.00在 pdfbox 2.00 中使用 PDFMergerUtility 合并文档
【发布时间】: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)
        {

        }  
    }

【问题讨论】:

    标签: java merge pdfbox


    【解决方案1】:

    根据javadocMemoryUsageSetting 控制如何使用内存/临时文件进行缓冲。

    两个最简单的用法是:

    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 如果答案有用,请点击绿色复选标记。 (这适用于您在此处提出的所有问题)。如果答案没有帮助或不清楚,请向此人提供反馈,以便她/他可以改进答案。
    猜你喜欢
    • 2020-07-01
    • 2016-10-02
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多