如何使用iText在PDF / A文档中正确添加签名字段

问题描述 投票:1回答:1

我正在尝试使用iText API在PDF / A文档中添加N个签名字段。这些字段已使用addAnnotationPDFStamper正确添加,但该文档不再符合PDF / A标准。在PDF验证中,我收到以下错误:

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

如何获取符合PDF / A标准的文档?

更新:现在我使用的是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));
android pdf itext pdfa
1个回答
0
投票

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

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

附:这是一个古老的话题,但仍有人可能会发现这个答案很有用。

© www.soinside.com 2019 - 2024. All rights reserved.