Невозможно прочитать содержимое файла PDF с помощью Aspose PDF в Java - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь найти строку в файле PDF с помощью AsposePdf.

Вот что я делаю:

String path = "C:/Windows/Fonts";
List list = Document.getLocalFontPaths();
list.add(path);
Document.setLocalFontPaths(list);
Document pdfDocument = new Document("myFile.pdf");
PageCollection pages = pdfDocument.getPages();
TextAbsorber textAbsorber = new TextAbsorber
  (new TextExtractionOptions(TextExtractionOptions.TextFormattingMode.Raw));  

for(int i = 1; i <= pages.size(); i++){
    Page currentPage = pdfDocument.getPages().get_Item(i);
    currentPage.accept(textAbsorber);
    String abText = textAbsorber.getText();
    String[] abArray = abText.trim().split("\n");
    for (String txtArray : abArray) {
         if (txtArray.contains("SomeText")) {
                //do something
              }
        }
 }

NullPointerException at: currentPage.accept(textAbsorber);

Ошибка трассировки стека:

java.lang.NullPointerException
    at com.aspose.pdf.internal.p51.z11.m2(Unknown Source)
    at com.aspose.pdf.internal.p51.z11.m7(Unknown Source)
    at com.aspose.pdf.internal.p51.z13.m1(Unknown Source)
    at com.aspose.pdf.internal.p51.z13.m1(Unknown Source)
    at com.aspose.pdf.internal.p51.z13.m6(Unknown Source)
    at com.aspose.pdf.internal.p51.z13.<init>(Unknown Source)
    at com.aspose.pdf.internal.p51.z13.<init>(Unknown Source)
    at com.aspose.pdf.TextAbsorber.visit(Unknown Source)
    at com.aspose.pdf.Page.accept(Unknown Source)

В чем может быть причина?

1 Ответ

0 голосов
/ 05 мая 2018

Вам не нужно разбивать или обрезать строки из файла PDF, чтобы извлечь какой-либо текст. Aspose.PDF API поддерживает извлечение текста эффективно. Пожалуйста, попробуйте использовать приведенный ниже фрагмент кода для извлечения текста из документа PDF.

// Open document
Document pdfDocument = new Document("input.pdf");

// Create TextAbsorber object to find all instances of the input search phrase
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("SEARCH STRING");

// Accept the absorber for first page of document
pdfDocument.getPages().accept(textFragmentAbsorber);

// Get the extracted text fragments into collection
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments();

// Loop through the Text fragments
for (TextFragment textFragment : (Iterable<TextFragment>) textFragmentCollection) {
    // Iterate through text segments
    for (TextSegment textSegment : (Iterable<TextSegment>) textFragment.getSegments()) {
        System.out.println("Text :- " + textSegment.getText());
    }
}

Для получения дополнительной информации о извлечении текста, вы можете посетить Поиск и получение текста со страниц документа PDF . Если у вас возникнут какие-либо проблемы, пожалуйста, поделитесь с нами исходным файлом PDF, указав текст, который вы хотите извлечь.

PS: Я работаю с Aspose в качестве разработчика Evangelist.

...