使用PowerShell和PowerShell合并PDF

lndjwyie  于 2023-11-18  发布在  Shell
关注(0)|答案(1)|浏览(147)

您好,我只是试图使用Microsoft Access和PowerShell中的插件(命令合并PDF)合并不同的PDF文件基于复选框。我想如果他们被选中,采取他们并通过单击一个按钮将它们合并到一个PDF文档。我只是有usign另一个按钮来打开所有选中的文档,但我也想合并这些选定的文档。
我尝试了一些东西,但它不起作用。
我测试的VBS看起来像:

Function MergeSelectedPDF()

    ' Declare variables
    Dim PowerShellCmd As String
    Dim selectedPDFs As String
    Dim shellCommand As String
    Dim shellResult As Variant

    ' Initialize selectedPDFs variable
    selectedPDFs = ""

    ' Loop through your records and build a string with selected PDF file paths
    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("Tabulka1")
    
    Do While Not rs.EOF
        If rs![Marker] = True Then
            ' Separate file paths with spaces
            selectedPDFs = selectedPDFs & " " & rs![Odkaz]
        End If
        rs.MoveNext
    Loop
    
    rs.Close
    Set rs = Nothing

    ' Construct the PowerShell command
    PowerShellCmd = selectedPDFs & " | Merge-Pdf -OutputPath ""C:\Merged.pdf"""

    ' Execute the PowerShell command
    shellCommand = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -Command " & PowerShellCmd

    shellResult = Shell(shellCommand, vbNormalFocus)

    ' Check if an error occurred during execution
    If shellResult = 0 Then
        MsgBox "Error executing PowerShell command.", vbExclamation
    End If

End Function

字符串

ozxc1zmp

ozxc1zmp1#

您正在尝试写入根文件夹(加上许多其他shell问题,例如命令行有长度限制,因此命令行的结尾将被切断,因此您在硬盘驱动器的根处发射了一个加载的大炮。

' Construct the PowerShell command
    PowerShellCmd = selectedPDFs & " | Merge-Pdf -OutputPath ""C:\Merged.pdf"""

字符串
这是不允许的(除非你不明智地保护它)。


的数据
使用测试文件夹(如C:\test),然后写入该子文件夹,确保在必要时将用户写入设置为权限。
也要确保您的权限设置正确的PowerShell模块安装时.有更简单的方法来合并文件没有PowerShell的限制,通过使用一个命令行在 shell 中与一个单一的exe,如PDFcpu https://pdfcpu.io/core/merge和许多其他像GhostScript,cpdf,qpdf,poppler pdfunite等.(最快的可能是https://mupdf.readthedocs.io/en/latest/mutool-merge.html
保持文件的数量非常少,因为路径的字符串长度限制很快就会生效。因此,只需编写一个文件名的文本列表,并将列表或短名称传递给合并命令。
这个例子在powershell中使用了数值方法,而不是外部化的,但是虽然它适用于数百个,但它不是最有效的https://stackoverflow.com/a/75524955/10802527。有效的是使用shell和批处理文件。
因此,这里使用GhostScript与命令或文件https://stackoverflow.com/a/75486958/10802527的文本文件

相关问题