2016-11-04 109 views
-1

我對vba使用adobe編碼很陌生,無法獲取任何代碼來工作。我首先需要打開位於我的文檔中的PDF(使用Adobe Acrobat),然後通過添加文本框/或多個文本框來編輯第5頁。我想知道這是否可行,是否有代碼可以做到這一點。我有Adobe Acrobat XI Standard,它允許我手動編輯pdf並在需要的地方創建文本框。 任何幫助將不勝感激。打開adode pdf並通過添加文本框編輯頁面

感謝

+0

Adob​​e pdf編輯通常通過JavaScript完成。我建議轉到Adobe的視線並閱讀相關文檔。我沒有廣泛地做過任何事情,但我確實記得了解到,當我對自己感到好奇時。 –

+0

https://acrobatusers.com/tutorials/javascript_console –

+1

我通過Adobe的API找到了答案。你實際上可以廣泛地使用他們的OLE自動化文檔和API參考進行代碼編碼 – chandu

回答

1

通過對OLE自動化和API參考文檔磚坯拖網後,我發現,你實際上可以在代碼VBA非常好,雜技演員。享受並適應您的需求。這裏是鏈接到Adobe的API參考: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 
+0

非常酷 - 我沒有得到這麼多(主要是由於缺乏嘗試) –

+0

嗯,我在3天前給你答案,但你是正確的也是一個要走的路, – ReFran

+0

道歉ReFran,我沒有看到你的代碼。雖然值得注意的是你的使用AVDoc,而我的使用PDDoc。不同之處在於:Acrobat查看器(AV)層處理觀看者的用戶界面,而便攜式文檔(PD)層提供對PDF文檔組件的訪問。後者在這種情況下可能對我的需求更有用。 – chandu

1

有一個多種方式與VBA/VBS(請參閱Acrobat SDK/IAC部分)雜技演員進行通信。但對我來說,最好的方式是使用Acrobat Form API,它可以使用js代碼更直接地處理更多的事情。

以下您可以找到一個vbs/vba示例如何在第一頁上添加文本(基於零:第一頁= 0)。

請在「Acrobat JavaScript API參考」中查找更多方法和屬性,特別是定義rect(放置/放置框的位置)。 祝你好運,萊因哈德

Path = "D:\Test.pdf" 

Set App = CreateObject("Acroexch.app") 
app.show 
Set AVDoc = CreateObject("AcroExch.AVDoc") 
Set AForm = CreateObject("AFormAut.App") 'from AFormAPI 

If AVDoc.Open(Path,"") Then 
    '// write some js code on a vbs variable 
    js = "f = this.addField(""newField"", ""text"", 0, [250,650,20,600]);" &vblf _ 
    & "f.value = ""any Text""; " &vblf _ 
    & "f.flatten" 
    '//execute the js code 
    AForm.Fields.ExecuteThisJavaScript js 
end if 

Set AForm = Nothing 
Set AVDoc = Nothing 
Set APP = Nothing