Java iText签名表单字段内容未打印在纸上
我有一个方法,使用iText 5.5.9将签名字段添加到PDF单元格中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
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来说,遗漏了很多信息,所以我在做尝试&错误来解决所有问题。谢谢