Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Itext PDFAAppearance类定义的外观不适用于签名字段_Itext_Itextpdf - Fatal编程技术网

Itext PDFAAppearance类定义的外观不适用于签名字段

Itext PDFAAppearance类定义的外观不适用于签名字段,itext,itextpdf,Itext,Itextpdf,我正在研究论文:PDF文档的数字签名。 我正在使用ITEXT的.Net DLL,我编写了类似于该论文示例2.6的代码: Private Sub Method() 'step 1: Create a Document Dim document = New Document() 'step 2: Create a PdfWriter Dim file = "C:\Export\ITEXT.PDF" Dim FileOutputStream As

我正在研究论文:PDF文档的数字签名。 我正在使用ITEXT的.Net DLL,我编写了类似于该论文示例2.6的代码:

Private Sub Method()
    'step   1:  Create a Document
    Dim document = New Document()

    'step   2:  Create a PdfWriter
    Dim file = "C:\Export\ITEXT.PDF"
    Dim FileOutputStream As System.IO.FileStream = System.IO.File.Open(file, System.IO.FileMode.Create)
    Dim writer = PdfWriter.GetInstance(document, FileOutputStream)

    'step   3: Open the Document
    document.Open()

    'step   4: Add content
    document.Add(New Paragraph("leeres Signaturfeld"))

    Dim signatureFormField = PdfFormField.CreateSignature(writer)

    signatureFormField.FieldName = "FieldName"
    signatureFormField.SetPage()
    signatureFormField.SetWidget(New Rectangle(150, 750, 250, 800), PdfAnnotation.HIGHLIGHT_NONE)
    signatureFormField.SetFieldFlags(PdfAnnotation.FLAGS_PRINT)

    writer.AddAnnotation(signatureFormField)

    Dim tp = PdfAppearance.CreateAppearance(writer, 72, 48)
    tp.SetColorStroke(BaseColor.GRAY)
    tp.SetColorFill(BaseColor.LIGHT_GRAY)
    tp.Rectangle(0.5F, 0.5F, 71.5F, 20.5F)
    tp.FillStroke()
    tp.SetColorFill(BaseColor.BLUE)
    ColumnText.ShowTextAligned(tp, Element.ALIGN_CENTER, New Phrase("SIGN HERE"), 36, 24, 25)
    signatureFormField.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, tp)

    'step   5: Close the Document
    document.Close()
End Sub
但是PDFAppearance类定义的外观不适用于我的空签名字段,我只得到一个没有文本的空字段。
我做错了什么

我试图重现你的问题;由于我对C#比VB更熟悉,所以我逐行翻译了它,所以在行为上应该没有任何区别

因此,在Adobe Acrobat Reader DC中打开您的文件后,我非常惊讶地看到了它的外观:

因此,我在我古老的Adobe Acrobat 9.5中打开它来检查该文件,但我看到了什么:

哎呀

但可能与上面的丝带有关。事实上,在释放标记字段按钮后,我得到:

因此,我假设您的问题可能取决于您使用的PDF查看器及其所处的状态。这实际上对应于说明单个注释处理程序可以忽略此条目并提供自己的外观的规范


不过有一句话:我建议你这样做

writer.AddAnnotation(signatureFormField)
之后

i、 e.仅在注释完成后添加注释


否则,在您完成外观创建之前,签名字段可能已经写入文件

我的回答是否回答了您的问题?非常感谢您的努力。你的回答澄清了我的问题。
signatureFormField.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, tp)