Как заменить текст в PDF несколькими строками? - PullRequest
1 голос
/ 20 января 2020

Я использую библиотеку openPdf (форк iTextPdf) для замены заполнителей типа # {Address_name_1} на реальные значения. Мой PDF-файл не прост, поэтому я использую регулярное выражение, чтобы найти этот заполнитель: [{].*?[A].*?[d].*?[d].*?[r].*?[e].*?[s].*?[s].*?[L].*?[i].*?[n].*?[e].*?[1].*?[}]

и сделать что-то вроде

content = MY_REGEXP.replace(content, "Saint-P, Nevskiy pr."); obj.setData(content.toByteArray(CHARSET)).

Проблема возникает, когда моя линия замены слишком длинная и, к сожалению, она обрезана с правого конца. Можно ли как-то заставить его перенести на следующую строку? Наивный \n не работает.

Ответы [ 2 ]

1 голос
/ 20 января 2020

PDF хранить строки по-другому. Следующих строк нет, есть строки.

Таким образом, вам нужно будет добавить несколько заполнителей для полей в шаблоне для замен, которые могут стать достаточно длинными, например:

#{Address_name_1_line1}
#{Address_name_1_line2}
#{Address_name_1_line3}

И поместить это в разных строках на вашем шаблоне. Неиспользуемые пустые заполнители (поскольку замена недостаточно длинна) должны быть заменены пустыми строками.

Для более длинных замен вам потребуется использовать несколько заполнителей. Количество используемых заполнителей и разделение замены должны определяться кодом.

Если ваш PDF слишком сложен для размещения различных заполнителей, тогда вам потребуется заполнить все, все текстовое содержимое должно быть вставлено в заполнители, по крайней мере, если вы хотите использовать этот подход.

0 голосов
/ 20 января 2020

PDF-файлы НЕ являются текстовыми файлами. Каждая строка - это объект со смещением x / y. Чтобы разместить что-то на следующей строке, потребуется новый объект с новыми координатами x / y. Вам понадобится расширенный набор инструментов для редактирования PDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...