ฉันจะรวม PDF หลาย ๆ ไฟล์โดยใช้บรรทัดคำสั่งได้อย่างไร


50

มีซับในหนึ่งเดียวที่รวดเร็วในการรวมไฟล์ PDF หลาย ๆ อันไว้ในที่เดียวหรือไม่?

ฉันรู้ว่ามันสามารถทำได้โดยใช้ Preview.app

คำตอบ:


72

มีลักษณะที่ "การรวมไฟล์ PDF บนบรรทัดคำสั่งใน OSX" ในการเข้าร่วมไฟล์ PDF ใน OS X จากบรรทัดคำสั่ง

ปรากฎว่าจาก Tiger เป็นต้นไป OSX มาพร้อมกับสคริปต์ Python ที่ทำสิ่งที่คุณต้องการ สคริปต์นั้นสามารถเรียกใช้งานได้แล้วและ Python ติดตั้งไว้แล้วใน OS X ดังนั้นสิ่งที่คุณต้องทำเพื่อเปิดใช้งานก็คือเปิด Terminal แล้วพิมพ์

"/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

นอกจากนี้ในหน้าลิงก์ยังแนะนำให้สร้างลิงก์สัญลักษณ์สำหรับjoin.pyไฟล์เพื่อให้พิมพ์ได้ง่ายขึ้น แต่ไม่ต้องใส่-sในln -s ... ...และหากไม่มีลิงก์ก็จะสร้างฮาร์ดลิงก์ขึ้นมา อาจจะไม่สำคัญ แต่ถึงแม้ว่าฉันจะพูดถึงมัน


ทำงานให้ฉัน สิ่งหนึ่งที่ยอดเยี่ยมที่นี่คือการหลีกเลี่ยงการติดตั้งแพคเกจพิเศษที่คุณอาจไม่เคยใช้อีกครั้ง ขอบคุณ
gvrocha

ทำงานให้ฉันใน El Capitan 10.11.6
pabuisson

1
คำเตือน : ฉันมี PDF ที่ทำให้การหมุนเวียนของหน้าเว็บหลายหน้า
ยุ่งเหยิง

27

เพียงติดตั้ง Ghostscript โดยใช้ Brew ด้วยคำสั่ง:

brew install gs

จากนั้นรันคำสั่งด้วยไฟล์ทั้งหมดที่แสดงรายการ:

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf source1.pdf source2.pdf source3.pdf

OS X / macOS มีวิธีการรวมไฟล์ PDF จากบรรทัดคำสั่งอยู่แล้วดังนั้นทำไมเสียเวลาก่อนที่จะติดตั้ง Command Line Tools สำหรับ Xcode, Homebrew และ Ghostscript ก่อนเพื่อทำสิ่งที่สามารถทำได้โดยไม่ต้องมี ติดตั้งแพ็คเกจใด ๆ ข้างต้นได้อย่างไร
user3439894

5
@ user3439894 หลายคนติดตั้งแพคเกจทั่วไปเหล่านี้แล้วและกำลังใช้งานอยู่gsดังนั้นสำหรับการอ้างอิงในอนาคตโซลูชันนี้จะสะดวกสบาย
htor

1
@ user3439894 ฉันเห็นความสับสน ฉันกำลังพูดกับคุณเพราะคุณกำลังตั้งคำถามถึงคุณค่าของคำตอบนี้ ใช้ homebrew เพื่อติดตั้งอรรถประโยชน์บรรทัดคำสั่งเป็นเรื่องธรรมดามากในทุกวันนี้ดังนั้นฉันจะไม่เรียกมันว่าเป็นการเสียเวลา สำหรับหลาย ๆ คนคำตอบนี้ให้ทางออกที่ดีเท่าเทียมกันกับคุณ
htor

7
สิ่งนี้ใช้ได้ผลสำหรับฉันคำสั่ง py ไม่ได้
Thieme Hennis

2
ตามความคิดเห็นของ Thieme Hennis สคริปต์ join.py จึงขัดข้องสำหรับฉันใน High Sierra ด้วยความผิดพลาดของการแบ่งกลุ่ม แต่ gs ทำงานได้อย่างสมบูรณ์
arcdale

2

สคริปต์ python ของ Apple ในการดำเนินการ Automator นั้นช้ามากเนื่องจากใช้ CGPDFDocument APIs ของ CoreGraphics แทนที่จะเป็นเฟรมเวิร์ก PDFKit ที่ใหม่กว่า นอกจากนี้ยังนำเข้า CoreGraphics library ทั้งหมดแทนที่จะเป็น API ที่จำเป็น

สคริปต์ python ที่เป็นทางเลือกที่เร็วกว่าสามารถพบได้ที่นี่:

สคริปต์นี้ยังเพิ่มสารบัญลงใน PDF โดยแสดงรายการไฟล์ส่วนประกอบแต่ละไฟล์ (และการรวม ToCs ที่มีอยู่) ซึ่ง Apple ไม่ได้ทำ

