Ярлыки Libre Office не отображаются как «AcroFields» в iTextSharp? - PullRequest
0 голосов
/ 13 марта 2019

, поэтому я пытался создать отчет. Я уже пробовал довольно много вещей, но всегда есть проблемы. Я сейчас пробую iTextSharp 4.1.6.

Моя текущая стратегия состоит в том, чтобы использовать LibreOffice для создания документа с редактируемыми полями PDF или, я думаю, они называются " AcroFields ". Я не уверен, так как не могу найти определение. Но в любом случае, я предполагаю, что все это «AcroFields»:

enter image description here

Но если я помещу все это в форму и экспортирую в формате pdf, только некоторые из них будут отображаться как AcroFields:

var reader = new PdfReader(File.ReadAllBytes("abc.pdf"));
foreach(var field in reader.AcroFields.Fields)
{
    Console.WriteLine(((DictionaryEntry)field).Key);
}

> Text Box 1
  Check Box 1
  Numeric Field 1
  Formatted Field 1
  Date Field 1
  List Box 1
  Combo Box 1
  Push Button 1
  Option Button 1

Обратите внимание, что Label Field 1 нет. Если бы он был , то замена текста могла бы быть легкой. За исключением того, что его нет, похоже, что даже iText не может сделать простую замену текста в pdf. Это правда? Как бы вы заменили текст в документе PDF с помощью iTextSharp?

1 Ответ

1 голос
/ 13 марта 2019

Обратите внимание, что поле «Метка 1» отсутствует.

Поскольку AcroForm не имеет типа поля формы «метка», форма метки обычно отрисовывается как обычное содержимое страницы в файлах PDF.

Если он присутствует, замена текста может быть легкой. За исключением того, что его нет, похоже, что даже iText не может сделать простую замену текста в pdf. Это правда?

Действительно, в общем случае в PDF нет простой замены текста.

Как бы вы заменили текст в документе PDF с помощью iTextSharp?

Я бы определил координаты ограничительной рамки текста для замены, используя функцию извлечения текста из iText с некоторым расширением, которое возвращает текст плюс координаты. Затем я удалил бы этот текст путем редактирования, используя классы PdfCleanUp... iText. Наконец, я добавляю замещающий текст в качестве нового текста в ограничивающей рамке, определенной при запуске.

К сожалению для вас, в вашей версии 4.1.6 нет хорошего извлечения и редактирования текста; для этого подхода вы должны обновить как минимум до 5.5.x.

В качестве альтернативы, хотя вы пытались создать отчет , я предполагаю, что дизайн шаблона находится в ваших руках. В этом случае вы можете поместить свои метки в текстовые поля только для чтения, которые вы можете изменить (они доступны только для чтения пользователям GUI).

...