Краткое объяснение того, чего я пытаюсь достичь: Я хочу создать программу, которая должна отслеживать выделенные части в PDF. На следующем этапе я хочу использовать эти (в конечном итоге измененные) значения для автоматизации некоторых простых процессов.
Я не программист.
Что я пробовал до сих пор:
Первая попытка: Я использовал каркас syncfusion pdf и написал небольшую подпрограмму, чтобы обнаружить ее:
Public Sub ReadPdf2()
Dim Pdf As New PdfLoadedDocument("C:\temp\std\sample.pdf")
Dim page As PdfLoadedPage = TryCast(Pdf.Pages(1), PdfLoadedPage)
Dim extractedHighlights As PdfLoadedAnnotationCollection = TryCast(Pdf.Pages(1).Annotations, PdfLoadedAnnotationCollection)
Dim extractedText As New List(Of TextData)()
page.ExtractText(extractedText)
For Each textData As TextData In extractedText
Dim Txt As String = textData.Text
Dim pFont As Font = New Font(textData.FontName, textData.FontSize, textData.FontStyle)
Next
End Sub
End Module
extractHighlights = дает мне все основные моменты на странице 1 с их положением в виде x, y, ширины, высоты
extractText = дает мне все текстовые шаблоны на странице 1 с их положением в виде x, y, ширины, высоты
Ok Насколько хорошо, теоретически я мог бы сравнить текстовые границы и выделенные рамки, сохранить этот текст и сравнить его со следующей версией PDF
- Проблема 1: извлеченный текст представляет собой набор текстовых фрагментов, таких как слова, разделенные на части :
extracttextItems
https://www.syncfusion.com/sales/products/fileformats
У маленького парня рядом с ценой точно мое лицо expr ession ...
Вторая попытка: Я использовал среду iText 7, в которой есть как минимум AGPL Lizenz, так что я могу использовать ее хотя бы для некоммерческого использования.
Public Sub readPDF3()
Dim pdfreader As PdfReader = New PdfReader("C:\temp\std\sample.pdf")
Dim PdfDoc As PdfDocument = New PdfDocument(pdfreader)
Dim PdfText As PdfStream = New PdfStream
PdfText = PdfDoc.GetPage(1).GetContentStream(0)
Dim PdfAnnots As New List(Of PdfAnnotation)()
PdfAnnots = PdfDoc.GetPage(1).GetAnnotations
Dim pdfAnnot As PdfAnnotation
For i = 0 To PdfAnnots.Count
pdfAnnot = PdfAnnots(i)
Dim strContent As PdfString = pdfAnnot.GetContents()
Dim strC As String
strC = strContent.GetValue()
Debug.Print(strC)
pdfAnnot.GetRectangle()
Next
End Sub
Таким образом, я могу получить аннотации поиска и их привязку, даже если я не знаю, как обрабатывать возвращенный pdfarray из pdfAnnot.GetRectangle ()
Public Sub readPDF4()
Dim Reader As PdfReader = New PdfReader("C:\temp\std\sample.pdf")
Dim PdfDoc As PdfDocument = New PdfDocument(Reader)
Dim rect As PdfArray = New PdfArray()
Dim text As String = ""
Dim ptext As PdfString
For i = 1 To PdfDoc.GetNumberOfPages()
text = text & PdfTextExtractor.GetTextFromPage(PdfDoc.GetPage(i), New LocationTextExtractionStrategy())
'ptext = PdfDoc.'PdfTextExtractor.GetTextFromPage(PdfDoc.GetPage(i), New LocationTextExtractionStrategy())
Next
Form1.RichTextBox1.Text = text
Debug.Print(text)
End Sub
Теперь их приятно функция «PdfTextExtractor.GetTextFromPage», которая возвращает мне довольно «хорошо отформатированную» строку, но я не могу найти, как получить текстовое связывание.
Любые идеи приветствуются! Любые другие безлицензионные методы также, если я могу только экспортировать выделенный текст и сравнить его со следующей версией этого PDF-файла и получить их в качестве некоторой переменной в моем. Net -application
samplePDF Вы должны добавить хотя бы 1 комментарий, чтобы это (что-то вроде) заработало.