iTextSharp Как включить GenericTag с использованием синтаксического анализа XML - PullRequest
0 голосов
/ 21 апреля 2011

Я использую библиотеку iTextSharp, специально для просмотра .xml документов и преобразования их в .pdf файлы следующим образом:

var docWriter = PdfWriter.GetInstance (документ, новый FileStream ("DOC.pdf", FileMode.Create));

ITextHandler xmlHandler = новый ITextHandler (документ);

xmlHandler.Parse ( "MLDOC.xml");

Мне нужно знать, есть ли какой-либо способ включить какой-либо атрибут в теги в моем XML-файле, чтобы указать, что они являются GenericTag, или каким-либо другим образом, как я могу определить абзац, к которому я, например, добавляю PdfAnnotation. Я пытался подписаться на событие OnGenericTag, но с использованием анализатора XML: xmlHandler.Parse ("MLDOC.xml"); этот метод никогда не выполняется

Спасибо!

1 Ответ

0 голосов
/ 22 апреля 2011

Вы используете старую версию iText.Я настоятельно рекомендую вам получить более свежую версию ... Выпуск после 5.0, если вы в порядке с AGPL, что-то более раннее (4.2 IIRC), если вы предпочитаете использовать LGPL / MPL.

ТамЯ больше не класс iTextHandler.

Вам нужно добавить общие теги к элементам iText, поскольку они созданы, прежде чем iText вызовет ваш обработчик OnGenericTag.

Единственный способ, которым я могу думатьсделать это было бы изменить источник.Для HTMLWorker вам придется изменить FactoryProperties, чтобы он искал некоторые магические атрибуты, которые вы вводите для значения универсального тега.

В источнике iTextSharp 5.0.6 это выглядит так, как если бы вы хотелиизменить ElementFactory.CreateChunk () и вставить что-то вроде:

if (chain.HasProperty(MY_MAGIC_PROPERTY)) {
  ck.setGenericTag( chain[MY_MAGIC_PROPERTY] );
}

Проблема: ChainedProperties распространяются на их дочерние узлы.Если вы пометили таблицу общим тегом, EVER CHUNK IN THAT TABLE будет иметь этот тег.Наверное, не то, что вы хотите.}

...