Как извлечь номер счета и дату счета из PDF, используя Excel VBA? - PullRequest
0 голосов
/ 21 февраля 2020

Как извлечь номер счета и дату счета из файла PDF с помощью Excel VBA? У меня есть весь мой готовый код, который ищет указанный файл PDF (файл PDF счета) в каталоге, где хранится большое количество счетов. Я только хочу извлечь номер счета и дату счета из этого файла, так что это будет только операция только для чтения. Счет-фактура генерируется системой, и поэтому нет никакого рукописного текста или значений. Я искал десятки решений здесь, но ни одно из них не отвечает моему требованию.

Я понимаю, что мне не нужен Acrobat Writer, установленный на моей машине, и установки Acrobat Reader должно быть достаточно. Пожалуйста, исправьте меня, если я ошибаюсь.

Я попробовал приведенный ниже код, опубликованный другим членом сообщества, чтобы сначала открыть файл PDF и извлечь его содержимое в текстовую строку, чтобы я мог использовать функцию instr для извлечения номера счета из этой строки, добавив несколько дополнительных строк кода, но, к сожалению, код застревает в строке If objAVDoc.Open(strFilename, "") Then и выдает сообщение, которое говорит

«Activex Compnent не может создать объект».

    Sub CallMyFunction()
    Dim myPDF As String
    myPDF = "C:\Users\syed\Desktop\invoice.pdf"
    getTextFromPDF (myPDF)


    End Sub


    Function getTextFromPDF(ByVal strFilename As String) As String
       Dim objAVDoc As New AcroAVDoc
       Dim objPDDoc As New AcroPDDoc
       Dim objPage As AcroPDPage
       Dim objSelection As AcroPDTextSelect
       Dim objHighlight As AcroHiliteList
       Dim pageNum As Long
       Dim strText As String
       Dim tCount As Long

       strText = ""
       If objAVDoc.Open(strFilename, "") Then
          Set objPDDoc = objAVDoc.GetPDDoc
          For pageNum = 0 To objPDDoc.GetNumPages() - 1
             Set objPage = objPDDoc.AcquirePage(pageNum)
             Set objHighlight = New AcroHiliteList
             objHighlight.Add 0, 10000 ' Adjust this up if it's not getting all the text on the page
             Set objSelection = objPage.CreatePageHilite(objHighlight)

             If Not objSelection Is Nothing Then
                For tCount = 0 To objSelection.GetNumText - 1
                   strText = strText & objSelection.GetText(tCount)
                Next tCount
             End If
          Next pageNum
          objAVDoc.Close 1
       End If

       getTextFromPDF = strText

    End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...