【发布时间】:2014-06-09 12:57:01
【问题描述】:
我正在尝试使用 iText API 在 PDF/A 文档中添加 N 个签名字段。
这些字段已使用addAnnotation 或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));
【问题讨论】:
-
对于 PDF/A 特定的 pdf 处理,iText api 同时提供其中心类的特定变体,例如
PdfAStamper。在最近的版本中,这些变体的质量有了很大提高。 -
感谢您的回复。根据您的建议,我正在使用 PdfAStamper 和 itextg for Android。但我得到了同样的验证错误。
-
你用的是什么版本,能分享一下代码吗?
-
@MichaëlDemey,感谢您的回复。主题已更新。