Mac OS X: วิธีผสานไฟล์ pdf ในไดเรกทอรีตามชื่อไฟล์


30

ฉันต้องการรวมไฟล์ pdf หลายร้อยไฟล์ในไดเรกทอรีโดยอัตโนมัติตามชื่อไฟล์

เช่น

ไฟล์ 1000.1.pdf 1000.2.pdf 1000.3.pdf 1000.x.pdfควรจะรวมกันเป็น1,000.pdf

และ

2000.abc.pdf 2000.def.pdf 2000.5.pdf 2000.ghi.pdf 2000.jkl.pdfเข้า2000.pdf

ฉันไม่ต้องการใช้โซลูชันตาม Preview / Automator (ถ้ามี) เพราะเปรียบเทียบกับซอฟต์แวร์ของ บริษัท อื่นเช่น Adobe Acrobat หรือ PDFpen การรวมไฟล์ pdf บ่อยครั้ง (ขึ้นอยู่กับเอกสารต้นฉบับ) ทำให้ขนาดไฟล์เพิ่มขึ้นอย่างมีนัยสำคัญ (ดูเช่นอะไรทำให้ขนาดไฟล์ PDF เพิ่มขึ้นเมื่อบันทึกในหน้าตัวอย่าง )

คุณมีคำแนะนำอะไรบ้าง? ขอขอบคุณ!


การรวม PDF จะเพิ่มขนาดไฟล์ตลอดเวลาปัญหาของคุณคืออะไร
nohillside

1
@patrix ฉันกำลังพูดถึงหลายร้อยไฟล์ที่จะผสาน ในฐานะที่เชื่อมโยงดังกล่าวอาจมีนัยสำคัญเพิ่มขึ้นในขนาดไฟล์ที่มีเครื่องมือที่แตกต่างกันรวมอยู่ใน Mac OS X. ทำไมฉันจึงควรต้องการไฟล์ข้อความที่ผสานกับการเพิ่มขึ้นของขนาดบางครั้งหลายร้อยเปอร์เซ็นต์ ?
lejonet

2
@patrix, lejone8 ​​ต้องการรวมไฟล์ PDF โดยอัตโนมัติ แต่มีอัตราส่วน 1 + 1 = 2 ไม่ใช่กับ 1 + 1 = 5 หรือไม่ หรือมากกว่าในขนาดไฟล์ นอกจากนี้ lejonet8 ชี้ให้เห็นอย่างชัดเจนว่าการใช้ผลิตภัณฑ์ของ Apple นั้นไม่เป็นที่ยอมรับเนื่องจากประสิทธิภาพที่ไม่ดีเมื่อเทียบกับผลิตภัณฑ์ของบุคคลที่สาม! ฉันไม่ทราบว่าทำไมคุณลบความคิดเห็นของฉัน แต่ไม่ว่าจะเป็น
Ruskes

1
ฉันไม่เข้าใจคำขอการทำงานอัตโนมัติ มันง่ายมากและรวดเร็วในการจัดระเบียบ (เรียงลำดับ) ไฟล์ตามชื่อจากนั้นเลือกทั้งหมดในหมวดหมู่ที่ต้องการและทำการผสานเมื่อคลิกในโปรแกรมใด ๆ ที่มีเช่นตอบที่นี่หรืออื่น ๆ ขนาดไฟล์ที่ได้จะขึ้นอยู่กับประเภทและเนื้อหาของไฟล์ PDF ดังนั้นจึงไม่สามารถ 1 + 1 = 2 ได้ lejonet8 ดูเหมือนจะวางสายในการโต้แย้งว่าทำไมโปรแกรมของ Apple สร้างไฟล์ PDF ที่ใหญ่กว่าและอื่น ๆ ขอให้โชคดีในการตอบคำถามนั้น
Ruskes

2
คุณสามารถแก้ไขคำถามเพื่ออธิบายในรายละเอียดเพิ่มเติมว่า "อัตโนมัติ" มีความหมายต่อคุณอย่างไร (ดูเหมือนจะหมายถึงสิ่งต่าง ๆ สำหรับคนที่ใช้เวลาในการเสนอวิธีแก้ไขปัญหาของคุณ) สิ่งที่ควรทำให้เกิดการรวมเอกสาร? รูปแบบใดที่ควรใช้เพื่อค้นหาไฟล์ที่ตรงกัน โดยเฉพาะคำตอบของ DW ดูเหมือนว่าจะเป็นไปโดยอัตโนมัติอย่างรวดเร็วในตอนแรก แต่อาจมีคำถามของคุณมากกว่าที่เรารู้ในตอนนี้
nohillside

คำตอบ:


25

ลองpdftk เป็นซอฟต์แวร์บรรทัดคำสั่งที่สามารถเข้าร่วมไฟล์ PDF (และทำสิ่งอื่น ๆ อีกมากมายเช่นกัน แต่ไม่เกี่ยวข้องที่นี่) คุณสามารถดาวน์โหลดได้จากหน้าเว็บอย่างเป็นทางการ pdftk

ไวยากรณ์ตัวอย่าง:

pdftk old1.pdf old2.pdf old3.pdf cat output new.pdf

จะสร้างไฟล์new.pdfที่มีการเรียงต่อกันของไฟล์old1.pdf, ,old2.pdfold3.pdf

ในการแก้ปัญหาของคุณด้วยชื่อไฟล์ตัวอย่างของคุณ:

pdftk 1000.*.pdf cat 1000.pdf
pdftk 2000.*.pdf cat 2000.pdf

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


สมมติว่าไฟล์ทั้งหมดมีชื่อว่า 1000.x, 2000.x ฯลฯ เชลล์สคริปต์อาจมีลักษณะเช่นนี้

#!/bin/bash

