2017-02-13 6 views
0

私は、既存のPDF(PDF/A3標準)の各ページにメタデータを埋め込むプロジェクトに取り組んでいます。私はxmlファイルをページ数だけ持っており、プログラムは対応するxmlファイルをメタデータとしてページに埋め込みます。PDFページの/ Metadataエントリにxmpを埋め込む方法

これまでのところ、私のプログラムは、iText 5で各ページに/ Metadataエントリを追加し、単純な文字列やテキストを各ページのメタデータエントリに追加することができ、PDFの下に表示することができますAdobe Acrobat Proのツリー構造。ページへ/メタデータエントリを追加するのはここ が私のコードです:

 writer.addPageDictEntry(PdfName.METADATA, new PdfString("123")); 

問題は、これまで/メタデータエントリにXMLを追加する方法ですか?私のXMLファイルはいくつかの単純なツリー構造ですが、私はどのようにXMLファイルをPdfObjectに変換するのか分かりません。 iTextの開発者サイトでは、各ページの/ Metadataエントリにはxmpの参照が含まれているはずであることを示しています。すべてのXMLファイルを一緒に埋め込み、各ページのエントリにそのパーツのリファレンスを渡す必要がありますか?

This screenshot of acrobat pro shows what my program can do so far, click here to see the pic

答えて

0

addPageDictEntry()方法は何が必要ではありません。 setPageXmpMetadata()メソッドを試してください。 API docsを参照してください。

この方法では、byte[]を使用できます。 byte[]に正しいXMPデータが含まれていることを確認してください。このメソッドは内部的にすべての重い持ち上げを行います。つまり、XMLを含むストリームオブジェクトが作成され、ページディクショナリからそのストリームオブジェクトへの参照が追加されます。ご存じのように、PDFストリームを直接オブジェクトとして使用することはPDFでは禁じられています。

あなたはそれがPdfWriterにそれを追加することで、参照を取得し、ストリームを自分でオブジェクトを作成することで、ハードな方法を行い、その後、ページ辞書のエントリの値として、その参照を使用したい場合は、この質問への答えにインスピレーションを得るかもしれません:How do I add XMP metadata to each page of an existing PDF using iTextSharp(またはthis example)、ショートカット方法ははるかに使いやすくすべきです。

+0

ありがとうございました!それは本当に多くの助けになる!今、私はPDFページにxmpを埋め込むことを考え出しました。しかし、私が会った新しい問題があります。私は自分のPDFがAdobe Acrobat CCによって真のPDF/Aであるかどうかを確認するのに疲れています。ただし、PDFファイルが実際のPDF/A-3Aではないことを示すソフトウェアは、「XMPプロパティは定義済みですが、定義に従って使用されていません(XMP 2005)」というエラーメッセージが表示されます。エラーのプロパティは "http://purl.org/dc/elements/1.1/dc:title"です。私はこの問題を解決する方法を知らないので、私はこれについて混乱しています。 –

+0

どのように誰もPDFを見ずにこの質問に答えることができますか?私は、 '/ Info'ディクショナリのメタデータとXMPのメタデータの違いがあるとしか推測できません。 –

+0

こんにちは、私は下のこのDropboxのリンクに私のテストpdfファイルをアップロードしました。これを確認してください。私はPDF/A-2Bの有効性チェックにどのように合格するか考えていません。 https://www.dropbox.com/s/wibx73w99utbmmp/Univ.Of.Arizona_Libraries_azu_acku_z3016_ray29_1349_merged.pdf?dl=0 –

関連する問題