มีวิธีที่จะทำให้รูปภาพ. pdf เรียบจากบรรทัดคำสั่งหรือไม่


19

ใน GIMP ฉันสามารถนำเข้า. pdf และใช้ GUI เพื่อทำให้แบน (ถ้าทำด้วยเลเยอร์จำนวนมาก) โดยเลือก "Flatten Image" ในเมนูแบบเลื่อนลง "รูปภาพ" จากนั้นฉันสามารถส่งออก. pdf ด้วยชื่อไฟล์ใหม่

ฉันต้องการทำสิ่งนี้โดยอัตโนมัติ มีวิธีทำผ่านเทอร์มินัลไหม?


1
ติดตั้ง imagemagick และอ่าน man mogrify-im6, montage-im6, display-im6, stream-im6, ident-im6, import-im6, conjure-im6, conjure-im6, คอมโพสิต -im6, แปลง -im6, animate-im6 และเปรียบเทียบ -im6
PersianGulf

คำตอบ:


25

ผมพบว่าทั้ง 2 วิธีผ่านทาง Google ในหัวข้อนี้หัวข้อ: Re: คลี่ไฟล์ PDF ที่ใช้ระบบปฏิบัติการยูนิกซ์บรรทัดคำสั่ง

วิธี # 1 - ใช้การแปลงของ Imagemagick:
$ convert orig.pdf flattened.pdf 

หมายเหตุ:มีการรายงานคุณภาพเพื่อให้เป็นเช่นนั้นด้วยวิธีการนี้

วิธีที่ # 2 - การใช้ pdf2ps -> ps2pdf:
$ pdf2ps orig.pdf - | ps2pdf - flattened.pdf 

หมายเหตุ:วิธีการนี้ถูกรายงานเพื่อรักษาคุณภาพของภาพ


1
คุณภาพดีกว่า GIMP ในวันที่สอง - ขอบคุณ!
generic_user

@ACD - ดีที่รู้ ดีใจที่มันแก้คำถามของคุณ
slm

2
วิธีที่ 1 สร้างภาพเลือนมากในขณะที่วิธีที่ 2 ทำงานได้อย่างสมบูรณ์แบบ
Severyn Kozak

1
น่าเสียดายที่เมธอด # 2 ไม่ทำให้รูปภาพเป็น raster ดังนั้นถ้าคุณพยายามบล็อกส่วนที่ละเอียดอ่อนผู้ใช้ยังคงสามารถเปิดเอกสารและลบเลเยอร์ (ด้วยสิ่งต่าง ๆ เช่น Inkscape) อย่างไรก็ตามคุณสามารถปรับเปลี่ยนความละเอียดของวิธีที่ 1: $ convert -density 150 {original,flattened}.pdf ถ้าคุณต้องการที่จะรักษาพื้นที่ดิสก์คุณสามารถใช้-type Grayscaleหรือ-monochromeหรืออะไรทำนองนั้น
eacousineau

1
ทั้งสองวิธีจะทำให้ rasterize pdf แม้ว่าวิธีที่ # 2 จะทำได้ที่ความละเอียดสูงกว่ามาก ดังนั้นวิธีการเหล่านี้จึงไม่เป็นที่น่าพอใจ
Ant

18

Ghostscript (gs) ทำงานได้ดีกว่าpdf2psและconvertสำหรับฉัน คุณภาพลดน้อยลงและขนาดไฟล์เล็ก

gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \
-sColorConversionStrategy=/LeaveColorUnchanged  \
-dAutoFilterColorImages=true \
-dAutoFilterGrayImages=true \
-dDownsampleMonoImages=true \
-dDownsampleGrayImages=true \
-dDownsampleColorImages=true \
-sOutputFile=document_flat.pdf document_original.pdf

พบได้ที่นี่: http://zeroset.mnim.org/2015/01/07/flatten-pdfs-with-ghostscript/


วิธีนี้ใช้งานได้ดีไฟล์ PDF ไม่ได้แรสเตอร์และข้อความได้รับการอนุรักษ์เป็นข้อความ
Ant

2
ฉันพยายามใช้สิ่งนี้เพื่อลบเลเยอร์ความโปร่งใสผ่านการแบน แต่มันไม่ได้ผลสำหรับฉัน
mikemtnbikes

มันเปลี่ยนแบบอักษรสำหรับฉัน แต่ความละเอียดดีกว่าวิธีอื่น ๆ ที่เสนอ
วาง

1

แม้ว่าการแปลงจะทำให้ไฟล์มีขนาดเท่ากันฉันก็พบว่ามันช้า

วิธี ps2pdf pdf2ps เร็วขึ้น แต่ฉันสังเกตเห็นว่ามันเป็นการเพิ่มขนาดไฟล์

pdftk เป็นสิ่งที่ดีเพราะมันไม่เพียง แต่รวดเร็ว แต่ยังคงขนาดไฟล์ที่คล้ายกัน

นี่คือสิ่งที่ฉันใช้เพื่อทำให้แบนไดเรกทอรีจำนวนมาก

    function pdfflatten () {
        pdftk "$1" output "$2" flatten
    }
    export pdfflatten
    alias pdfflattenDIR='mkdir flattenedPDFs; for i in `seq $(ls *.pdf | wc -l)`; do a=`ls *.pdf | head -$i | tail -1`; pdfflatten "$a" flattenedPDFs/"$a"; done'

pdftk flatten ไม่เปลี่ยนภาพภายใน PDF จากเอกสารนั้น "ผสานการป้อนข้อมูลในรูปแบบอินเทอร์แอคทีฟของ PDF (และข้อมูลของพวกเขา) กับหน้าของ PDF"
Aidan Kane

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