Odpowiedzi:
Spójrz na „Łączenie plików PDF w wierszu poleceń w OSX” w Łączenie plików PDF w OS X z wiersza poleceń .
Okazuje się, że od wersji Tiger OSX jest dostarczany ze skryptem Python, który robi dokładnie to, czego potrzebujesz. Skrypt jest już wykonywalny, a Python jest wstępnie zainstalowany w systemie OS X, więc wszystko, co musisz zrobić, aby go uruchomić, to otwarcie terminala i pisanie
"/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
Również na powiązanej stronie to sugeruje dokonanie symboliczny link do join.pypliku, aby ułatwić wpisywanie one jednak pominięty -sw ln -s ... ..., i bez niego, twrdym jest tworzony. Prawdopodobnie nie miałoby to znaczenia, choć wspomnę o tym.
Wystarczy zainstalować Ghostscript za pomocą Brew z poleceniem:
brew install gs
Następnie uruchom polecenie z wszystkimi wymienionymi plikami:
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf source1.pdf source2.pdf source3.pdf
gswięc na przyszłość, to rozwiązanie byłoby równie wygodne.
Skrypt Pythona firmy Apple w akcji Automator działa bardzo wolno, ponieważ korzysta z interfejsów API CGPDFDocument firmy CoreGraphics, a nie z nowszej struktury PDFKit. Importuje również całą bibliotekę CoreGraphics, a nie tylko wymagane interfejsy API.
Alternatywny, szybszy skrypt Pythona można znaleźć tutaj:
Skrypt ten dodaje również spis treści do pliku PDF, wyszczególniając każdy plik komponentu (i scalając istniejące ToC), czego nie robi Apple.
Można go użyć w wierszu polecenia (z nazwami plików PDF jako argumentami) lub w akcji skryptu powłoki Automatora, aby utworzyć szybką akcję / usługę dla Findera.
time polecenia w połączeniu ze joinpdfs.py skryptem , wbudowanym join.py skryptem i dwoma plikami ~ 200 MB każdy, joinpdfs.py skrypt był o 9 sekund szybszy niż wbudowany join.py skrypt , co oczywiście zapewnia dodatkową korzyść z posiadania nietkniętego spisu treści . Miły! +1
FWIW, napisałem szybki program, który pozwala ci to robić bez konieczności polegania na zewnętrznych zależnościach, takich jak python systemowy i tym podobne. Na github tutaj: pdfmerge i dość prosty w użyciu, może albo przekazać mu listę plików PDF do scalenia pdfmerge in1.pdf in2.pdf ... out.pdf, przekazać listę plików do scalenia w pliku tekstowym pdfmerge infileslist.txt out.pdflub po prostu zrobić bieżący katalog w kolejności ABC pdfmerge out.pdf. Napisałem go jako projekt edukacyjny, więc darmowy i otwarty. Możesz pobrać najnowszy plik binarny z karty wydań na github.
join.pyskryptu z akcji Połącz strony PDF w Automatorze, nic więcej nie trzeba pobierać ani instalować, ale aby użyć Twojej, musiałbym pobierz i zainstaluj. Nie widziałem również pliku binarnego na link.
w oparciu o @Bartosz Petryński „s miłą odpowiedź , możemy stworzyć własny minimalny cpdfnarzędzie na górze GhostScriptu:
brew install gs
cpdf () {
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$1" "${@:2}"
}
następnie użyj go w następujący sposób:
cpdf merged.pdf file1.pdf file2.pdf file3.pdf
Odkryłem, że darmowe narzędzie wiersza poleceń PDF spójne jest najlepszą opcją. Jest bardzo szybki, bezstratny i nie psuje orientacji ani hiperłączy, jak niektóre inne rozwiązania. Format to:
cpdf file1.pdf file2.pdf -o output.pdf