Не удается прочитать сгенерированный текст PDF-файла в Java - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь прочитать текст на Java, но это не очень хорошо.Вот мой код

PDFTextStripper pdfStripper = null;
PDDocument pdDoc = null;
COSDocument cosDoc = null;
File pdfFile = new File("1.pdf");
PDFParser parser = new PDFParser(new RandomAccessFile(pdfFile,"rw"));
parser.parse();
cosDoc = parser.getDocument();
pdfStripper = new PDFTextStripper();
pdDoc = new PDDocument(cosDoc);
pdfStripper.setStartPage(1);
pdfStripper.setEndPage(5);
String parsedText = pdfStripper.getText(pdDoc);
System.out.println(parsedText);

Но результат, подобный этому

Пожалуйста, подождите ...

Если это сообщение в конечном итоге не будет заменено надлежащим содержимым документа,ваше средство просмотра PDF может не отображать этот тип документа.

Чтобы обновить Adobe Reader для Windows®, Mac или Linux® до последней версии, посетите страницу http://www.adobe.com/go/reader_download.

.Для получения дополнительной помощи с Adobe Reader посетите http://www.adobe.com/go/acrreader.

Windows является зарегистрированным товарным знаком или товарным знаком корпорации Microsoft в США и / или других странах.Mac является товарным знаком Apple Inc., зарегистрированным в США и других странах.Linux является зарегистрированным товарным знаком Линуса Торвальдса в США и других странах.

Я обнаружил, что эта ошибка произошла из-за документа xfa pdf.Но я не знаю о формате xfa моего pdf-документа.Поэтому, пожалуйста, дайте мне знать, как я могу узнать о формате xfa.

Кто-нибудь, помогите мне, пожалуйста.Спасибо!

1 Ответ

1 голос
/ 18 июня 2019

Подводя итог тому, что было сказано или намекнуто в комментариях ...

Текст, цитируемый ФП,

Пожалуйста, подождите ...

Если это сообщение в конечном итоге не будет заменено соответствующим содержимым документа, программа просмотра PDF может не отображать этот тип документа.

...

- это содержимое одной страницы PDF, которую программное обеспечение Adobe обычно помещает в PDF-файлы с чистой формой XFA.

Формы XFA представляют собой альтернативный способ описания форм в PDF-файлах. В отличие от способа AcroForm формы XFA используют PDF-файлы только в качестве конверта, несущего поток XML, описывающий свойства, поведение и значения формы способом, не связанным с какой-либо другой структурой PDF.

Таким образом, многие процессоры PDF предлагают элементарную поддержку только форм XFA (или их вообще нет), за исключением (очевидно) продуктов Adobe.

В результате XFA был отмечен как устаревший в текущей спецификации PDF ISO 32000-2.


В случае PDFBox поддержка XFA ограничивается функцией извлечения данных XFA XML. Извлечение текста с использованием PdfTextStripper и связанных классов работает только с обычным содержимым PDF и, следовательно, извлекает только текст, сообщенный OP.

Чтобы получить доступ к содержимому форм XFA, вы можете извлечь ресурс XFA, используя PDAcroForm.getXFA().

...