มันสามารถใช้ในบรรทัดคำสั่ง (ที่มีชื่อไฟล์ PDF เป็นข้อโต้แย้ง) หรือในการดำเนินการสคริปต์เชลล์อัตโนมัติเพื่อให้การดำเนินการด่วน / บริการสำหรับ Finder


1
เป็นแบบทดสอบโดยใช้time คำสั่งร่วมกับjoinpdfs.py สคริปต์ที่สร้างขึ้นในjoin.py สคริปต์และสองไฟล์ ~ 200 MB แต่ละคุณjoinpdfs.py สคริปต์เป็น 9 วินาทีเร็วกว่าในตัวjoin.py สคริปต์ด้วยแน่นอนประโยชน์เพิ่มของการมี TOC เหมือนเดิม . ดี! +1
user3439894

BTW 9 วินาทีอาจฟังดูไม่เยอะ แต่มันเป็น 1/3 ของเวลาโดยรวมของสคริปต์ในตัวดังนั้น 1/3 ของเวลาจึงเร็วขึ้นอย่างมาก
user3439894

1

FWIW ฉันได้เขียนโปรแกรมเล็ก ๆ ที่ช่วยให้คุณทำสิ่งนี้ได้โดยไม่ต้องพึ่งพาการพึ่งพาจากภายนอกเช่นระบบของไพ ธ อนและอื่น ๆ บน GitHub ที่นี่: pdfmergeและสวยง่ายในการใช้งานที่สามารถผ่านมันรายการของไฟล์ PDF ที่จะผสานกับpdfmerge in1.pdf in2.pdf ... out.pdfผ่านมันรายชื่อของไฟล์ที่จะผสานในแฟ้มข้อความเหมือนหรือเพียงแค่ทำไดเรกทอรีปัจจุบันในการสั่งซื้อกับเอบีซีpdfmerge infileslist.txt out.pdf pdfmerge out.pdfฉันเขียนมันเป็นโครงการเรียนรู้ฟรีและเปิดกว้างและคุณสามารถรับไบนารีล่าสุดได้จากแท็บเผยแพร่บน GitHub


เนื่องจาก Python นั้นถูกติดตั้งไว้เป็นค่าเริ่มต้นและในฐานะเป็นส่วนหนึ่งของ macOS ฉันไม่จำเป็นต้องพิจารณาว่าเป็นการพึ่งพาภายนอกต่อ se กล่าวอีกนัยหนึ่งคือการใช้สิ่งที่มีอยู่แล้วในกล่องใน macOS เพื่อเข้าร่วมไฟล์ PDF join.pyสคริปต์จากแอ็คชั่นรวมหน้า PDF ใน Automator ไม่จำเป็นต้องดาวน์โหลดหรือติดตั้งอีกต่อไป ดาวน์โหลดและติดตั้ง ยังไม่เห็นไบนารีที่ลิงค์
user3439894

1
BTW ฉันได้อ่านโค้ดของคุณแล้วและมันก็น่าสนใจที่คุณกำลังใช้สององค์ประกอบหลัก (Foundation และ Quartz) ที่สคริปต์ไพ ธ อนใช้อยู่แล้วเช่นกัน มีอะไรในรหัสของคุณที่ดีกว่าที่จะแกว่งไปมาใช้มันมากกว่าสิ่งที่มีอยู่แล้วโดยค่าเริ่มต้นโดยไม่ต้องดาวน์โหลดอะไรในขณะที่คุณต้องใช้ขั้นตอนเพิ่มเติมและพิเศษหรือไม่
user3439894

1
สำหรับผู้ที่ไม่ได้ใช้ Python สำหรับสิ่งอื่น ๆ มันอาจเหมาะสมกว่าที่จะใช้สคริปต์ที่ Apple จัดให้ แต่สำหรับคนที่ใช้ Python มันอาจเป็นเรื่องยุ่งยากขนาดใหญ่ในการจัดการหลาย ๆ เวอร์ชัน (Python ของระบบคือ 2.7, Python สมัยใหม่คือ 3.x) พร้อมการติดตั้งโมดูลและสิ่งต่าง ๆ บนเครื่องของฉันตัวอย่างเช่น $ PATH ของฉันชี้ไปที่ Python ที่แตกต่างกันโดยสิ้นเชิง สิ่งนี้สามารถแก้ไขได้ด้วยการใช้ shebangs อย่างรอบคอบ แต่ฉันคิดว่ามันน่ารำคาญ แน่นอน YMMV นอกจากนี้ลิงก์โดยตรงไปยังหน้าดาวน์โหลดแบบไบนารี: github.com/paultopia/pdfmerge/releases/latest
Paul Gowder


0

ฉันพบเครื่องมือบรรทัดคำสั่ง PDF Coherentฟรีเป็นตัวเลือกที่ดีที่สุด มันรวดเร็วสูญเสียและไม่ยุ่งเหยิงไปในทิศทางหรือไฮเปอร์ลิงก์เหมือนกับที่โซลูชันอื่นทำ รูปแบบคือ:

cpdf file1.pdf file2.pdf -o output.pdf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.