สำหรับผู้ที่ต้องการใช้ PDF 1 หรือ 2 pg และแปลงเป็น pdf พร้อมสำเนา 2 ชุดในมุมมองแนวนอน ( เหมาะสำหรับการพิมพ์ใบปลิว )
เปลี่ยนอินพุต 1 หรือ 2 pg pdf เป็นเอาต์พุตซึ่งมีสำเนาซ้ำของหน้าเหล่านั้น (1-pg pdf -> 2-pg pdf, 2-pg pdf -> pdf 4-pg เป็นต้น):
pdfunite in.pdf in.pdf out.pdf
รวมรูปแบบไฟล์ PDF ที่ทำซ้ำที่คัดลอกมาไว้ในรูปแบบไฟล์ PDF 2 หน้าต่อรายการในมุมมองแนวนอนสำหรับพิมพ์ใบปลิว:
pdfnup out.pdf
หรือทั้งหมดในบรรทัดเดียว:
pdfunite in.pdf in.pdf out.pdf && pdfnup out.pdf
ทราบว่าout.pdf
เป็นการป้อนข้อมูลpdfnup
เพื่อ ไฟล์เอาต์พุตผลลัพธ์จากpdfnup
จะถูกเรียกว่า " out-nup.pdf "
นอกจากนี้ดูผลลัพธ์ของpdfnup
คำสั่งและคุณจะเห็นรูปแบบคำสั่งที่ใช้งานจริงซึ่งจะให้ข้อมูลเชิงลึกเกี่ยวกับตัวเลือกที่คุณสามารถส่งผ่านเข้าไปได้ เห็นได้ชัดว่าpdfnup
ใช้pdfjam
ภายใต้ประทุน:
pdfjam: การโทรที่มีประสิทธิภาพสำหรับ pdfjam นี้:
/usr/bin/pdfjam --suffix nup --nup '2x1' --landscape -- out.pdf -
ตัวอย่าง:
Original PDF (1 pg ปกติในมุมมองแนวตั้ง), " in.pdf ":
PDF ขั้นสุดท้าย (2 pgs เคียงข้างกันในมุมมองแนวนอน), " out-nup.pdf ":
- ตอนนี้สามารถลดครึ่งหนึ่งลงตรงกลางเพื่อส่งผ่านเป็นใบปลิว
ฟังก์ชั่นทุบตีง่าย: make_flyer
คัดลอกและวางฟังก์ชัน bash นี้ที่ด้านล่างของไฟล์ "~ / .bashrc" ของคุณเพื่อเข้าถึงคำสั่งที่ง่ายและใช้งานง่าย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\""'
ตัวอย่างการใช้งาน:
make_flyer "path/to/inputpdf1.pdf" "path/to/inputpdf2.pdf"
ดูข้อมูลช่วยเหลือ:
make_flyer_help
เอาท์พุท:
$ 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"
อ้างอิง:
- https://superuser.com/a/948095/425838
- https://stackoverflow.com/a/11280219/4561887
ที่เกี่ยวข้อง:
- https://askubuntu.com/questions/214538/printing-in-booklet-format/1095789#1095789
Bash อ้างอิง:
- Bash วิธีการส่งผ่านข้อโต้แย้งในฟังก์ชั่นทุบตี: https://bash.cyberciti.biz/guide/Pass_arguments_into_a_function
- สตริงการต่อเชื่อม Bash: https://linuxize.com/post/bash-concatenate-strings/
- Bash รันคำสั่ง cmd ที่จัดเก็บเป็นสตริง! https://stackoverflow.com/questions/2005192/how-to-execute-a-bash-command-stored-as-a-string-with-quotes-and-asterisk
- Bash วนซ้ำอินพุตทั้งหมดเป็น cmd: https://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script/2559131325251313
- Bash ผ่านพารามิเตอร์การทำงาน: https://stackoverflow.com/questions/6212219/passing-parameters-to-a-bash-function/6212408#6212408
- วิธีแปลง PDF ขนาด 1 pg เป็นใบปลิว [my ans!!]: วิธีแปลง PDF ขนาด 1 หน้าเป็น 2 หน้าต่อแผ่น PDF?