วิธีลบรูปภาพจากไฟล์ PDF


13

ฉันมีเอกสาร PDF ที่ค่อนข้างใหญ่ (~ 100MB) ที่มีรูปภาพจำนวนมากอยู่ในนั้น (เป็นภาพประกอบและภาพพื้นหลัง) และฉันต้องการสำเนาของ pdf นั้นโดยไม่มีภาพ แต่ฉันไม่สามารถหาวิธี ทำอย่างนั้น.

ฉันไม่ได้พูดถึงการแปลงเป็นข้อความเท่านั้นฉันต้องการเก็บย่อหน้า / ตาราง / หลายคอลัมน์ตามที่เป็นอยู่

ฉันสบายกับบรรทัดคำสั่งและมีคอมพิวเตอร์หลายเครื่องที่มีการแจกแจงที่แตกต่างกันซึ่งฉันสามารถใช้ได้


ขณะที่เรากำลังพูดถึงเอกสาร 500 หน้าที่มีภาพหลายภาพในแต่ละหน้าฉันกำลังมองหาวิธีอัตโนมัติในการลบทุกภาพ
Ornux

คำตอบ:


14
cpdf -draft original.pdf -o version_without_images.pdf

มันไม่ได้อยู่ในที่เก็บ แต่คุณสามารถหาดาวน์โหลด ( pre-รวบรวมหรือแหล่งที่มา ) บนเว็บไซต์ของพวกเขา


คู่มือ :

15.1 เอกสารร่าง

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

 cpdf -draft -boxes in.pdf -o out.pdf

1
นั่นคือว่าสิ่งที่ผมกำลังมองหา ไฟล์เอาต์พุตนั้นสมบูรณ์แบบ ขอบคุณมาก!
Ornux

@Rinzwind โปรดทราบว่าลิงก์ "เว็บไซต์ของพวกเขา" ไปที่ไฟล์ zip
Jos

อืม .. สำหรับฉันมันเพิ่มบรรทัดแบบสุ่มไปเรื่อย ๆ จนเกือบตลอดและขนาดไฟล์ก็เพิ่มขึ้นเล็กน้อยแทนที่จะหดตัวลง
Henning Koehler

23

Ghostscript รุ่นล่าสุดสามารถทำได้เช่นกัน เพียงเพิ่มพารามิเตอร์-dFILTERIMAGEในคำสั่งของคุณ

พารามิเตอร์นี้ยังมีพารามิเตอร์ใหม่อีกสองตัวที่สามารถเพิ่มเพื่อลบประเภทเนื้อหา"vector"และ"text" แบบเลือก :

  1. -dFILTERIMAGE: สร้างเอาต์พุตโดยลบภาพแรสเตอร์ทั้งหมด

  2. -dFILTERTEXT: สร้างเอาต์พุตโดยที่องค์ประกอบข้อความทั้งหมดจะถูกลบ

  3. -dFILTERVECTOR: สร้างเอาต์พุตเมื่อลบแบบเวกเตอร์ทั้งหมด

ตัวเลือกสองตัวใด ๆ เหล่านี้สามารถรวมกันได้ (ถ้าคุณรวมทั้ง 3 คุณจะได้รับหน้าทั้งหมดได้รับการ blanked ... )

ตัวอย่าง

นี่คือภาพหน้าจอจากหน้าตัวอย่าง PDF ซึ่งมีเนื้อหาทั้ง 3 ประเภทดังกล่าวข้างต้น:

สกรีนช็อตของหน้า PDF ต้นฉบับที่มีองค์ประกอบ "รูปภาพ", "เวกเตอร์" และ "ข้อความ"
สกรีนช็อตของหน้า PDF ต้นฉบับที่มีองค์ประกอบ "รูปภาพ", "เวกเตอร์" และ "ข้อความ"


การรันคำสั่ง 6 ต่อไปนี้จะสร้างเนื้อหาที่เหลือทั้งหมด 6 รูปแบบ:

 gs -o noIMG.pdf -sDEVICE = pdfwrite -dFILTERIMAGE input.pdf
 gs -o noTXT.pdf -sDEVICE = pdfwrite -dFILTERTEXT input.pdf
 gs -o noVCT.pdf -sDEVICE = pdfwrite -dFILTERVECTOR input.pdf

 gs -o onlyIMG.pdf -sDEVICE = pdfwrite -dFILTERVECTOR -dFILTERTEXT input.pdf
 gs -o onlyTXT.pdf -sDEVICE = pdfwrite -dFILTERVECTOR -dFILTERIMAGE input.pdf
 gs -o onlyVCT.pdf -sDEVICE = pdfwrite -dFILTERIMAGE -dFILTERTEXT input.pdf

ภาพต่อไปนี้แสดงผลลัพธ์:


