itextsharp 冲压表格 pdf 到其他 pdf

问题描述

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

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

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

当我在 page4 上盖章并在 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)
    
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()

解决方法

问题与 pdf 是一种形式无关,但当我重复标记相同的输出文件时似乎突然出现了一个问题。解决方法是在重新运行进程之前显式删除以前的输出文件。