Я читаю PDF-файл (Skia/PDF m118 Google Docs Renderer) с помощью PDFBOX, но он ничего не читает. Документ состоит только из одной страницы и не содержит изображений. Я пытаюсь прочитать контент с помощью PDFTextStripper.
Есть идеи, как читать Документы Google Skia/PDF m118 с помощью PDFBOX?
Я могу открыть его с помощью Acrobat Reader.
Фрагмент кода
Document dataDocument = new Document();
try {
PDFTextStripper pdfTextStripper = new PDFTextStripper();
pdfTextStripper.setParagraphStart("/t");
pdfTextStripper.setSortByPosition(true);
for (int i = 0; i < document.getNumberOfPages(); i++) {
pdfTextStripper.setStartPage(i);
pdfTextStripper.setEndPage(i);
for (String line : pdfTextStripper.getText(document).split(pdfTextStripper.getParagraphStart())) {
if (!line.isBlank() && line.length() > 3) {
dataDocument.getText().add(line);
}
}
dataDocument.getText().add(":page = " + i);
}
...
Версия PDFBox
implementation 'org.apache.pdfbox:pdfbox:2.0.30'
PDF-файл
Это ссылка на документ, https://jmp.sh/s/vTpGFHq6nLjzWXzBfxIA Злая
Я только что добавил ссылку на документ!
Хорошо. Я посмотрю на это позже на этой неделе. Возможно, у @tilman есть время до этого.
Я обновился до 2.0.31, но без каких-либо изменений. Я могу сохранить как текст из Adobe Reader и получить текстовый файл с содержимым в формате PDF. Я заметил, что каждое слово в этом файле — это новая строка.
Вот новая ссылка: drive.google.com/file/d/1dihCDkH4c0vv_IP0xPYFkbk_WJQK4wvl/…
При использовании ExtractText я получаю «Ovo je neki primer tekst t». Я не проверял ваш код, мне интересно, имеет ли функция Split() какой-либо плохой эффект в зависимости от содержимого параметра.
Я попробовал pdfTextStripper.getText(document) без разделения, но не получил текста.




И setStartPage(), и setEndPage() требуют, чтобы параметр начинался с 1 (см. Javadoc). Таким образом, измените свой код на:
pdfTextStripper.setStartPage(i + 1);
pdfTextStripper.setEndPage(i + 1);
Ах, хорошо, в конце концов, это не связано со Skia.... (Возможно, код должен выдать предупреждение, если он вызывается с неположительным startPage или endPage.)
Да, хороший вопрос. Если страницы начинаются с индекса 1, то это должна быть даже ошибка.
«К сожалению, я не могу поделиться документом» — это печально, поскольку, по-видимому, это проблема, специфичная для типа вашего документа. Но в своем вопросе вы спрашиваете, как читать Skia/PDF. Таким образом, вы, должно быть, протестировали множество различных PDF-файлов, созданных Skia, чтобы определить, действительно ли ваша проблема возникает для таких документов в целом. Так что наверняка есть один из них, которым вы можете поделиться...