for n in {1..9}; do
    if [[ -r ${n}000.1.pdf ]]; then
        rm -f ${n}000.pdf
        pdftk ${n}000.*.pdf cat ${n}000.pdf && mv ${n}000.*.pdf ~/.Trash/
    fi
done

ขอบคุณสำหรับความคิดเห็นของคุณ แต่ฉันไม่เห็นว่าเวิร์กโฟลว์สำหรับความต้องการของฉันอยู่ที่ไหน (ไฟล์หลายร้อยไฟล์ที่มีชื่อคล้ายกันผสานตามชื่อเหล่านี้)
lejonet

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

ขอบคุณสำหรับคำตอบ. น่าเสียดายที่การเรียกใช้ไฟล์ของฉันส่งผลให้เกิดข้อความแสดงข้อผิดพลาดนี้: ข้อผิดพลาด: ข้อความที่ไม่คาดคิดในช่วงสิ้นสุดหน้าอยู่ที่นี่: 1000.pdf
lejonet

1
@ lejonet8 บางทีคุณอาจจะทำอย่างละเอียดในข้อกำหนดอัตโนมัติของคุณมากขึ้นอีกนิดในคำถาม คุณกำลังมองหาสิ่งต่าง ๆ เช่น "การกระทำของโฟลเดอร์" หรือเช่นนั้น? สิ่งใดที่จะกระตุ้นให้เกิดกระบวนการเชื่อมต่อในตอนแรก
nohillside

3
@ lejonet8, คุณอาจต้องทดลองเล็กน้อยเพื่อดูวิธีทำให้ pdftk ทำงานให้คุณ ข้อความแสดงข้อผิดพลาดหนึ่งข้อความที่ไม่มีบริบทเป็นสิ่งที่น่าเสียดายที่ฉันไม่สามารถวินิจฉัยปัญหาได้ ลองเชื่อมไฟล์บางคู่เข้าด้วยกัน การทดลอง ดูว่าคุณสามารถวินิจฉัยได้เมื่อ pdftk ทำงานหรือไม่ทำงานและสาเหตุ อ่านบทช่วยสอน จากนั้นโพสต์คำถามเกี่ยวกับการทำให้ pdftk ทำงานบนไซต์ Stack Exchange ที่เหมาะสมหรือไซต์คำถามและคำตอบอื่น ๆ FWIW, pdftk น่าเชื่อถือมากสำหรับฉันการทำงานกับไฟล์ PDF ที่หลากหลายที่สร้างขึ้นโดยโปรแกรมที่แตกต่างกันมากมาย แน่นอนว่าประสบการณ์ของคุณอาจแตกต่างกันไป
DW

52

มีสคริปต์ Python ที่ซ่อนอยู่ในAutomator.appที่รวมไฟล์. PDF

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --help
Usage: join [--output <file>] [--shuffle] [--verbose]

ตัวอย่างการใช้งาน:

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf

2
ขอบคุณสำหรับคำตอบ. ฉันไม่สามารถแสดงความคิดเห็นในพื้นหลังทางเทคนิค (อาจมีความแตกต่างในการรวมใน Automator และ Preview) ขึ้นอยู่กับไฟล์ต้นฉบับอาจมีขนาดไฟล์เพิ่มขึ้นอย่างมากเช่นกัน ฉันเพิ่งทดสอบอีกครั้งและไฟล์สี่ไฟล์ที่มีขนาดรวม 12 mb เมื่อรวมกับเอกสารขนาด 32 mb นี่เป็นสิ่งที่ยอมรับไม่ได้
lejonet

ขออภัยไม่สามารถช่วยได้
akuhn

4
ผมเพิ่มคำสั่งนี้เป็นนามแฝงของฉันใน~/.bash_profileไฟล์เช่นนี้alias catpdf="/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf"ดังนั้นฉันก็สามารถcdลงในไดเรกทอรีที่มีไฟล์ PDF catpdfและเรียกใช้
Stewart Macdonald

2
การ upvoting สำหรับการใช้งานสคริปต์ Python ที่ซ่อนเร้นในแอพ! ฉันตัดสินใจที่จะใช้ pdftk แต่สำหรับวิธีการแก้ปัญหาที่มีประสิทธิภาพมากขึ้น
Blairg23

1
@lejonet ภูมิหลังทางเทคนิคคือทั้งคู่ใช้เฟรมเวิร์กเดียวกัน (Quartz.CoreGraphics on 10.11) ตามที่คุณเดา สามารถดูได้จากบรรทัดแรกของสคริปต์ `join.py '(คำสั่งนำเข้า)
hans_meine

8

คุณสามารถใช้กระจายกับpdfunite popplerคุณสามารถติดตั้งpopplerกับ Homebrew:

brew install poppler

และตอนนี้ใช้มัน:

pdfunite input1.pdf input2.pdf input3.pdf output.pdf

popplerยังมาพร้อมกับคำสั่งอื่น ๆ เหล่านี้: pdfdetach, pdffonts, pdfimages, pdfinfo, pdfseparate, pdftocairo, pdftohtml, pdftoppm, pdftops, นอกเหนือไปจากpdftotextpdfunite


0

pdftk ไม่ทำงานอีกต่อไปใน El Capitan! (OS X 10.10)

ทางเลือกคือpagemasterจาก PDFTron ไวยากรณ์จะเป็น:

pagemaster -m *.pdf -o output.pdf

ไม่มีปัญหาการเพิ่มขนาดไฟล์ของโซลูชัน Automator ด้านบนเนื่องจากใช้ไลบรารี PDF แบบกำหนดเอง

หมายเหตุ: นี่ไม่ใช่เครื่องมือฟรี รุ่นสาธิตเพิ่มลายน้ำบาง ๆ ในแต่ละหน้า

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