Анализ комментариев / аннотаций из PDF с использованием .NET-версии PDFBox: PDFBox.NET-1.8.9 - PullRequest
0 голосов
/ 03 сентября 2018

Я использую следующий код для разбора текста из PDF-файла с использованием .NET-версии PDFBox.

Imports org.apache.pdfbox.pdmodel
Imports org.apache.pdfbox.util

Private Shared Function parseUsingPDFBox(ByVal input As String) As String
      Dim doc As PDDocument = Nothing

      Try
        doc = PDDocument.load(input)
        Dim stripper As New PDFTextStripper()
        Return stripper.getText(doc)
      Finally
        If doc IsNot Nothing Then
          doc.close()
        End If
      End Try
    End Function

http://www.squarepdf.net/how-to-convert-pdf-to-text-in-net-vb

Код извлекает обычный видимый текст, но не извлекает комментарии.

Я пытался использовать FDFAnnotation.ToString (), но он предупреждает, что ToString () является неоднозначным ...

doc = PDDocument.load(strFilename)
Dim stripper As New FDFAnnotationText
Return stripper.tostring(doc)

Я пробовал iTextSharp, и с этим я могу извлечь их, используя класс PdfName.ANNOTS, но хочу придерживаться PDFBox.

Мой любимый язык - VB, но я тоже рад принимать ответы на C #.

1 Ответ

0 голосов
/ 04 сентября 2018

Я предполагаю, что под "комментариями" вы подразумеваете текстовые аннотации с Имя значение Комментарий . Следующий код выводит Содержание всех текстовых аннотаций. Если вы имеете в виду другой вид аннотации, вам, возможно, придется адаптировать его:

Dim doc As PDDocument = PDDocument.loadNonSeq(New java.io.File("..."), Nothing)
Dim pages As java.util.List = doc.getDocumentCatalog().getAllPages()
For i = 0 To pages.size() - 1
    Dim page As PDPage = pages.get(i)
    Dim annotations As java.util.List = page.getAnnotations()
    For j = 0 To annotations.size() - 1
        Dim annotation As PDAnnotation = annotations.get(j)
        If annotation.getSubtype() = "Text" Then
            Console.WriteLine("{0}-{1} : {2}", i, j, annotation.getContents())
        End If
    Next
Next

doc.close()
...