1

我正在尝试使用 iText API 在 PDF/A 文档中添加 N 个签名字段。这些字段已使用addAnnotationof正确添加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));
4

1 回答 1

0

XMP 属性“xmp:ModifyDate”与文档信息条目“ModDate”不同步

两个属性应该具有相同的名称,表示 xmp:ModifyDate 和 'ModifyDate'(而不是 ModDate)

PS 这是一个老话题,但仍然有人可能会发现这个答案很有用。

于 2019-02-22T12:37:28.940 回答