ฉันจะทำให้ PDF ใน Mac OS บนบรรทัดคำสั่งแบนได้ทั้งหมดได้อย่างไร


16

ฉันใช้ Mac OS X Snow Leopard ฉันมี PDF ที่มีฟิลด์แบบฟอร์มคำอธิบายประกอบและตราประทับบน ฉันต้องการตรึง (หรือ "แบน") ว่า PDF เพื่อให้ไม่สามารถเปลี่ยนฟิลด์แบบฟอร์มและคำอธิบายประกอบ / แสตมป์ไม่สามารถแก้ไขได้อีกต่อไป เนื่องจากฉันมีไฟล์ PDF เหล่านี้จำนวนมากฉันจึงต้องการทำสิ่งนี้โดยอัตโนมัติในบรรทัดคำสั่ง

บางสิ่งที่ฉันได้ลอง / พิจารณาด้วยระดับความสำเร็จ:

  • เปิดในตัวอย่างและพิมพ์ไปที่ไฟล์ สิ่งนี้จะสร้างไฟล์ PDF ที่แบนราบโดยไม่ต้องเปลี่ยนขนาดไฟล์ วิธีเดียวที่จะทำให้เป็นอัตโนมัติดูเหมือนว่าจะเขียนAppleScript ที่ใช้ kludgy UIซึ่งฉันพยายามหลีกเลี่ยง
  • เปิดใน Acrobat Pro และใช้ฟังก์ชัน JavaScript ให้เรียบ อีกครั้งไม่แน่ใจว่าจะทำสิ่งนี้โดยอัตโนมัติในบรรทัดคำสั่ง
  • ใช้pdftkกับflattenตัวเลือก แต่นี่จะทำให้ฟิลด์ฟอร์มราบเรียบไม่ใช่แสตมป์และหมายเหตุอื่น ๆ
  • ใช้cupsfilterซึ่งสามารถสร้าง PDF ได้จากหลายรูปแบบไฟล์ เช่นpdftkนี้แบนเพียงสาขาแบบฟอร์ม
  • ใช้cups-pdfเพื่อเชื่อมต่อเข้ากับ printserver ของ Mac และบันทึกไฟล์ PDF แทนการพิมพ์ ผมใช้รุ่น MacPorts ไฟล์ที่ได้จะมีลักษณะแบน แต่ใหญ่ ฉันลองสิ่งนี้ในไฟล์ 8MB; PDF ที่แบนคือ 358MB! บางทีนี่อาจจะสามารถใช้ร่วมกับสาย Ghostscript ในขณะที่อูบุนตูเคล็ดลับ: Howto ลดขนาดไฟล์ PDF จากบรรทัดคำสั่ง

ข้อเสนอแนะอื่น ๆ จะได้รับการชื่นชม


1
Automator.app มีตัวเลือกการประมวลผล PDF ในตัว บางทีหนึ่งในนั้นสามารถช่วยโดยตรงหรือรวมกับหนึ่งในการกระทำข้างต้น
Kassym Dorsel

คุณสามารถให้เอกสารตัวอย่าง PDF ที่มีองค์ประกอบเหล่านี้ได้หรือไม่
Daniel Beck

ฉันคิดอย่างนั้น ตอนนี้ตัวอย่างทั้งหมดของฉันเป็นแบบทดสอบนักเรียนดังนั้นฉันจึงต้องจำลองบางอย่าง
Matthew Leingang

คำตอบ:


11

ลองใช้pdf2psและps2pdfต่อเนื่องกัน มันยุ่งยากนิดหน่อย แต่มันช่วยลดเอกสาร 30MB ลงเหลือ 17MB ไม่มากเท่าที่ฉันจะชอบ แต่ก็ยังดีกว่า ฉันได้รับแนวคิดนี้จากเพื่อนที่ใช้วิธีนี้เพื่อกำจัดการอนุญาตให้ใช้รหัสผ่านบน pdf

pdf2ps your_pdf_file.pdf your_pdf_file.ps
ps2pdf your_pdf_file.ps your_pdf_file_from_ps.pdf

หวังว่าจะช่วย!


3
GhostScript FTW! pdf2ps file.pdf - | ps2pdf - file_flat.pdfผมได้รับมันลงไปหนึ่งซับโดยใช้ท่อ: ไฟล์ดังกล่าวเปลี่ยนจาก 300K เป็น 500K ซึ่งเพิ่มขึ้นเป็นร้อยละใหญ่ แต่ไม่มีอะไรเหมือนวิธีเพิ่มขึ้น 4400% ที่cups-pdfให้ผล
Matthew Leingang

pdf2ps -q -sOutputFile=- file.pdf | ps2pdf - file_flat.pdfอันที่จริงผมมีโชคดีขึ้นด้วย
Matthew Leingang

4
สังเกตว่าบน Mac คุณสามารถติดตั้ง Ghostscript ที่จะทำให้คำสั่งดังกล่าวสามารถใช้ได้ผ่านทางhomebrewbrew install ghostscriptกับ
Nick

5

ดังนั้นนี่คือสิ่งที่ฉันได้ใช้เมื่อเร็ว ๆ นี้ ฉันคิดว่าฟังก์ชั่นมันทำสิ่งเดียวกับpdf2ps file.pdf - | ps2pdf - file_flat.pdfแต่ดูเหมือนจะทำงานได้ดีขึ้นสำหรับฉัน

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -sOutputFile=<newfile> <oldfile>

โซลูชัน ps2pdf ล้มเหลวสำหรับฉัน สิ่งนี้ใช้ได้ผลโดยการทำดัชนีแบบอักษรใหม่ใน PDF
ℝaphink

