我正在尝试打开三个pdf文件以合并它们。我们每月创建一系列文件,这些文件都由“自动收报机”识别。
我有三个源文件:
RootDoc = Root文件,每月生成,变量文件名:“[variable ticker] + [static RootDoc append] .pdf”
DefDoc =静态文件,变量文件名,“[变量股票代码] + [静态DefDoc追加] .pdf”
NotesDoc =一个文件,不会更改,必须包含在所有文档中。
我坚持在以下条件下如何合适地合并:
1)每个月文件夹中标有标题的文件数量会有所不同。
2)同一个股票代码的RootDoc和DefDoc必须配对,因为它们包含特定于股票的信息。代码将在两个文件上匹配,但字符长度会从一组文件到下一组文件不同。
3)我在Adobe中保存了一个页脚格式,必须应用于所有文档。 (这不是必要的,但如果有必要,我可以在VBA之外做到这一点)
这是我到目前为止所做的事情,为了清楚起见,注释了注释:
With Application
.DisplayAlerts = False
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
Dim Filename, Pathname, PRODname, Defname As String
Dim RootDoc, NotesDoc, DefDoc As AcroPDDoc
Dim stp1, stp2, stp3, mergefile As Variant
Pathname = "H:\apps\xp\Desktop\PROD CHECK\Expanded LT"
'PRODname = "*[static RootDoc append].pdf"
Filename = Dir(Pathname & "\" & PRODname)
'Defname = "*[static DefDoc append].pdf"
Set RootDoc = CreateObject("AcroExch.PDDoc")
Set NotesDoc = CreateObject("AcroExch.PDDoc")
Set DefDoc = CreateObject("AcroExch.PDDoc")
'stp1 = NotesDoc.Open("[unchanging file name and location]")
Do While Filename <> ""
'stp2 = RootDoc.Open(Pathname & "\" & Filename)
'stp3 = DefDoc.Open("[location]" & "\" & Defname)
'mergefile = RootDoc.InsertPages([I want to insert all of DefDoc into RootDoc after page 0])
'mergefile = RootDoc.InsertPages([I want to insert all of NotesDoc after the last page of RootDoc])
DefDoc.Close SaveChanges:=False
'RootDoc = [Apply Saved Footer]
RootDoc.Close SaveChanges:=True
Filename = Dir()
Loop
With Application
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
答案 0 :(得分:1)
这个问题是关于使用文件名查找要合并的pdf文件,还是通过VBA使用Acrobat API合并PDF文件?
如果你需要找到最好的工作流程,那么我想你应该找到文件夹中的所有文件,并找到使用正则表达式找到“ticker”文件名(请参阅关于regular expressions in VBA和{{3的这个很棒的答案使用VBA中的正则表达式匹配文件名。
如果您正在寻找使用Acrobat API将页面从一个pdf文档合并到另一个pdf文档的正确方法,那么您应该检查this tutorial(请参阅 Javascript / Javascript for Acrobat ... / Javascript API / Doc / InsertPages 部分)和online documentation for Acrobat API示例VB代码。