Чтобы определить, где заканчиваются текст и (растровые) изображения на данной странице, взгляните на iText в действии, пример 2-го издания ShowTextMargins, который анализирует PDF-файл и добавляет прямоугольник, показывающий поля текста и (растровых) изображений.
PdfReader reader = new PdfReader(src);
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT));
TextMarginFinder finder;
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
finder = parser.processContent(i, new TextMarginFinder());
PdfContentByte cb = stamper.getOverContent(i);
cb.rectangle(finder.getLlx(), finder.getLly(),
finder.getWidth(), finder.getHeight());
cb.stroke();
}
stamper.close();
reader.close();
Имейте в виду, однако, что этот механизм игнорирует векторную графику (часто также используется для подчеркивания текста, цветного фона и декоративных разделительных линий), поскольку базовый пакет синтаксического анализатора iText по-прежнему (начиная с версии iText 5.4.5) игнорирует их.
Обновление: начиная с версии 5.5.6 iText расширяет пакет синтаксического анализатора, чтобы включить синтаксический анализ векторной графики. Это позволяет расширить исходный класс TextMarginFinder
, реализующий новые методы ExtRenderListener
, представленные в этом ответе, что приводит к аналогичному классу < a href="https://github.com/mkl-public/testarea-itext5/blob/master/src/main/java/mkl/testarea/itext5/content/MarginFinder.java" rel="nofollow noreferrer">MarginFinder
который учитывает не только текст, но и другой контент, например растровые изображения и векторную графику.
person
mkl
schedule
16.01.2014