1

iText API を使用して PDF/A ドキュメントに N 個の署名フィールドを追加しようとしています。これらのフィールドは を使用して正しく追加されましたaddAnnotationPDFStamper、ドキュメントは 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 に答える