Adobe Acrobat:如何批量合并多个pdf文件?

Adobe Acrobat:如何批量合并多个pdf文件?

我有 3 个文件夹:

Folder 1 
Folder 2
Folder 3

每个文件夹中都有 5 个 pdf 文件:

    Folder 1 
       file1.pdf
       file2.pdf
    Folder 2
       file1.pdf
       file2.pdf
    Folder 3
       file1.pdf
       file2.pdf

我希望每个文件夹中都有这两个文件的组合文件:

    Folder 1 
       binder.pdf
    Folder 2
       binder.pdf
    Folder 3
       binder.pdf

有什么想法吗?不要告诉我要手动操作。这个例子只是为了向你解释我的问题。想想我有数百个文件夹。:) 也许我可以使用其他工具代替 Adob​​e Acrobat?!

答案1

你可以用一个简短的批处理文件和 pdftk.exe 来执行此操作(不是pdftk 生成器即 GUI 版本)。
无需安装任何东西。

准备

  • 下载并提取pdftk提取单链
  • 打开 ..\pdftk\bin* 并复制执行文件库文件到您选择的文件夹
  • 创建一个新的文本文件并粘贴以下代码

    @echo 关闭
    设置本地启用延迟扩展
    FOR %%A IN (%*) DO (设置命令=!命令! %%A)
    pdftk.exe %command% cat 输出“%~dp1binder.pdf”
    
  • 另存为[电子邮件保护]与 pdftk.exe 和 libiconv2.dll 位于同一文件夹中 在此处输入图片描述
  • 创建此 .cmd 的快捷方式并将其放在 sendto 文件夹中 ( Win+ R» shell:sendto)

用法

  • 转到包含一些 PDF 文件的文件夹,然后选择所需数量的 PDF
  • 右键单击它们并选择刚刚创建的快捷方式
  • 一个新的粘合剂将创建同一文件夹中的 PDF,其中所有选定的 PDF 将合并为一个

    在此处输入图片描述

更新:使用当前文件夹名称作为生成的 pdf 文件名的版本

@echo off
setlocal enabledelayedexpansion
:: Concat all paths fromselected files and save it as command
FOR %%A IN (%*) DO (set command=!command! %%A)

:: Take path from first selected file and save it as path
set path=%~dp1
echo %path%

:: Check if a trailing slash is present. If yes, remove it
IF %path:~-1%==\ SET path=%path:~0,-1%

:: Get last folder from path
FOR %%F in ("%path%") do (set lastFolder=%%~nxF)

:: Call pdftk, pass on command. use lastFolder as filename
pdftk.exe %command% cat output "%path%\%lastFolder%.pdf"

答案2

如果你使用的是 Linux(或 Mac,或任何安装了 Linux 的环境),则可以使用名为ghostscript将它们结合起来。

gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=combinedpdf.pdf -dBATCH file1.pdf file2.pdf file3.pdf

您还可以使用以下命令合并当前文件夹中的所有文件

gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=combinedpdf.pdf -dBATCH *.pdf 

您可以下载 ghostscript这里。还有一个 Windows 版本,但我没有测试过。

答案3

我已经成功使用了上述解决方案。但是,在我的系统(Windows 7 64 位)上,代码以(显然)随机顺序添加 PDF,而不是按文件名的字母顺序添加。

为了让它按字母顺序添加文件,您需要将 sort-object 参数添加到 DIR(又名 Get-ChildItem)命令(sort-object 此处不接受任何参数,因为 filename/alphabetically 是默认值):

dir $inputfolder -r -include *.pdf -exclude $outputfile | sort-object | group DirectoryName % {& $PDFtk $.group CAT OUTPUT "$($.Name)\$outputfile" verbose}

那些文件名形式为 1.pdf 2.pdf ... 10.pdf 等而不是 01.pdf 02.pdf .. 10.pdf 的人可能也想尝试这样的变体:

pdftk *?.pdf *??.pdf *???.pdf *????.pdf cat output out.pdf

答案4

也许使用批处理方案会更好。创建并收集所有 pdf 文件作为 xxxx.abcdef.pdf。

第一部分是所谓的批次标签;第二部分是文件标识符(文件名)。每个后面的标签长度​​和值都相似;文件名在点之后。

例如,您的第一批包括 1111.3425.pdf、1111.76501.pdf 等。您的第二批是 22222.1432.pdf、22222.4398 等。其他批次也是如此。

然后,您可以使用自动合并软件,该软件可以处理数千个文件,为每个批次创建单独的合并。我发现这个不需要命令行或批处理脚本的免费软件。您可以将其下载为可移植 JAR 文件。它具有不同的自动化场景;一个在此答案中描述为标记,另一个描述为所需的文件夹。

根据您的硬件,您可以将数千个文件批量合并为预定的批次。

相关内容