วิธีแยกเวกเตอร์จากไฟล์ PDF


51

ฉันมีไฟล์ PDF ที่มีภาพเวกเตอร์อยู่ข้างใน (ฉันดาวน์โหลดจากอินเทอร์เน็ตดังนั้นฉันไม่มีต้นฉบับ)

ฉันต้องการแยกเวกเตอร์เพื่อให้สามารถซ้อนทับพวกเขาในภาพอื่น ๆ ; ใช้ในสื่อสิ่งพิมพ์หรือบนเว็บไซต์

ฉันจะแยกเวกเตอร์เฉพาะจากไฟล์ PDF ได้อย่างไร

มีซอฟต์แวร์ที่สามารถแยกเวกเตอร์จากไฟล์ PDF ได้ไหม? (ฟรียิ่งกว่า)


@slhck: ผมหมายถึงกราฟิกเวกเตอร์ ฉันใช้ Inkscape และทำงานตามที่คาดไว้ คุณช่วยกรุณาใส่ความคิดเห็นของคุณเป็นคำตอบเพื่อที่ฉันจะได้ทำเครื่องหมายว่ายอมรับ
Devdatta Tengshe

คำตอบ:


49

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

เอกสารรายละเอียดมีอยู่ในเว็บไซต์ Inkscape

โปรดทราบว่าบน Linux มันต้องการ X11 นอกจากนี้ยังมีรุ่น Windows ดั้งเดิม

หรือคุณอาจต้องการให้ Adobe Illustrator ใช้งานได้ (ซอฟต์แวร์แบบชำระเงิน)


2
บนลีนุกซ์นั้นต้องการ X11 - มีรุ่น Windows ดั้งเดิม (ซึ่งฉันเพิ่งใช้วิธีแยกการวาดภาพเวกเตอร์จาก PDF)
Mark Leighton Fisher

23

ในขณะที่ Inkscape เป็นวิธีที่ยอดเยี่ยมในการทำเช่นนั้นสำหรับผู้ที่ไม่มี X11 คุณสามารถแยกหน้าของ PDF ในรูปแบบ SVG โดยใช้poppler-utilsที่บรรทัดคำสั่ง ตัวอย่างเช่นหากต้องการแยกหน้า 30:

$ pdftocairo -f 30 -l 30 -svg  somehugemanual.pdf  myextractedpage.svg

จากนั้นคุณสามารถใช้โปรแกรมแก้ไขเวกเตอร์ที่คุณชื่นชอบ (ของฉันคือ Inkscape) เพื่อแยกภาพออกจากข้อความ

อีกวิธีหนึ่งถ้าคุณเป็นผู้ใช้บรรทัดคำสั่งที่ไม่ยอมใครง่ายๆคุณสามารถแยกไปที่ EPS (encapsulated postscript) และใช้sedเพื่อซ่อนข้อความทั้งหมด (ซึ่งเกิดขึ้นระหว่างบรรทัด BT และ ET สำหรับ pdftocairo) นี่คือวิธี:

$ pdftocairo -f 30 -l 30 -eps  manual.pdf  - | sed '/^BT$/,/^ET$/ d' > myimage.eps

และถ้าคุณไม่ฉลาดจริงๆที่จะหลีกเลี่ยงการใช้ X11 คุณสามารถย่อขนาดกล่องขอบเขตของรูปภาพจากบรรทัดคำสั่งโดยใช้eps2epsคำสั่งGhostscript :

$ eps2eps myimage.eps myimage-bb.eps

ฉันได้ทำการทดสอบและใช้งานได้ดี อย่างไรก็ตามโดยส่วนตัวแล้วฉันพบว่าการใช้ Inkscape ง่ายขึ้น


+1 บรรทัดคำสั่งของคุณตัดข้อความทั้งหมด .. แต่คุณรู้วิธีดึงภาพทั้งหมดด้วยหรือไม่ I'am มองหาวิธีการแก้ปัญหาที่เฉพาะกราฟิกเวกเตอร์ที่เหลือ :)
clarkk

มันใช้งานได้สำหรับคุณหรือไม่ cat foo.eps | sed '/^8 dict dup begin$/,/^Q$/ c Q' > nobitmaps.eps
hackerb9

1
แต่เป็นไปได้ไหมที่จะตรวจสอบว่าไฟล์ eps มีกราฟิกแบบเวกเตอร์หรือไม่? :)
clarkk

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

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