W systemie Windows jest wiele programów do scalania plików PDF, ale jak możemy zrobić to samo w Ubuntu?
W systemie Windows jest wiele programów do scalania plików PDF, ale jak możemy zrobić to samo w Ubuntu?
Odpowiedzi:
Jeśli potrzebujesz narzędzia z prostym GUI, wypróbuj pdfshuffler . Umożliwia łączenie plików PDF, a także przestawianie i usuwanie stron. W przypadku przetwarzania wsadowego i / lub bardziej skomplikowanych zadań pdftk jest oczywiście bardziej wydajny.
pdfshuffler
działa dobrze w dniu 14.04 amd64.
Aby scalić dwa pliki pdf file1.pdf
i file2.pdf
:
pdftk file1.pdf file2.pdf cat output mergedfile.pdf
Więcej informacji dostępnych tutaj Droga powrotna .
cat
i output
następujące po nim argumenty wejściowe są różne, a następnie ponownie argument wyjściowy.
Ghostscript to pakiet (domyślnie dostępny w Ubuntu), który umożliwia przeglądanie lub drukowanie plików PostScript i PDF do innych formatów lub konwersję tych plików do innych formatów.
Aby użyć Ghostscript do łączenia plików PDF, wpisz coś takiego:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf file1.pdf file2.pdf
Oto krótkie wyjaśnienie polecenia:
gs starts the Ghostscript program.
-dBATCH once Ghostscript processes the PDF files, it should exit.
If you don't include this option, Ghostscript will just keep running.
-dNOPAUSE forces Ghostscript to process each page without pausing for user interaction.
-q stops Ghostscript from displaying messages while it works
-sDEVICE=pdfwrite
tells Ghostscript to use its built-in PDF writer to process the files.
-sOutputFile=finished.pdf
tells Ghostscript to save the combined PDF file with the specified name.
-dAutoRotatePages=/None
Acrobat Distiller parameter AutoRotatePages controls the automatic orientation selection algorithm: For instance: -dAutoRotatePages=/None or /All or /PageByPage.
Twoje pliki wejściowe nawet nie muszą być plikami PDF. Możesz także użyć plików PostScript lub EPS lub dowolnej ich kombinacji.
Z Ghostscript możesz zrobić wiele. Możesz przeczytać jego dokumentację, aby uzyskać więcej informacji.
pdftk
zajęło 0m0.484s, gs
zajęło 1m32.898s (to prawie 200x wolniej) Plik z gs
był jednak o około 21% mniejszy.
file1.pdf file2.pdf
zfile*.pdf
gs
pracowałem z niektórymi „niezgodnymi” plikami PDF, pdftk
które po prostu działałyby wiecznie.
-dPDFSETTINGS=/prepress
opcji poprawy jakości. Wszystkie dzięki dzięki pierwotnemu współpracownikowi
file*.pdf
z file1.pdf file2.pdf
przed przekazaniem argumenty do komendy.
Korzystasz również z pdfunite do łączenia dokumentów pdf:
pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
out.pdf
zostanie zastąpiony bez ostrzeżenia, więc pdfunite *.pdf
nie będzie działać zgodnie z oczekiwaniami.
cp
również zastępuje ostatni argument bez ostrzeżenia. To jest tylko dla pędzących użytkowników (jak ja) - miałem szczęście, że miałem kopię zapasową tego pliku ...
Bardzo dobrym rozwiązaniem jest PDFChain. Jest to interfejs użytkownika PDFTK, w którym można łączyć, dzielić, a nawet dodawać tła do plików PDF.
apt
nie przyniosła jednak żadnych rezultatów: /
Alternatywnym podejściem jest użycie lateksu, jak wyjaśniono w tym poście ( bez dostępu do konta root przy założeniu, że masz zainstalowany pdflatex ): https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- lateks
Jest to przydatne w przypadku, gdy nie masz wspomnianych narzędzi ani uprawnień roota, ale masz pdflatex.
Kopiuję poniższy kod tex, aby scalić file1.pdf
i file2.pdf
. Utwórz plik o nazwie output.tex
i umieść:
\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{file1}
\includepdf[pages=-]{file2}
\end{document}
Aby skompilować, po prostu użyj: pdflatex output.tex
Scalony plik zostanie nazwany jako output.pdf
.
Korzystam z pdfseparate, aby wyodrębnić określone strony z dużego pliku pdf:
pdfseparate -f 156 -l 157 input.pdf output_%d.pdf
pdfseparate -f 1 -l 2 input.pdf output_%d.pdf
a potem dołączam do nich wszystkich za pomocą polecenia:
pdfunite $(ls -v output_*.pdf | tr '\n' ' ') out$(date +%Y-%m-%d_%H_%M_%S ).pdf
To łączy:
output_1.pdf output_2.pdf output_156.pdf output_157.pdf
w:
out2014-12-14_23_25_36.pdf
Być może istnieje łatwiejszy sposób radzenia sobie ... :-)
pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdf
brak kolejności ls -v
. Oczywistą i trywialną poprawką jest nazywanie plików tak, aby były naturalnie sortowane w kolejności, w której chcesz je uwzględnić. Jeśli absolutnie chcesz ls -v
, możesz przynajmniej zgubić fajkę tr
, co tutaj nic nie da.
Użyj pdfsam http://www.pdfsam.org/, który jest bardzo dobry do dzielenia i łączenia plików pdf
Za pomocą pdftk można ogólnie łączyć i modyfikować dokumenty PDF. Alternatywnie istnieje usługa online, aby to zrobić: http://www.pdfmerge.com/
Oto moje podejście:
Oto wynik:
#!/bin/sh
CLEANED_FILE_PATHS=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed 's,.pdf /home/,.pdf\\n/home/,g')
echo $CLEANED_FILE_PATHS | bash -c 'IFS=$'"'"'\n'"'"' read -d "" -ra x;pdfunite "${x[@]}" merged.pdf'
Juste wklej ten skrypt
/home/twoja_nazwa_użytkownika/.local/share/nautilus/scripts
i nazwij go „merge_pdfs.sh” (na przykład). Następnie ustaw go jako wykonywalny (kliknij prawym przyciskiem myszy plik merge_pdfs.sh -> karta Uprawnienia -> zaznacz „Zezwalaj na uruchamianie pliku jako programu”
Teraz, aby scalić pliki pdf, musisz je tylko wybrać -> kliknij prawym przyciskiem myszy -> skrypty -> merge_pdfs.sh i utworzy plik „scaled.pdf” w tym samym katalogu
Mam nadzieję, że to pomoże!