【问题标题】:Replace a page in a PDF with iText7用 iText7 替换 PDF 中的页面
【发布时间】:2020-05-07 13:04:02
【问题描述】:

我正在将一些 PDF 编辑工具从 iTextSharp 更新到 iText7。

在 iTextSharp 中,pdfStamper 类中有一个方法:pdfStamper.ReplacePage()。 但是,iText7 中的 pdfStamper 类已被删除,我无法复制相同的功能。

假设我有文档 X,需要将第 4 页替换为文档 Y 的第 1 页,但我希望将结果保存到新文档 Z。

到目前为止,我有 3 行使用 CopyPageTo 方法。但是,创建的任何 PDF 文档的大小都只有 1kb 并且已损坏。

有人对较新的 iText7 和 CopyPageTo 方法有经验吗?

        NewPagesReader = New PdfReader(strNewPageDocPath)
        docNewPages = New PdfDocument(NewPagesReader)
        OriginalDocReader = New PdfReader(strOrigPageDocPath)
        docOringal = New PdfDocument(OriginalDocReader)

        Dim docNew As PdfDocument
        Dim NewPDFWriter As New PdfWriter(saver.FileName)
        docNew = New PdfDocument(NewPDFWriter)

        docOringal.CopyPagesTo(1, 3, docNew)
        docNewPages.CopyPagesTo(1, 1, docNew)
        docOringal.CopyPagesTo(5, 6, docNew)


        ToWriter.Close()
        docNew.Close()

【问题讨论】:

  • 您使用的是哪个版本的 iText 7?您的代码看起来正确,并且使用最新版本 7.1.11,它在我的测试中按预期工作。我必须从您的代码示例中删除 ToWriter.Close()。确保您没有用该行覆盖或损坏您的输出文档。
  • 你好。我认为是我在文档之前关闭了作者,因为我只是尝试删除该行并且效果很好。 Writer 必须在 PDFDocument 关闭方法的一部分中使用才能正确保存。

标签: vb.net itext7


【解决方案1】:

您的代码看起来不错。除了将所有页面复制到新文档之外,您还可以删除并插入页面:

NewPagesReader = New PdfReader(strNewPageDocPath)
docNewPages = New PdfDocument(NewPagesReader)
OriginalDocReader = New PdfReader(strOrigPageDocPath)
Dim NewPDFWriter As New PdfWriter(saver.FileName)
docOringal = New PdfDocument(OriginalDocReader, NewPDFWriter)

docOringal.RemovePage(4)
docNewPages.CopyPagesTo(1, 1, docOringal, 4)

docOringal.Close()

【讨论】:

    猜你喜欢
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 2021-02-19
    相关资源
    最近更新 更多