Использование свойства pageNum в Acrobat Type Library 10.0 JSObject возвращает ошибку RunTime 438.

Мне нужно получить номер страницы, чтобы извлечь текст с этой конкретной страницы в документе .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

person cathyB    schedule 18.02.2019    source источник


Ответы (1)


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

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

изменить: 3.3.19

Мммм, кажется, вам нужно работать с 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
person ReFran    schedule 28.02.2019
comment
Я не могу получить доступ к номеру страницы с синтаксисом pageNo = jso.pageNum в VBA, я получаю сообщение об ошибке 438. Пожалуйста, уточните. - person cathyB; 01.03.2019