Für alle , die 1 oder 2 pg pdf nehmen und es in ein pdf mit 2 Kopien dieser Seite an Seite im Querformat ( ideal für den Druck Flyer ), tun:
Verwandeln Sie die PDF-Eingabe mit 1 oder 2 Seiten in eine Ausgabe, die eine Kopie dieser Seiten enthält (1-Seiten-PDF -> 2-Seiten-PDF, 2-Seiten-PDF -> 4-Seiten-PDF usw.):
pdfunite in.pdf in.pdf out.pdf
Kombinieren Sie diese duplizierte PDF-Kopie zu einer 2-Seiten-PDF-Ansicht pro Seite im Querformat, um beispielsweise Flyer zu drucken:
pdfnup out.pdf
Oder alles in einer einzigen Zeile:
pdfunite in.pdf in.pdf out.pdf && pdfnup out.pdf
Beachten Sie, dass dies out.pdf
die Eingabe für ist pdfnup
. Die daraus resultierende Ausgabedatei pdfnup
wird „aufgerufen wird out-nup.pdf “.
Beobachten Sie auch die Ausgabe des pdfnup
Befehls, und Sie werden die ausführliche Form des Befehls sehen, den er tatsächlich ausführt, was Ihnen einen Einblick in die Optionen gibt, die Sie ihm übergeben können. Anscheinend pdfnup
verwendet pdfjam
unter der Haube:
pdfjam: Effektiver Aufruf für diesen Lauf von pdfjam:
/usr/bin/pdfjam --suffix nup --nup '2x1' --landscape -- out.pdf -
Beispiel:
Original PDF (1 reguläre Seite im Hochformat ), " in.pdf ":
Endgültiges PDF (2 Seiten nebeneinander in der Querformatansicht ), " out-nup.pdf ":
- Kann jetzt in der Mitte halbiert werden, um als Flyer ausgegeben zu werden
Einfache Bash-Funktion: make_flyer
Kopieren Sie diese Bash-Funktion und fügen Sie sie am Ende Ihrer "~ / .bashrc" -Datei ein, um auf einen einfachen und benutzerfreundlichen Befehl zuzugreifen make flyer
:
# Description: outputs a landscape-oriented flyer pdf ("my/pdf/input--flyer.pdf") for each 1 or more pg input pdf ("my/pdf/input.pdf")
# - 1-pg input PDFs are converted to a 1-sided landscape, printable flyer that you cut down the center to make
# 2 flyers
# - 2-pg input PDFs are converted to a 2-sided landscape, printable flyer (flip on short edge when printing
# double-sided), and also cut down the middle to make 2 flyers
# - **3+ pg input PDFs**: using `pdfnup` directly in this case would make more sense, since this function will
# otherwise unneccessarily create 2 copies
# - 3 and 4-pg input PDFs are converted to a single piece of paper, double-sided, flipped on short edge, x 2 copies.
# No cutting is necessary
# - 5+ pg input PDFs simply require half as much paper to print is all since you get 2 pages per side of paper;
# they do NOT print like booklets, but rather just as a landscape-printed, flipped-on-short-edge bundle of pages
# (like a deck of slides). You get *2 copies* per print though, so just print half the pages.
make_flyer() {
num_args=$# # see: https://stackoverflow.com/questions/4423306/how-do-i-find-the-number-of-arguments-passed-to-a-bash-script/4423321#4423321
suffix="flyer"
loop_cnt=0
for inputpdf in "$@"
do
((loop_cnt++))
echo "==== CONVERTING PDF $loop_cnt OF $num_args ===="
echo " INPUT: \"$inputpdf\""
# Strip off the .pdf extension from the input path, while retaining the rest of the path
# - See: https://stackoverflow.com/questions/12152626/how-can-i-remove-the-extension-of-a-filename-in-a-shell-script/32584935#32584935
input_path_base="$(echo "$inputpdf" | rev | cut -f 2- -d '.' | rev)"
input_file_base="$(basename "$inputpdf" .pdf)"
temp_pdf="${input_path_base}-.pdf" # is "input_path_base-.pdf"
echo " OUTPUT: \"$(pwd)/${input_file_base}--${suffix}.pdf\""
# Convert a single 1-pg pdf into a temporary 2-pg pdf
pdfunite "$inputpdf" "$inputpdf" "$temp_pdf"
# Lay out the temporary 2-pg pdf into a side-by-side 1-sided flyer to print; creates "input_path_base--flyer.pdf"
# Note that `pdfnup` places the output from this operation in the location from where you call this script
# (ie: in your `pwd` [Present Working Directory])!--NOT the location where temp_pdf is located!
pdfnup "$temp_pdf" --suffix $suffix
# Delete the temporary 2-pg pdf, called "input_path_base-.pdf", thereby leaving only the original
# "input_path_base.pdf" and the new "input_path_base--flyer.pdf"
rm "$temp_pdf"
done
}
alias make_flyer_help='echo -e "Ex usage: make_flyer \"path/to/inputpdf.pdf\" - Creates a landscape-side-by-side flyer version called \"inputpdf--flyer.pdf\"\n *in your pwd* from a 1 or 2 pg input pdf called \"path/to/inputpdf.pdf\". Accepts multiple arguments. Ex:\n make_flyer \"path/to/inputpdf1.pdf\" \"path/to/inputpdf2.pdf\""'
Anwendungsbeispiel:
make_flyer "path/to/inputpdf1.pdf" "path/to/inputpdf2.pdf"
Siehe Hilfeinformationen:
make_flyer_help
Ausgabe:
$ make_flyer_help
Ex usage: make_flyer "path/to/inputpdf.pdf" - Creates a landscape-side-by-side flyer version called "inputpdf--flyer.pdf"
*in your pwd* from a 1 or 2 pg input pdf called "path/to/inputpdf.pdf". Accepts multiple arguments. Ex:
make_flyer "path/to/inputpdf1.pdf" "path/to/inputpdf2.pdf"
Verweise:
- https://superuser.com/a/948095/425838
- https://stackoverflow.com/a/11280219/4561887
Verbunden:
- https://askubuntu.com/questions/214538/printing-in-booklet-format/1095789#1095789
Bash Referenzen:
- Bash So übergeben Sie Argumente an eine Bash-Funktion: https://bash.cyberciti.biz/guide/Pass_arguments_into_a_function
- Bash-Verkettungszeichenfolgen: https://linuxize.com/post/bash-concatenate-strings/
- Bash führe einen als String gespeicherten Befehl aus! https://stackoverflow.com/questions/2005192/how-to-execute-a-bash-command-stored-as-a-string-with-quotes-and-asterisk
- Bash iterieren Sie über alle Eingaben zu einem Cmd: https://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script/255913#255913
- Bash-Übergabe von Parametern an Funktion: https://stackoverflow.com/questions/6212219/passing-parameters-to-a-bash-function/6212408#6212408
- So konvertieren Sie ein 1- Seiten-PDF in einen Flyer: So konvertieren Sie ein 1-Seiten-PDF in ein 2-Seiten-PDF pro Blatt?