У меня возникли трудности с чтением определенного пользовательского свойства из раздела XMP файла PDF с использованием itextsharp v. 5.5.9.Чтение значения настраиваемого свойства из XMP с помощью itextsharp 5.5.9
Когда я пытаюсь использовать класс XmpReader, он становится помеченным как устаревший, и он не содержит никакого общедоступного метода, который кажется полезным для чтения.
Я могу преобразовать раздел метаданных в XML, а затем разобрать его каким-то образом (обходной путь состоит в использовании библиотеки XmpCore, которая имеет удобные методы для чтения свойств по имени), но я уверен, что что-то не хватает. ..
Я думаю, что должно быть возможно просто получить доступ к некоторым свойствам только с одной библиотекой.
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