2017-10-20 5 views
0

私は、PDFファイルのページの番号を取得できる機能を持っています。どのように私はPDFのコンテキストを取得するためにVBを使用できますか?

Public Function GetNumPages(ByVal PdfFile As String) As Long 
    Dim objTempDoc As Object 
    Dim fso As FileSystemObject 
    Set fso = New FileSystemObject 

    If fso.FileExists(PdfFile) Then 
     Set objTemp = CreateObject("AcroExch.PDDoc") 
     objTemp.Open pstrPdfFilename 
     GetNumPages = objTemp.GetNumPages 
     objTemp.Close 
     Set objTemp = Nothing 
    End If 

    Set fso = Nothing 
End Function 

pdfファイルの最終ページで最終行のコンテキストを取得します。

このAPIは見つかりましたが、使用方法はわかりません。 私は必要なコンテキストを返しますか?

PDOCContext PDDocGetOCContext(PDDocのpdDoc)

私はAPIを使用するには、この方法を試してみましたが、それは失敗でした。

Set objTempDoc = CreateObject("AcroExch.PDDoc") 
objTempDoc.Open PdfFile 
myPDFPage = objTempDoc.GetOCContext 
+1

PDOCContextはAcrobat Interapplication Communication APIのオブジェクトではありません。 PDPageオブジェクトを取得しようとする場合は、PDDocオブジェクトでAquirePage(nPage)を使用してください。 – joelgeraci

答えて

0

この関数を呼び出して、最後のページのテキストを取得できます。

Public Function GetPDFText(ByVal pstrPdfFilename As String) As String 

     Dim PDDoc As Object 
     Dim CAcroRect As New Acrobat.AcroRect 
     Dim PDPage As Acrobat.AcroPDPage 
     Dim PDTxtSelect As Acrobat.AcroPDTextSelect 
     Dim CArcoPoint As Acrobat.AcroPoint 
     Dim iNumWords As Integer 
     Dim iMax As Long 
     Dim arPdfLines() As String 
     Dim i As Integer 
     Dim fso As FileSystemObject 

     Set fso = New FileSystemObject 
     If fso.FileExists(pstrPdfFilename) Then 
      Set PDDoc = CreateObject("AcroExch.PDDoc") 
      PDDoc.Open pstrPdfFilename 
      Set PDPage = PDDoc.AcquirePage(PDDoc.GetNumPages() - 1) 
      Set CArcoPoint = PDPage.GetSize() 
      CAcroRect.Top = CArcoPoint.y 
      CAcroRect.Left = 0 
      CAcroRect.Right = CArcoPoint.x 
      CAcroRect.bottom = 0 
      Set PDTxtSelect = PDDoc.CreateTextSelect(PDDoc.GetNumPages() - 1, CAcroRect) 
      If PDTxtSelect Is Nothing Then 
       iNumWords = 0 
       iMax = 0 
       GetPDFLastLineText = "" 
      Else 
       iNumWords = PDTxtSelect.GetNumText 
       iMax = iNumWords - 1 
       Dim ii As Long 
       For ii = 0 To iMax 
       GetPDFLastLineText = GetPDFLastLineText & PDTxtSelect.GetText(ii) 
      Next 
     End If 
     PDDoc.Close 
    End If 

    Set fso = Nothing 
    Set PDDoc = Nothing 
    Set CAcroRect = Nothing 
    Set PDPage = Nothing 
    Set PDTxtSelect = Nothing 
    Set CArcoPoint = Nothing 

End Function 
関連する問題