如何将 List<PdfDocument> 合并为单个 PdfDocument

Posted

技术标签:

【中文标题】如何将 List<PdfDocument> 合并为单个 PdfDocument【英文标题】:How to merge List<PdfDocument> into a single PdfDocument 【发布时间】:2019-11-23 01:23:21 【问题描述】:

我有一个包含多个 PDF 的列表,我想将它们全部合并到一个 PdfDocument 中(我使用 iText),然后将此 PdfDocument 转换为 ByteArrayOutputStream(或 byte[])。

public byte[] mergePdfDocumentsIntoAPdfDocument (List<PdfDocument> pdfDocuments)

 final ByteArrayOutputStream mergedPdfStream = new ByteArrayOutputStream();
    final PdfDocument mergedPdfDocument = new PdfDocument(new PdfWriter(mergedPdfStream));


//I dont know how can I continue this

我应该怎么做才能实现这一目标?

【问题讨论】:

***.com/questions/3585329/… 我没有使用 PDF Box 你用的是什么库?请更新您的问题。 已更新,我正在使用 iText github.com/itext/i7js-samples/blob/develop/publications/book/… 【参考方案1】:
public byte[] mergePdfDocumentsIntoAPdfDocument(List<PdfDocument> pdfDocuments)
    ByteArrayOutputStream mergedPdfStream = new ByteArrayOutputStream();
    PdfDocument resultDoc = new PdfDocument(new PdfWriter(mergedPdfStream));

    for (PdfDocument doc : pdfDocuments) 
        int n = doc.getNumberOfPages();
        for (int i = 1; i <= n; i++) 
            PdfPage page = doc.getPage(i).copyTo(resultDoc);
            resultDoc.addPage(page);
        
    

    resultDoc.close();
    return mergedPdfStream.toByteArray();

【讨论】:

以上是关于如何将 List<PdfDocument> 合并为单个 PdfDocument的主要内容,如果未能解决你的问题,请参考以下文章

如何将上下文菜单项添加到FlowDocumentScrollViewer内的textBox

将 PDFPage 添加到 PDFDocument 时 PDFView 不更新

如何在 Android 上使用 PdfDocument 设置 PDF 文件大小

如何将webview内容划分为多个页面

如何将Object转换为字节数组(一个对象为List )

PDFKit 和 PDFDocument 注释在 Adob​​e Acrobat 中不可见