Как извлечь PDF-текст с пользовательским <tab>? - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь извлечь текст из PDF с пользовательским форматированием.Я использую PDFBox API.Мне нужно, чтобы столбцы с пустым полем были заполнены идентификатором (например, труба "|")

Я пытался подписаться на некоторые методы класса PDFTextStripper, но безрезультатно.Мне не удалось определить, в какой момент удаляется пустое пространство, которое идентифицирует пустое поле в столбце.

Я использовал этот пример: https://github.com/JonathanLink/PDFLayoutTextStripper. Но то же самое форматирует только пробелы, мне нужно, чтобы поля, представляющие ячейку vzia, идентифицировались с символом "|".

 private static void convertParaTexto(PDDocument document) throws IOException {

    PDFTextStripper pdfStripper = new PDFTextStripper();

    pdfStripper.setSortByPosition(true);
    pdfStripper.setWordSeparator("|");

    String text = pdfStripper.getText(document);
    document.close();
}

См. Оригинальный текст:

enter image description here

Результат простого извлечения (код выше):

enter image description here

Как и должно быть:

enter image description here

1 Ответ

0 голосов
/ 28 декабря 2018

Как и в описанных документах, PDFTextStripper не сохраняет макет.

Этот класс будет принимать документ в формате PDF и вырезать весь текст, а игнорирует форматирование инапример .[...]

Источник: Реактор PDFBox 2.0.7 API |Класс PDFTextStripper

Вместо этого вы можете использовать класс PDFLayoutTextStripper из уже упомянутого вами репозитория github, который специально написан для этой цели.Просто скачайте файл PDFLayoutTextStripper.java из репозитория и импортируйте его.Затем измените

PDFTextStripper pdfStripper = new PDFTextStripper();

на

PDFLayoutTextStripper pdfStripper = new PDFLayoutTextStripper();

, чтобы использовать его.

...