Я читаю текст из файла PDF с помощью PDFBOX. Я умею правильно читать, используя "Rectangle2D". Но проблема, когда результаты отображаются один за другим. Вместо этого я хочу показать в режиме транспонирования.
Текущее представление
PO-00145678
Производитель: AQ-00067
Дата. ..................................: 10.05.2021 Ожидаемая дата доставки ...: 10.06 / 2021
Ожидаемые результаты Одной строкой PO-00145678 Поставщик: AQ-00067 Дата ................. ..................: 10.05.2021 Ожидаемая дата доставки ...: 10.06.2021
Код с использованием
public class PDFBoxReadFromFile {
public static void main(String[] args) throws Exception {
try (PDDocument document = PDDocument.load(new File("C:\\Users\\ed\\Documents\\test2.pdf"))) {
if (!document.isEncrypted()) {
PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition(true);
Rectangle2D rect4 = new Rectangle2D.Double(210, 160, 230, 25);
Rectangle rect1 = new Rectangle(55, 290, 225, 17);
Rectangle2D rect2 = new Rectangle2D.Double(281, 255, 255, 20);
Rectangle2D rect3 = new Rectangle2D.Double(2, 365, 660, 1900);
stripper.addRegion("class2", rect1);
stripper.addRegion("class3", rect2);
stripper.addRegion("class4", rect3);
stripper.addRegion("class5", rect4);
PDPage firstPage = document.getPages().get(0);
stripper.extractRegions(firstPage);
System.out.println(stripper.getTextForRegion("class5"));
System.out.println(stripper.getTextForRegion("class2"));
System.out.println(stripper.getTextForRegion("class3"));
System.out.println(stripper.getTextForRegion("class4"));
File file = new File("C:/Users/ed/eclipse-workspace/pdfboxreadfromfile/file.txt");
FileWriter fw = new FileWriter(file);
PrintWriter pw = new PrintWriter(fw);
pw.println(stripper.getTextForRegion("class5"));
pw.println(stripper.getTextForRegion("class2"));
pw.println(stripper.getTextForRegion("class3"));
pw.println(stripper.getTextForRegion("class4"));
pw.close();
}
} catch (IOException e) {
System.err.println("Exception while trying to read pdf document - " + e);
}
}
Второй тип, но не повезло
System.out.print (stripper.getTextForRegion ("class5") + (stripper. getTextForRegion ("класс2"))); результаты
Должно быть как PO-003334823 Производитель: WL-00051