0

我在 vb.net 中使用 itextsharp 将一些背景(即其他单页 pdf)标记到另一个 pdf 上。

所以我有一个 5 页的“空白”pdf,我在第 1 页上标记了一个名为 page1.pdf 的文件的第一页,然后我将 page2.pdf 的第一页作为第 2 页等的背景。

到目前为止它运行良好,但我遇到了将特定 pdf 标记到我的“空白”上的问题 - 问题似乎与我将称为“page4.pdf”的文件有关,而且似乎可能是因为 page4.pdf。 pdf 被设计为可填写的表格。

当我在第 4 页上标记并在 Adob​​e 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()
4

1 回答 1

0

问题与作为表单的 pdf 无关,而是当我重复标记相同的输出文件时似乎出现的问题。解决方案只是在重新运行过程之前明确删除以前的输出文件。

于 2021-02-23T09:47:28.580 回答