Search code examples
vbaexceladobeacrobat

Open adode pdf and edit a page by adding a text box


I'm quite new to vba coding with adobe and can't get any code to work. I first need to open a pdf located in my documents (with adobe acrobat) and then edit the 5th page by adding a textbox/or a number of text boxes. I was wondering if this was possible and if there was code to do this. I have Adobe Acrobat XI Standard, which allows me to edit pdfs manually and create text boxes where needed. Any help would be much appreciated.

Thanks


Solution

  • After trawling through adobes documentation on OLE automation and API references, I found that you can actually code very well in VBA with acrobat. Enjoy and adapt to your needs. Here is a link to adobe's API reference: http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/iac_api_reference.pdf

    Sub RMS_pdf()
    
     Application.DisplayAlerts = False
     Application.CutCopyMode = False
    
    
    Set wb1 = Workbooks.Open(Filename:="\\ldnfortunenet\fortunenetdocuments\William Hadman\Suitability\RMS\RMS Product Governance Reports\" & LongNewDate & "\RMS Product Governance Report.xlsm", UpdateLinks:=True)
    
    Set ws1 = wb1.Sheets("Performance & Volatility")
        Set ws2 = wb1.Sheets("Asset Allocation")
        Set ws3 = wb1.Sheets("Detailed Contribution")
    
    
    OpenPath = "\\ldnfortunenet\fortunenetdocuments\William Hadman\Aushir Shah\RMS Product Governance Reports\RMS Product Governance Report - 2016-10-31 -  CDF Direct Diversified Income.pdf"
    SavePath = "\\ldnfortunenet\fortunenetdocuments\William Hadman\Aushir Shah\RMS Product Governance Reports\RMS Product Governance Report - 2016-10-31 -  CDF Direct Diversified Income v2.pdf"
    'initialize the Acrobat interface
    Set AcroApp = CreateObject("AcroExch.App")
    Set gpdDoc = CreateObject("AcroExch.PDDoc")
    'open the file
    If gpdDoc.Open(OpenPath) Then
    Set jso = gpdDoc.GetJSObject
    End If
    'get at the jso
    If Not jso Is Nothing Then
    If gpdDoc.Open(dest) Then
    Set jso = gpdDoc.GetJSObject
    End If
    
    LastPage = gpdDoc.GetNumPages - 1
    
    Set Box1 = jso.AddField("Performance Comment - " & StrategyName(4), "text",            LastPage, Array(583.8, 706.32, 224.7, 583.2))
    Box1.TextFont = "Helvetica"
    Box1.TextSize = 8
    
    Else
    End If
    If gpdDoc.Save(PDSaveFull, SavePath) = False Then
    MsgBox "Unable to save image"
    Else
    End If