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.py
pliku, aby ułatwić wpisywanie one jednak pominięty -s
w 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
gs
wię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.pdf
lub 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.py
skryptu 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 cpdf
narzę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