Координаты области PDFBox PDFTextStripperByArea
В каких размерах и направлении находится прямоугольник в
PDFTextStripperByArea
Функция addRegion(String regionName, Rectangle2D rect)
.
Другими словами, , где начинается прямоугольник R и насколько велик он (размеры исходных значений, размеры прямоугольника) и в каком направлении он идет (направление синих стрелок на иллюстрации), если new Rectangle(10,10,100,100)
задан как второй параметр?
![PdfBox rectangle]()
Ответы
Ответ 1
new Rectangle(10,10,100,100)
означает, что прямоугольник будет иметь свой верхний левый угол в позиции (10, 10), поэтому 10 единиц находятся далеко от левой и верхней части документа PDF. Здесь "единица" равна 1 pt = 1/72 дюйма.
Первые 100 представляют ширину прямоугольника, а вторую - ее высоту.
Подводя итог, правый рисунок является первым.
Я написал этот код, чтобы извлечь некоторые области страницы, указанные в качестве аргументов функции:
Rectangle2D region = new Rectangle2D.Double(x, y, width, height);
String regionName = "region";
PDFTextStripperByArea stripper;
stripper = new PDFTextStripperByArea();
stripper.addRegion(regionName, region);
stripper.extractRegions(page);
Итак, x и y - абсолютные координаты верхнего левого угла прямоугольника, а затем укажите его ширину и высоту. страница представляет собой переменную PDPage, указанную в качестве аргумента для этой функции.
Ответ 2
Смотрел на то, чтобы сделать что-то подобное, поэтому я думал, что пройду то, что нашел.
Вот код для создания моего оригинального pdf с помощью itext.
import com.lowagie.text.Document
import com.lowagie.text.Paragraph
import com.lowagie.text.pdf.PdfWriter
class SimplePdfCreator {
void createFrom(String path) {
Document d = new Document()
try {
PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream(path))
d.open()
d.add(new Paragraph("This is a test."))
d.close()
} catch (Exception e) {
e.printStackTrace()
}
}
}
Если вы откроете pdf файл, вы увидите текст в верхнем левом углу. Здесь тест показывает, что вы ищете.
@Test
void createFrom_using_pdf_box_to_extract_text_targeted_extraction() {
new SimplePdfCreator().createFrom("myFileLocation")
def doc = PDDocument.load("myFileLocation")
Rectangle2D.Double d = new Rectangle2D.Double(0, 0, 120, 100)
def stripper = new PDFTextStripperByArea()
def pages = doc.getDocumentCatalog().allPages
stripper.addRegion("myRegion", d)
stripper.extractRegions(pages[0])
assert stripper.getTextForRegion("myRegion").contains("This is a test.")
}
Позиция (0, 0) - верхний левый угол документа. Ширина и высота идут вниз и направо. Мне удалось урезать диапазон немного (35, 52, 120, 3) и все еще пройти тест.
Весь код написан в groovy.