2016-11-04 124 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 
相关问题