Answers:
在通过命令行在OS X中结合PDF文件中的“在OSX的命令行中结合PDF文件”中查找。
事实证明,从Tiger起,OSX附带了完全满足您需要的Python脚本。该脚本已经可以执行,并且Python已预安装在OS X上,因此运行该脚本所需要做的就是打开终端并输入
"/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" -o PATH/TO/YOUR/MERGED/FILE.pdf /PATH/TO/ORIGINAL/1.pdf /PATH/TO/ANOTHER/2.pdf /PATH/TO/A/WHOLE/DIR/*.pdf
此外,在链接页面上,它建议为join.py
文件建立符号链接以使键入变得更容易,但是他们省略了-s
in ln -s ... ...
,如果没有,则会创建硬链接。可能无关紧要,尽管我提到过。
只需使用Brew通过以下命令安装Ghostscript:
brew install gs
然后使用列出的所有文件运行命令:
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf source1.pdf source2.pdf source3.pdf
gs
因此该解决方案将同样方便,以供将来参考。
Apple的Automator动作中的python脚本非常慢,因为它使用CoreGraphics的CGPDFDocument API,而不是较新的PDFKit框架。它还导入整个CoreGraphics库,而不只是所需的API。
另一种更快的python脚本可以在这里找到:
该脚本还向PDF添加了目录,列出了每个组件文件(并合并了现有的ToC),而Apple没有。
可以在命令行(以PDF文件名作为参数)上使用它,也可以在Automator Shell脚本操作中使用它来为Finder进行快速操作/服务。
time
命令和joinpdfs.py
脚本,内置join.py
脚本以及两个文件(每个文件约200 MB),您的joinpdfs.py
脚本比内置join.py
脚本快9秒,当然,完整的TOC的好处是。真好!+1
FWIW,我编写了一个快速的小程序,无需依赖系统python之类的外部依赖项就可以执行此操作。在github上的此处:pdfmerge且使用起来非常简单,既可以向其传递要合并的PDF文件列表,也可以向其pdfmerge in1.pdf in2.pdf ... out.pdf
传递要合并到文本文件中的文件列表,例如pdfmerge infileslist.txt out.pdf
,也可以按ABC顺序执行当前目录pdfmerge out.pdf
。我把它写为一个学习项目,它免费开放,您可以从github的releases选项卡中获取最新的二进制文件。
join.py
Automator中“合并PDF页面”操作中的脚本,无需下载或安装其他任何东西,但要使用您的我就必须下载并安装。在链接上也没有看到二进制文件。
以@BartoszPetryński的好答案为基础,我们可以cpdf
在GhostScript之上制作自己的最小实用程序:
brew install gs
cpdf () {
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$1" "${@:2}"
}
然后像这样使用它:
cpdf merged.pdf file1.pdf file2.pdf file3.pdf
我发现免费的Coherent PDF命令行工具是最好的选择。它非常快速,无损,并且不会像其他解决方案那样弄乱方向或超链接。格式为:
cpdf file1.pdf file2.pdf -o output.pdf