我正在尝试使用 iText API 在 PDF/A 文档中添加 N 个签名字段。这些字段已使用addAnnotation
of正确添加PDFStamper
,但文档不再符合 PDF/A。在 PDF 验证中,我收到以下错误:
XMP 属性“xmp:ModifyDate”与文档信息条目“ModDate”不同步
如何获得符合 PDF/A 标准的文档?
更新:现在我正在为 Android 使用 PdfAStamper (itext-pdfa-5.5.1) 和 itextg (itextg-5.5.1)。但我得到相同的验证错误-
这里有一些代码:
String pdfFileName = pdfFile.getAbsolutePath();
PdfReader pdf = new PdfReader(pdfFileName);
tempFile = new File(pdfFileName.substring(0, pdfFileName.lastIndexOf(File.separator)) + "/_pdfSignFieldtemp_" + pdfFile.getName());
tempOutStream = new FileOutputStream(tempFile.getAbsolutePath());
PdfStamper stp = new PdfStamper(pdf, tempOutStream);
PdfFormField sig = PdfFormField.createSignature(stp.getWriter());
(...cut...)
sig.setWidget(new Rectangle(llx, lly, urx, ury), null);
sig.setAppearance(PdfAnnotation.APPEARANCE_NORMAL,PdfTemplate.createTemplate(stp.getWriter(), 0, 0));
sig.setFlags(PdfAnnotation.FLAGS_PRINT);
sig.setFieldFlags(PdfFormField.FF_REQUIRED);
sig.put(PdfName.DA, new PdfString("/Arial 0 Tf 0 g"));
sig.setFieldName(signatureName);
stp.addAnnotation(sig, intpage);
stp.close();
pdf.close();
tempOutStream.close();
pdfFile.delete();
File pdfWithField = new File(pdfFileName.substring(0, pdfFileName.lastIndexOf(File.separator)) + "/_pdfSignFieldtemp_" + pdfFile.getName());
pdfWithField.renameTo(new File(pdfFileName));