如何调用PDPageRelease API来发布pdf?

时间:2017-10-24 08:42:22

标签: word-vba acrobat

这是我的代码。

Public Function GetPDFLastTwentyText(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
    GetPDFLastTwentyText = ""
    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)
        ...
        PDDoc.Close
    End If

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

End Function

我不知道使用这个API。

  

PDPageRelease()

是否有关于此API的官方文档?

以下是我在adobe的API文档中找到的说明。

  

PDPage PDDocAcquirePage(PDDoc doc,ASInt32 pageNum)

     

从中获取PDPage   一个文件。它会增加页面的引用计数。在你之后   使用页面完成,使用PDPageRelease()释放它。如果   PDPageRelease()未被调用,它可以阻止包含的文档   该页面被关闭。为避免此类问题,请使用   CSmartPDPage类,因为它确保页面随着它发布   超出范围。

它提到它应该在您调用「AcquirePage」后调用此API。

1 个答案:

答案 0 :(得分:0)

使用VBA或其他脚本语言,您可以使用OLE自动化。您将找到的描述" Acrobat Interapplication Communication Reference"。 没有PDPageRelease()元素。 PDPageRelease()属于插件API。插件只能用C#编写。

如果您只想关闭文档而不关闭Acrobat,则可以使用以下代码而不是" PDDoc.Close"。 BR。莱因哈德

Set AForm = CreateObject("AFormAut.App")   '//connect to Form API
exe = "app.execMenuItem('Close');"         '//write js-code to variable
AForm.Fields.ExecuteThisJavaScript exe     '//execute js-code