如何将.pdf文件与VBA连接起来?

如何将.pdf文件与VBA连接起来?,vba,pdf,Vba,Pdf,我正在尝试将.pdf文件与VBA连接起来。没什么特别的,一页接一页地贴着。我做了大量的网络搜索,但找不到任何接近有效的解决方案。以前有人这样做过吗?谢谢 如果GPL库对您来说是一个有效的选项,您可以按照建议使用ghostscript。如果要创建vbscript文件,可以通过从Windows API调用函数或使用类WScript.Shell来完成此操作 如果一个商业库是一个选项,我建议或者,两者都有一个Append函数来完成这项工作。例如,Amyuni PDF转换器的代码如下所示: Set PDF

我正在尝试将.pdf文件与VBA连接起来。没什么特别的,一页接一页地贴着。我做了大量的网络搜索,但找不到任何接近有效的解决方案。以前有人这样做过吗?谢谢

如果GPL库对您来说是一个有效的选项,您可以按照建议使用ghostscript。如果要创建vbscript文件,可以通过从Windows API调用函数或使用类
WScript.Shell
来完成此操作

如果一个商业库是一个选项,我建议或者,两者都有一个
Append
函数来完成这项工作。例如,Amyuni PDF转换器的代码如下所示:

Set PDFDoc = CreateObject("CDintfEx.Document.4.5")
PDFdoc.SetLicenseKey "your company", "your license code"
PDFDoc.Open "test_append1.pdf"
PDFDoc.Append "test_append2.pdf"
PDFDoc.Save "result_append.pdf"
Set PDFdoc = Nothing

通常的免责声明适用于最新建议

我运行sedja控制台并添加我的pdf作为参数。很容易实现。在启动Sedja控制台之前,请不要忘记检查可能先前创建的目标pdf的只读标志是否未设置为“是”,因为此外部过程没有反馈。

我在执行相同任务时发现了此主题,客户使用的是amyuni。感谢yms提供的良好方法。我发现“Set PDFdoc=Nothing”时访问崩溃。这个对我来说很好:

Public Sub fctPDO_Concatenate_pdf_with_Amyuni_Document_6_0()

' PDO: Usage of .append: Crashes on destruction of pdfdoc-Object. pdf-file is created properly. But usind .append , MS Access crashes - without it's okay.

'       Solution: Build second pdfdoc2 - object , and concatenate using  .AppendEx(Object)   .


On Error Resume Next
Dim PDFdoc As Object
Dim PDFdoc2 As Object

Const strLibraryVersion As String = "CDintfEx.Document.6.0"
' PDO: Examples
'Set PDFdoc = CreateObject("CDintfEx.Document.6.0")     ' PDO: See Object catalog
'Set PDFdoc = CreateObject("CDintfEx.Document")         ' PDO: Not sufficient w/o version
'Set PDFdoc = CreateObject("CDintfEx.Document.4.5")     ' PDO: Older version

Set PDFdoc = CreateObject(strLibraryVersion)
Set PDFdoc2 = CreateObject(strLibraryVersion)

'PDO: Open first file
PDFdoc.Open "D:\PDO_test\Beratungsprotokoll_2018.pdf"


'PDFdoc.Append "D:\PDO_test\GV_0093Z0_Einzelantrag.pdf"   ' PDO: Crashes on   set PDFdoc = nothing

' PDO: Open and append second file (as Object, not as file)
PDFdoc2.Open "D:\PDO_test\GV_0093Z0_Einzelantrag.pdf"
PDFdoc.AppendEx PDFdoc2

' PDO: Open and append third file (as Object, not as file). Re-use of second Object possible
PDFdoc2.Open "D:\PDO_test\result_append_sammel.pdf"
PDFdoc.AppendEx PDFdoc2


'PDO: Save with a new name
PDFdoc.Save "D:\PDO_test\result_append_sammelsammel.pdf"

'PDFdoc.Close => Not existing.

Set PDFdoc = Nothing  '=> Access crashed, with PDFdoc.Append 
Set PDFdoc2 = Nothing

Debug.Print "Done: " & Now() & " Error: " & Err.Number

End Sub
如果您喜欢Ghostscript,可以使用一行:

C:\PROGRA~2\gs\gs9.19\bin\gswin32c.exe -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOwnerPassword=pass2 -sUserPassword=pass1 -dCompatibilityLevel=2.0 -sOutputFile="D:\PDO_test\Beratungsprotokoll_2018_Sammel.pdf" "D:\PDO_test\Beratungsprotokoll_2018.pdf" "D:\PDO_test\GV_0093Z0_Einzelantrag.pdf" 
这将后两个文件连接到(新的)第一个文件中,并应用密码(应用前请参阅安全详细信息)。可以使用文件脚本对象“fso”获得短路径


顺便问一下,你是想把一页接着一页还是一页放在另一页的上面?@yms:,@jean-he还说“把两页放在另一页的上面”,这就是我要求澄清的原因。此外,作为一名pdf相关产品的开发人员,我看到所有这些术语都用于任何场景,没有区别“一个接一个”。我对问题进行了编辑,使之更清楚。
fso.GetFolder(strFolder).ShortPath