【问题标题】:add static pdf to current generated on the fly pdf, using itext使用itext将静态pdf添加到动态生成的pdf中
【发布时间】:2013-04-13 07:17:29
【问题描述】:

我在将已经存在的 pdf 添加到我刚刚生成的当前 pdf 中时遇到问题。 我看到了 PdfCopy,但我的情况有点不同。我有一个即时生成的 pdf,在将其发送给客户端之前,我需要在其中添加一个现有的 pdf。

【问题讨论】:

    标签: pdf merge itext document writer


    【解决方案1】:

    如果您不介意丢失现有 PDF 中可能存在的所有交互性,可以使用 PdfReaderPdfImportedPage。请先阅读documentation,更具体地说是标题为“导入页面”的第 6.2.1 节。你也可以下载例子ImportingPages1或者看看这段代码sn-p:

    PdfReader reader = new PdfReader(existing_pdf);
    PdfImportedPage page = writer.getImportedPage(reader, pagenumber);
    document.setPageSize(reader.getPageSize(pagenumber));
    document.newPage();
    PdfContentByte canvas = writer.getDirectContent();
    canvas.addTemplate(page, 0, 0);
    

    这个 sn-p 是从内存中写入的。如果它不能立即起作用,您可能需要在这里和那里进行调整。

    【讨论】:

    • 或者,将新生成的序列化到内存中(ByteArrayOutputStream),读入PdfReader,然后可以使用Pdf*Copy*进行合并...
    • @Bruno 问题是“existing_pdf”不存在(它在运行中)。它只是打印到响应正文中的文档。
    • @pmp 如果existing_pdf 不存在,我建议更新您的问题,其中显示“我在添加已存在的pdf 时遇到问题”和“我需要在其中添加现有的pdf”,因为我解释那句话为:有一个existing_pdf。换句话说:您的附加评论与您的​​原始问题相矛盾。
    • @BrunoLowagie 没错。我的错。问题的标题是正确的,但正文有点误导。我的 pdf 正在运行中,我有它在内存中。现在我想知道是否可以向其中添加另一个 pdf(已经存在)?
    • 答案还是一样的:你的PDF是使用document objcet创建的; existing_pdf 是另一个已经存在的 PDF。请解释一下您对答案的不理解之处,因为我仍然不明白这个问题。当您说“是否可以添加另一个pdf(已经存在)”时,“已经存在”是什么意思?是文件吗?它是字节流吗? (其实这并不重要,但也许你认为它是。)
    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    相关资源
    最近更新 更多