Использование свойства pageNum в библиотеке типов Acrobat 10.0 JSObject возвращает ошибку RunTime 438 - PullRequest
0 голосов
/ 18 февраля 2019

Мне нужно получить номер страницы, чтобы извлечь текст с этой конкретной страницы в документе .PDF.Я использую функцию Excel VBA, которая использует JSObject из библиотеки типов Acrobat 10.0

Вот фрагмент кода, и код всплывает, когда я пытаюсь сослаться на свойство pageNum из объекта Doc.Я пытаюсь избежать AV-слоя и использовать только PD-слой, поэтому мой макрос работает только в фоновом режиме и не вызывает приложение Acrobat.

Function getTextFromPDF_JS(ByVal strFilename As String) As String

   Dim pdDoc As New AcroPDDoc
   Dim pdfPage As Acrobat.AcroPDPage
   Dim pdfBookmark As Acrobat.AcroPDBookmark

   Dim jso As Object
   Dim BookMarkRoot As Object
   Dim vBookmark As Variant
   Dim objSelection As AcroPDTextSelect
   Dim objHighlight As AcroHiliteList
   Dim currPage As Integer
   Dim strText As String
   Dim BM_flag As Boolean
   Dim count As Integer
   Dim word As Variant


   strText = ""
   If (pdDoc.Open(strFilename)) Then


      Set jso = pdDoc.GetJSObject
      Set BookMarkRoot = jso.BookMarkRoot

      vBookmark = jso.BookMarkRoot.Children


    'Add a function call to see if a particular bookmark exists within the .PDF
    Set pdfBookmark = CreateObject("AcroExch.PDBookmark")

    BM_flag = pdfBookmark.GetByTitle(pdDoc, "Title Page")

If (BM_flag) Then

   For i = 0 To UBound(vBookmark)

        If vBookmark(i).Name = "Title Page" Then

            vBookmark(i).Execute
            jso.pageNum


         Set pdfPage = pdDoc.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 = pdfPage.CreatePageHilite(objHighlight)

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

         Exit For
         End If
pdDoc.Close




End If


End If

   getTextFromPDF_JS = strText

End Function

1 Ответ

0 голосов
/ 28 февраля 2019

jso.pageNum = 0;установить номер страницы

pageNo = jso.pageNum;получить номер страницы

edit: 3.3.19

Mmmh, похоже, вам нужно работать с AVDoc, чтобы получить текущую фактическую страницу через jso.pageNum.Также, если вы работаете с AVdoc, окно Acobat остается скрытым в фоновом режиме.Пример:

strFilename = "d:\Test2.pdf"
set avDoc = CreateObject("AcroExch.AVDoc")
If (avDoc.Open(strFilename,"")) Then
    Set pdDoc = avDoc.getPDDoc()
    Set jso = pdDoc.GetJSObject
    pageNo = jso.pageNum
    msgbox(pageNo)
end if
...