我在 vb.net 中使用 itextsharp 将一些背景(即其他单页 pdf)标记到另一个 pdf 上。
所以我有一个 5 页的“空白”pdf,我在第 1 页上标记了一个名为 page1.pdf 的文件的第一页,然后我将 page2.pdf 的第一页作为第 2 页等的背景。
到目前为止它运行良好,但我遇到了将特定 pdf 标记到我的“空白”上的问题 - 问题似乎与我将称为“page4.pdf”的文件有关,而且似乎可能是因为 page4.pdf。 pdf 被设计为可填写的表格。
当我在第 4 页上标记并在 Adobe Reader 中打开空白文件时,我收到以下消息:
处理页面时出错。阅读本文档时出现问题 (18)
任何人都可以建议一种方法,我可以在没有此问题的情况下使用表单 pdf 作为源来标记 pdf 吗?
谢谢!
这是我用于标记的代码的摘录(它执行其他操作并涉及一个循环来遍历 pdf 的页面,但我只是将实际的标记位放在下面以保持简单):
Dim background As PdfContentByte
Dim page As PdfImportedPage = Nothing
Dim reader As PdfReader = New PdfReader(sourcepdf)
Dim stamper As New itextsharp.text.pdf.PdfStamper(reader, New System.IO.FileStream(outputpdf, System.IO.FileMode.Create))
Dim s_reader As New PdfReader(backfile)
page = stamper.GetImportedPage(s_reader, 1)
background.AddTemplate(page, 0, 0)
stamper.Close()
reader.Close()
s_reader.Close()
这是我一直在尝试将表单 pdf 转换为“非表单”的代码,我希望它可以消除标记问题(到目前为止没有成功):
Dim pdfReader As PdfReader = New PdfReader(inputpdf)
Dim pdfStamper As itextsharp.text.pdf.PdfStamper = New PdfStamper(pdfReader, New FileStream(outputpdf, FileMode.Create))
pdfStamper.AnnotationFlattening = True
pdfStamper.FreeTextFlattening = True
pdfStamper.FormFlattening = True
pdfStamper.Close()