【发布时间】: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 关闭方法的一部分中使用才能正确保存。