За да определите къде завършва текстът и (растерните) изображения на дадена страница, погледнете примера за 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