在vb.net中用iTextSharp自动填充的Acrofields在单击后才可见
我正在开发一个vb.net应用程序来填充先前存在的pdf表单,我遇到了一个令人沮丧的问题。下面的代码将值放入pdf表单上的给定字段中,但为了在Adobe Reader中查看这些值,必须选择字段本身。我无法共享pdf本身,但在Acrobat中打开它时,似乎安全/保护不是问题所在,尽管当我将FormFlating设置为True时,确实出现了权限错误 代码中是否有我遗漏的步骤在vb.net中用iTextSharp自动填充的Acrofields在单击后才可见,vb.net,pdf,automation,itextsharp,acrobat,Vb.net,Pdf,Automation,Itextsharp,Acrobat,我正在开发一个vb.net应用程序来填充先前存在的pdf表单,我遇到了一个令人沮丧的问题。下面的代码将值放入pdf表单上的给定字段中,但为了在Adobe Reader中查看这些值,必须选择字段本身。我无法共享pdf本身,但在Acrobat中打开它时,似乎安全/保护不是问题所在,尽管当我将FormFlating设置为True时,确实出现了权限错误 代码中是否有我遗漏的步骤 Imports System Imports System.IO Imports System.Xml Imports iTe
Imports System
Imports System.IO
Imports System.Xml
Imports iTextSharp
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.text.xml
Imports iTextSharp.pdfa
Imports System.Security
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim pdfTemp As String = "C:\ExampleTemplate.pdf"
Dim newFile As String = "C:\NewFile.Pdf"
Dim pdfReader As New PdfReader(pdfTemp)
Dim pdfStamper As New PdfStamper(pdfReader, New FileStream(newFile,_ FileMode.Create), "\6c", True)
Dim pdfFormFields As AcroFields = pdfStamper.AcroFields
pdfFormFields.SetField("Date", "03092014", "03092014")
pdfFormFields.SetField("Contract_No", "1234456", "1234456")
pdfFormFields.SetField("Buyer", "bar, foo", "bar, foo")
pdfFormFields.GenerateAppearances = True
pdfStamper.FormFlattening = True
pdfStamper.Close()
pdfReader.Close()
End Sub
End Class
因此,我并不完全清楚为什么这样做有效,而我以前的努力却没有,但是复制和粘贴这些代码来初始化PdfStamper
Dim pdfTemplate As String = "Path to fillable pdf"
Dim strFolder As String = "Path to destination Folder"
Dim newFile As String = strFolder & "Name of Completed Form"
Dim pdfReader As New PdfReader(pdfTemplate)
Dim pdfStamper As New PdfStamper(pdfReader, New FileStream(newFile, FileMode.Create))
Dim pdfFormFields As AcroFields = pdfStamper.AcroFields
`fields and values as in original question'
pdfStamper.FormFlattening = True
pdfStamper.Close()
从教程中可以看出,该项目是可行的
另一方面,我很清楚,并非所有带有可填充字段的.pdf文件都是“表单”,而且itextsharp要求该文件是表单。当我成功地将上述代码应用于两个文件后,第三个文件失败时,我意识到了这一点,尽管我知道字段的名称。为了使它成为一种形式,并因此被itextsharp识别,我在acrobat中打开它并创建了一种形式。所有的字段和它们的名字都被保留了下来,所以我保存了它,它就像一个符咒 尝试将
pdfFormFields.generateapearances=True
移到字段设置上方