Чтобы найти текст в некоторой указанной области, можно создать его 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
, чтобы поместить строку в отредактированную область.