Відповіді:
Погляньте на "Об'єднання файлів PDF в командному рядку в OSX" в " Приєднання файлів PDF в OS X" з командного рядка .
Виявляється, що від 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
в ln -s ... ...
, і без нього створюється жорстке посилання. Напевно, це не мало б значення, однак я хотів би згадати про це.
Просто встановіть Ghostscript за допомогою Brew з командою:
brew install gs
Потім запустіть команду зі всіма переліченими файлами:
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf source1.pdf source2.pdf source3.pdf
gs
тому для подальшого використання це рішення було б так само зручно.
Сценарій Python від Apple в дії Automator дуже повільний, оскільки він використовує API CGPDFDocument CoreGraphics, а не новіші рамки PDFKit. Він також імпортує всю бібліотеку CoreGraphics, а не лише необхідні API.
Альтернативний, швидший сценарій python, можна знайти тут:
Цей скрипт також додає до PDF зміст, в якому перерахований кожен компонентний файл (і об'єднує наявні ToC), чого Apple не має.
Її можна використовувати в командному рядку (з аргументами PDF у вигляді аргументів) або в сценарії оболонки автоматизатора, щоб зробити швидку дію / послугу для Finder.
time
команду спільно з вашим joinpdfs.py
сценарієм , вбудованим join.py
сценарієм та двома файлами ~ 200 МБ кожен, ваш joinpdfs.py
сценарій був на 9 секунд швидшим, ніж вбудований join.py
сценарій , звичайно ж, додатковою перевагою від недоторканості TOC . Приємно! +1
FWIW, я написав невелику маленьку програму, яка дозволяє вам це робити, не покладаючись на зовнішні залежності, такі як системний пітон і подібні. На github тут: pdfmerge і досить простий у використанні, ви можете або передати йому список файлів PDF для об'єднання pdfmerge in1.pdf in2.pdf ... out.pdf
, передати йому список файлів для об'єднання у текстовий файл, pdfmerge infileslist.txt out.pdf
або просто виконати поточний каталог у порядку ABC pdfmerge out.pdf
. Я написав це як навчальний проект, настільки вільний і відкритий, і ви можете отримати останню бінарну інформацію на вкладці випусків на github.
join.py
скрипт із дії Combine PDF Pages в Automator, більше нічого не потрібно завантажувати чи встановлювати, але щоб використовувати ваше, я повинен був би завантажте та встановіть його. Також посилання не бачили двійковий файл.
спираючись на на @Bartosz Petryński «s хороший відповідь , ми можемо зробити власну мінімальну cpdf
програму на вершині GhostScript:
brew install gs
cpdf () {
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$1" "${@:2}"
}
то використовуйте його так:
cpdf merged.pdf file1.pdf file2.pdf file3.pdf
Я знайшов безкоштовний інструмент узгодженого командного рядка PDF найкращим варіантом. Це дуже швидко, без втрат і не псує орієнтацію чи гіперпосилання, як це робили деякі інші рішення. Формат:
cpdf file1.pdf file2.pdf -o output.pdf