คำสั่งเหล่านี้ไม่แบน คุณสามารถคัดลอกเลเยอร์ต้นแบบโดยใช้ดูตัวอย่างและเนื้อหาต้นฉบับจะปรากฏขึ้น
Alain O'Dea

1

มันอาจจะเป็นทางเลือกย่อย แต่คุณคิดว่าการผูกมัด Cups-pdf ด้วย pdftk หรือ cupsfilter หรือไม่? อย่างที่คุณพูดถึง cups-pdf จะสร้างไฟล์ pdf แบบแบนแล้วส่งผ่าน pdftk หรือ cupsfilter เพื่อให้มันมีขนาดที่พอเหมาะ?

หรือดูที่/System/Library/Printers/Libraries/convert คุณควรทำสิ่งที่ชอบ

/System/Library/Printers/Libraries/convert -f input_file.pdf -o output_file.pdf -j "application/pdf"

/System/Library/Printers/Libraries/convertแม็คของฉันไม่ได้มี ฉันพยายามcupsfilterแล้ว เมื่อแปลงจาก PDF เป็น PDF จะไม่มีการเปลี่ยนแปลงเกิดขึ้นกับไฟล์ เมื่อแปลงจาก PDF เป็น PS แล้ว PDF เป็นคำอธิบายประกอบที่หายไป
Matthew Leingang

1

คำเตือน: gs และ pdf2ps | ps2pdf อย่าเรียบ PDF!

ใช้ GS หรือ pdf2ps ตาม ps2pdf จะให้ผลผลิตหลายชั้นรูปแบบไฟล์ PDF ที่มีเนื้อหาภายใต้คำอธิบายประกอบนำเสนอในรูปแบบเดิม คุณสามารถตรวจสอบข้อบกพร่องนี้ในดูตัวอย่างโดยใช้เลือกทั้งหมดแล้วคัดลอกแล้ววางลงในหน้าต่าง TextEdit (ในโหมด Rich Text) คุณจะเห็นข้อความหรือกราฟิกภายใต้คำอธิบายประกอบแบบ Redaction ตัวอย่างเช่น สิ่งนี้ชัดเจนมากหากคุณต้องการให้เนื้อหานั้นถูกลบออกไป

วิธีแก้ปัญหาการทำงาน

ImageMagick สามารถสร้างคุณภาพที่กำหนดค่าได้หลายหน้า PDF แบบชั้นเดียวพร้อม rasters ของแต่ละหน้าโดยใช้คำสั่งต่อไปนี้:

convert -density 150 document_original.pdf document_flat.pdf

คำสั่งนี้ rasterizes document_original.pdf สร้างอิมเมจแบบพิกเซลของแต่ละหน้าที่ 150 DPI และแสดงผลลัพธ์เป็น document_flat.pdf

หมายเหตุเกี่ยวกับคุณภาพของภาพ

เนื่องจากการแรสเตอร์ทำให้เกิดภาพที่ไม่สามารถปรับขนาดได้ (ซูมและคุณจะเห็นข้อความหรือภาพเวกเตอร์ดั้งเดิมกลายเป็นตัวอักษร) PDF มันอาจจะมีขนาดไฟล์ที่ใหญ่ขึ้นเว้นแต่ต้นฉบับจะมีเนื้อหาเวคเตอร์ที่ซับซ้อนมากเช่นพล็อตกระจายล้านจุด

ด้วยการเปลี่ยนความหนาแน่นคุณสามารถแลกเปลี่ยนขนาดไฟล์ใหญ่ขึ้นเพื่อให้ได้ความละเอียดที่สูงขึ้น

ข้อความทั้งหมดจะถูกแปลงเป็นพิกเซลดิบในภาพหน้าแต่ละภาพ ไดอะแกรมข้อความและเวกเตอร์มีปัญหามากที่สุดดังนั้นให้ทดสอบกับ DPI จนกว่าคุณจะได้รับไฟล์เอาต์พุตที่ใช้งานได้


1
ขอบคุณสำหรับการตอบคำถามนี้ 5 ปีที่แล้วทางออกที่ฉันเขียนนั้นใช้งานได้สำหรับฉัน แต่ฉันจะลองตอบคำถามของคุณในครั้งต่อไปที่ฉันต้องทำสิ่งนี้ (อันที่จริงเร็ว ๆ นี้)
Matthew Leingang

นั่นทำให้รู้สึก ฉันจินตนาการว่าพฤติกรรมของ Ghostscript เปลี่ยนไปเมื่อเทียบกับคำอธิบายประกอบที่แบนราบ ฉันพยายามเพิ่ม -PreserveAnnots = false และมันยังไม่ทำงาน ภายใต้ประทุนแปลงโดยใช้ Ghostscript สำหรับการประมวลผล PDF ฉันต้องการบางสิ่งที่ทำในสิ่งที่ Acrobat ทำ: มันเก็บคำอธิบายประกอบเอาเนื้อหาไว้ข้างหลังพวกเขาและรักษาภาพเวกเตอร์ที่ไม่ได้เปิด Document Cloud ชิ้นส่วนของ Acrobat ใหม่ทำให้ฉันรู้สึกประหม่าที่จะใช้มันกับข้อมูลที่ละเอียดอ่อน
Alain O'Dea

0

Applescript อาจเป็นวิธีที่ดีที่สุด / เร็วที่สุดในบรรทัดคำสั่ง เมื่อทำงานแล้วคุณสามารถบันทึกเป็นแอปพลิเคชันและสร้างนามแฝงในเชลล์คำสั่งเพื่อเรียกใช้ หลังจากนั้นคุณเพียงพิมพ์นามแฝงที่บรรทัดคำสั่ง


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