itextsharp v.5.5.9を使用して、PDFファイルのXMPセクションから特定のカスタムプロパティを読み込むのが難しいです。itextsharp 5.5.9でXMPからカスタムプロパティ値を読み込み
XmpReaderクラスを使用しようとすると、古いものとしてマークされ、読み込みに便利なパブリックメソッドは含まれません。
メタデータセクションをXMLに変換して、それを何らかの方法で解析することができます(名前でプロパティを読み取る便利な方法を持つXmpCoreライブラリを使用することで解決できます)が、何か不足していると確信しています。 ..
私は、ただ1つのライブラリでいくつかのプロパティにアクセスすることができるはずだと思います。
PdfReader reader = new PdfReader(inFile);
PdfStamper stamper = new PdfStamper(reader, new FileStream(outFile, FileMode.Create));
MemoryStream ms = null;
if (reader.Metadata != null)
ms = new MemoryStream(reader.Metadata);
else
{
stamper.CreateXmpMetadata();
ms = new MemoryStream();
}
XmpWriter xw = new XmpWriter(ms);
xw.XmpMeta.GetPropertyString(XmpConst.NS_DC, "MyProperty"); // -> not found, but it's ok for the first time...
xw.SetProperty(XmpConst.NS_DC, "MyProperty", "MyValue"); // -> OK
xw.XmpMeta.GetPropertyString(XmpConst.NS_DC, "MyProperty"); // -> OK
xw.Close();
stamper.XmpMetadata = ms.ToArray();
stamper.Close();
reader.Close();
私は二度同じファイル上でプログラムを実行するとプロパティがまだ見つからない(ので、プロパティはファイルに保存されます)。..
にはどうすればMYPROPERTYの存在と値を読み取ることができますか?
カスタマイズされたプロパティが 'reader.Info'セクションに配置されていないが、 XMPメタデータセクションでは 'reader.Metadata'は' byte [] 'です。すでに述べたように、この配列をXML文字列に変換して解析するか、そのプロパティを読み取るために別のXMPライブラリを使用することができます。 – BeerBaron