Можно ли найти текст по позиции, используя iText? - PullRequest
0 голосов
/ 14 января 2019

У меня есть файл PDF, который содержит некоторую строку (3) в определенной области страницы; Можно ли найти весь текст в этой конкретной области и заменить его фиксированной строкой?

1 Ответ

0 голосов
/ 15 января 2019

Чтобы найти текст в некоторой указанной области, можно создать его IEventListener и проанализировать страницу с ним.

Существует официальный пример iText7, который показывает, как обрабатывать изображения таким образом. Это может быть легко изменено для ваших целей, слушая EventType.RENDER_TEXT вместо EventType.RENDER_IMAGE. https://github.com/itext/i7js-book/blob/develop/src/test/java/com/itextpdf/samples/book/part4/chapter15/Listing_15_31_MyImageRenderListener.java https://github.com/itext/i7js-book/blob/develop/src/test/java/com/itextpdf/samples/book/part4/chapter15/Listing_15_30_ExtractImages.java

Как подсказывает @mkl в комментариях, замену можно выполнить, отредактировав область и нарисовав на ней текст. Обратите внимание, что недостаточно просто нарисовать белый div или summat на тексте, который вы хотите отредактировать, поскольку он все еще будет присутствовать в потоке контента страницы. Вместо этого можно использовать iText pdfSweep . Код редактирования будет выглядеть следующим образом:

    List <PdfCleanUpLocation> cleanUpLocations = new ArrayList<PdfCleanUpLocation>();
    cleanUpLocations.add(new PdfCleanUpLocation(pageNum, new Rectangle(215, 780, 10, 30), colorToDrawUponTheArea));
PdfCleanUpTool cleaner = new PdfCleanUpTool(pdfDocument, cleanUpLocations);
    cleaner.cleanUp();

Тогда можно использовать ElementPropertyContainer#setFixedPosition или Canvas, чтобы поместить строку в отредактированную область.

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