Làm cách nào để trích xuất vectơ từ tệp PDF?


51

Tôi có một tệp PDF với hình ảnh vector bên trong nó. (Tôi đã tải xuống từ internet, vì vậy tôi không có bất kỳ bản gốc nào.)

Tôi muốn trích xuất các vectơ để tôi có thể phủ chúng lên một số hình ảnh khác; sử dụng chúng trong phương tiện truyền thông in ấn, hoặc trên một trang web.

Làm cách nào để trích xuất các vectơ cụ thể từ tệp PDF?

Có lẽ, có phần mềm nào có thể trích xuất các vectơ từ tệp PDF không? (Tốt nhất là miễn phí.)


@slhck: Ý tôi là đồ họa Vector . Tôi đã sử dụng Inkscape và nó hoạt động như mong đợi. Bạn có thể vui lòng đặt bình luận của bạn như một câu trả lời, để tôi có thể đánh dấu nó là được chấp nhận?
Devdatta Tengshe

Câu trả lời:


49

Bạn có thể sử dụng Inkscape , đây là một ứng dụng đồ họa vector đa nền tảng, miễn phí. Nó sẽ cho phép bạn nhập các tệp PDF và chọn các vectơ nhúng. Sau đó, bạn có thể chỉnh sửa chúng và xử lý như bạn muốn.

Tài liệu chi tiết có sẵn trên trang web Inkscape.

Lưu ý rằng trên Linux, nó giống như yêu cầu X11. Ngoài ra còn có một phiên bản Windows gốc.

Ngoài ra, bạn có thể muốn dùng thử Adobe Illustrator (phần mềm trả phí).


2
Trên Linux, nó giống như yêu cầu X11 - cũng có một phiên bản Windows gốc (mà tôi chỉ sử dụng độc đáo để trích xuất một bản vẽ vector từ PDF).
Mark Leighton Fisher

23

Mặc dù Inkscape là một cách tuyệt vời để làm điều đó, nhưng đối với những người thiếu X11, bạn cũng có thể trích xuất các trang riêng lẻ của PDF thành định dạng SVG bằng cách sử dụng poppler-utils tại dòng lệnh. Ví dụ: để trích xuất chỉ trang 30:

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

Sau đó, bạn có thể sử dụng trình chỉnh sửa vector yêu thích của mình (của tôi là Inkscape) để tách hình ảnh khỏi văn bản.

Cách khác, nếu bạn là người dùng dòng lệnh khó tính, bạn có thể trích xuất thành EPS (phần tái bút được đóng gói) và sử dụng sedđể ẩn tất cả văn bản (điều này xảy ra giữa các dòng BT và ET cho pdftocairo). Đây là cách thực hiện:

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

Và, nếu bạn thực sự điên rồ để tránh sử dụng X11, bạn thậm chí có thể thu nhỏ hộp giới hạn của hình ảnh từ dòng lệnh bằng cách sử dụng eps2epslệnh của Ghostscript :

$ eps2eps myimage.eps myimage-bb.eps

Tôi đã thử nghiệm điều này và nó hoạt động rất tốt. Tuy nhiên, cá nhân tôi thấy dễ dàng hơn khi chỉ sử dụng Inkscape.


+1 dòng lệnh của bạn sẽ loại bỏ tất cả văn bản .. nhưng bạn có biết cách xóa tất cả hình ảnh không? Tôi đang tìm kiếm một giải pháp chỉ còn lại đồ họa vector :)
clarkk

công việc này là dành cho bạn? cat foo.eps | sed '/^8 dict dup begin$/,/^Q$/ c Q' > nobitmaps.eps
hackerb9

1
Nhưng sau đó có thể kiểm tra xem tập tin eps thậm chí có đồ họa vector không? :)
clarkk

1
Tôi cho rằng bạn có thể sử dụng eps2ep của Ghostscript để chưng cất nó vào hộp giới hạn nhỏ nhất của nó và xem nó có hoàn toàn trống không. Nhưng điều này đang bắt đầu trở thành một câu hỏi mới. Hãy hỏi và tôi chắc chắn nếu tôi không trả lời, sẽ có người làm.
hackerb9

1
@ hackerb9 cảm ơn, bây giờ eps có thể đọc được, nhưng hình ảnh ở mật độ thực sự thấp và một số văn bản vẫn còn xung quanh nó. Pdf ở đây , và hình ảnh ở trang 7
rtrtrt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.