แถวบนสุดจากซ้าย: นำ "ข้อความ" ทั้งหมดออกแล้ว นำ "รูปภาพ" ทั้งหมดออกแล้ว นำ "เวกเตอร์" ทั้งหมดออกแล้ว แถวล่างจากซ้าย: เก็บ "ข้อความ" เท่านั้น เก็บเฉพาะ "ภาพ" เท่านั้น เก็บไว้ "เวกเตอร์" เท่านั้น
แถวบนสุดจากซ้าย: นำ "ข้อความ" ทั้งหมดออกแล้ว  นำ "รูปภาพ" ทั้งหมดออกแล้ว  นำ "เวกเตอร์" ทั้งหมดออกแล้ว  แถวล่างจากซ้าย: เก็บ "ข้อความ" เท่านั้น  เก็บเฉพาะ "ภาพ" เท่านั้น  เก็บไว้ "เวกเตอร์" เท่านั้น



2

ในขณะที่ @Rinzwind คำตอบคือสิ่งที่ถูกต้องฉันต้องการเพียงแค่แสดงความคิดเห็นวิธีการแก้ปัญหา "กึ่งกลาง" โดยปกติคุณสามารถลดขนาดของภาพได้อย่างมากโดยใช้ghostscriptด้วย

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen \
   -dNOPAUSE -dQUIET -dBATCH -sOutputFile=small.pdf original.pdf

... บางครั้งมันก็มีประโยชน์สำหรับการพิสูจน์อักษร หน้าคู่มือสำหรับการเขียนรูปแบบไฟล์ PDF เป็นที่นี่


@KurtPfeifle /screenจะตั้งความละเอียดของภาพบิตแมปเป็น 72dpi ใช่ถ้าคุณมีภาพที่ DPI ที่เล็กกว่ามันสามารถเพิ่มขนาดไฟล์ได้ นี่คือเหตุผลที่ฉันใช้คำว่า "ปกติ" (ในแง่ของ "ไม่เสมอไป แต่ค่อนข้างบ่อย") อย่าลังเลที่จะลงคะแนนในสิ่งที่คุณต้องการ
Rmano

เรียกใช้คำสั่งนี้: for s in screen default ; do gs -o /dev/null -sDEVICE=pdfwrite -dPDFSETTINGS=/${s} -c "currentpagedevice {exch ==only ( ) print === } forall" | sort | tee ghostscript---pdfwrite-PDFSETTINGS-${s}--pagedevice-settings.txt; done. sdiff -sbB $[file1}.txt ${file2}.txtมันจะผลิตสองไฟล์ข้อความที่คุณสามารถเปรียบเทียบการใช้ ตอนนี้คุณรู้ว่าและสมบูรณ์ ทุกการตั้งค่าที่แตกต่างกันนำโดย-dPDFSETTINGS=/screen!
Kurt Pfeifle

เสร็จสิ้น ยังไม่เห็นว่าตัวเลือกใดสามารถให้ไฟล์ที่ใหญ่/screenกว่าใน/default--- 72dpi เทียบกับ 150dpi ปรับให้เหมาะสมละทิ้งตัวอย่าง EPS ... แต่ไม่ใช่ปัญหาใหญ่ ผู้คนจะทดสอบและเลือกทางออกที่ดีกว่า
Rmano

ฉันขอโทษ - บางทีฉันต้องขออภัยในขณะนี้สำหรับหน้าด้านของคำสั่งที่ 1 ของฉัน พูดตามตรงฉันดูเหมือนจะจำได้จากการสืบสวนครั้งก่อน (ไม่กี่ปีหลัง) ที่/screenให้ผลลัพธ์ที่แย่มาก /epubอาจจะเป็นหน่วยความจำของฉันล้มเหลวหรือผมผสมมันขึ้นกับ คำสั่งที่ฉันให้คุณมาจากความทรงจำเพราะฉันค่อนข้างแน่ใจว่ามันจะแสดงสิ่งที่ฉันหมายถึง ตอนนี้ฉันกลับมาทำงานอีกครั้งฉันไม่เห็นสิ่งที่ฉันคาดไว้อีกต่อไป: การทดสอบเพิ่มเติมที่เพิ่มเติมที่ฉันทำเมื่อหลายปีก่อน จากนั้นแบบอักษร (CID? / CFF?) จำนวนมากจึงมีขนาด rating แบบเรตติ้งของ PDF ที่เป็นผลลัพธ์ ฉันต้องกลับไปที่ปัญหาอีกครั้งเมื่อฉันมีเวลามากขึ้น ... :-)
Kurt Pfeifle

0

คุณสามารถใช้โปรแกรมแก้ไข PDF หลักลบภาพเหล่านั้นและบันทึกเป็นไฟล์ pdf ใหม่ คุณสามารถดาวน์โหลดได้จากศูนย์ซอฟต์แวร์ Ubuntu


ฉันเพิ่งติดตั้งเพื่อลอง แต่ฉันไม่เห็นวิธีอัตโนมัติในการทำเช่นนั้น เนื่องจากเป็นเอกสาร 500 หน้าฉันไม่เห็นว่าการลบด้วยตนเองเป็นวิธีแก้ปัญหาที่นี่ ฉันพลาดอะไรไปหรือเปล่า?
Ornux

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