我在Visual Basic 2012中使用ItextSharp.text.pdf。尝试从IRS.gov填写f941.pdf。一切都很好,除了它打破了使用权利。所以我研究了这个并在追加模式下创建了压模。这修复了使用权限,但现在我无法设置复选框。
MyReader = New PdfReader(myFileName)
PdfOutputStream = New FileStream(outFileName, FileMode.OpenOrCreate)
Stamper = New PdfStamper(MyReader, PdfOutputStream, Chr(0), True)
FormAcroFields = Stamper.AcroFields
KeysList = FormAcroFields.Fields.Keys.ToList
SetCheck(Index, True)`
我不确定压模定义中的Chr(0)是否正确。我没有得到任何错误,结果是KeysList(字符串列表)填充了表单字段键。调用SetCheck(FieldNumber,True)应设置复选框。
Private Function SetCheck(ByRef Fieldnumber As Integer, Optional State As Boolean = True) As Boolean
Dim Dstates() As String = FormAcroFields.GetAppearanceStates(KeysList(Fieldnumber))
If State = True Then
FormAcroFields.SetField(KeysList(Fieldnumber), Dstates(0))
Else
If Dstates.Length > 1 Then
FormAcroFields.SetField(KeysList(Fieldnumber), Dstates(1))
Else
FormAcroFields.SetField(KeysList(Fieldnumber), "")
End If
End If
Return True
End Function
Dstates(0)将保留该值以设置复选框,如果存在Dstates(1),则它将是off值。如果只有Dstates(0)那么使用“”值似乎将它们关闭。这很好用,直到我使用了追加模式。
我发现了一些类似的帖子,但解决方案是在JS中,我不知道如何将其转换为VB。