Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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
Java iText签名表单字段内容未打印在纸上_Java_Pdf_Printing_Itext_Digital Signature - Fatal编程技术网

Java iText签名表单字段内容未打印在纸上

Java iText签名表单字段内容未打印在纸上,java,pdf,printing,itext,digital-signature,Java,Pdf,Printing,Itext,Digital Signature,我有一个方法,使用iText 5.5.9将签名字段添加到PDF单元格中 private static void addSignatureFieldToCell(String fieldname, PdfPCell pdfPCell, PdfWriter pdfWriter) { PdfFormField digitalSignatureField = PdfFormField.createSignature(pdfWriter); // If the PDF is not sig

我有一个方法,使用iText 5.5.9将签名字段添加到PDF单元格中

private static void addSignatureFieldToCell(String fieldname, PdfPCell pdfPCell, PdfWriter pdfWriter) {
    PdfFormField digitalSignatureField = PdfFormField.createSignature(pdfWriter);
    // If the PDF is not signed we don't show anything
    digitalSignatureField.setWidget(new Rectangle(0, 0, 0, 0), PdfAnnotation.HIGHLIGHT_NONE);
    digitalSignatureField.setFieldName(fieldname);
    // With this flag the field is shown on Acrobat
    digitalSignatureField.setFieldFlags(PdfAnnotation.FLAGS_PRINT);
    // This allows to show the signature on the signatures panel at the left
    digitalSignatureField.setPage();

    pdfWriter.addAnnotation(digitalSignatureField);
    // This is the event attached to the cell that tells the writer to fill the field with the signature data
    FieldPositioningEvents fieldPositioningEvents = new FieldPositioningEvents(pdfWriter, digitalSignatureField);
    pdfPCell.setCellEvent(fieldPositioningEvents);
}
这很好用。经过一些步骤后,数字签名的信息将显示在PDF上。我打开AcrobatReader,可以看到PDF数字签名等等

问题是何时打印Acrobat的PDF。签名的信息不会显示在预览中,当然,当我打印文件时,也不会显示,因此该框只是空白

我是否缺少PdfFormField上的一些配置?我需要什么来允许打印签名


打印标志是注释标志,而不是字段标志

您可以使用
setFieldFlags

digitalSignatureField.setFieldFlags(PdfAnnotation.FLAGS_PRINT);
它设置了一些您可能根本不感兴趣的字段标志。相反,您应该使用
setFlags

digitalSignatureField.setFlags(PdfAnnotation.FLAGS_PRINT);
以实际设置使注释可打印的标志

此外,还将签名字段添加到注释中

pdfWriter.addAnnotation(digitalSignatureField);

但是在布局期间,
FieldPositioningEvents
也会这样做。因此,签名字段在注释列表中重复,这是您不想要的。

打印标志是注释标志,而不是字段标志

您可以使用
setFieldFlags

digitalSignatureField.setFieldFlags(PdfAnnotation.FLAGS_PRINT);
它设置了一些您可能根本不感兴趣的字段标志。相反,您应该使用
setFlags

digitalSignatureField.setFlags(PdfAnnotation.FLAGS_PRINT);
以实际设置使注释可打印的标志

此外,还将签名字段添加到注释中

pdfWriter.addAnnotation(digitalSignatureField);

但是在布局期间,
FieldPositioningEvents
也会这样做。因此,签名字段在注释列表中重复,这是您不想要的。

请共享一个示例结果PDF进行分析。刚刚在问题末尾添加了链接请共享一个示例结果PDF进行分析。刚刚在问题末尾添加了链接是,我下载了iText RUPS工具,试图找出更多的东西,我看到字段被复制了,但我不知道为什么。另外,iText的文档,至少对于5.5.9来说,遗漏了很多信息,所以我在做尝试&错误来解决所有问题。谢谢,我下载了iText RUPS工具试图找出更多的东西,我看到这个字段被复制了,但我不知道为什么。另外,iText的文档,至少对于5.5.9来说,遗漏了很多信息,所以我在做尝试&错误来解决所有问题。谢谢