Jak wyodrębnić wektory z pliku PDF?

51

Mam w nim plik PDF z obrazami wektorowymi. (Pobrałem go z Internetu, więc nie mam żadnych oryginałów).

Chcę wyodrębnić wektory, aby móc je nałożyć na inne obrazy; używaj ich w mediach drukowanych lub na stronie internetowej.

Jak wyodrębnić określone wektory z pliku PDF?

Czy jest może jakieś oprogramowanie, które może wyodrębnić wektory z pliku PDF? (Najlepiej za darmo.)

Devdatta Tengshe
źródło
@slhck: Miałem na myśli grafikę wektorową . Użyłem Inkscape i działa zgodnie z oczekiwaniami. Czy możesz podać swój komentarz jako odpowiedź, aby oznaczyć go jako zaakceptowany?
Devdatta Tengshe,

Odpowiedzi:

49

Możesz użyć Inkscape , która jest bezpłatną, otwartą aplikacją do tworzenia grafiki wektorowej na wiele platform. Umożliwi importowanie plików PDF i wybieranie osadzonych wektorów. Następnie możesz je edytować i przetwarzać, jak chcesz.

Szczegółowa dokumentacja jest dostępna na stronie Inkscape.

Zauważ, że w systemie Linux tak jak wymaga X11. Istnieje również natywna wersja systemu Windows.

Alternatywnie możesz wypróbować Adobe Illustrator (płatne oprogramowanie).

slhck
źródło
2
W systemie Linux to tak, jak wymaga X11 - jest też natywna wersja systemu Windows (którą właśnie ładnie wykorzystałem do wyodrębnienia rysunku wektorowego z pliku PDF).
Mark Leighton Fisher
23

Podczas gdy Inkscape jest świetnym sposobem na zrobienie tego, dla tych, którzy nie mają X11, możesz również wyodrębnić pojedyncze strony pliku PDF do formatu SVG za pomocą poppler-utils w wierszu poleceń. Na przykład, aby wyodrębnić tylko stronę 30:

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

Następnie możesz użyć swojego ulubionego edytora wektorów (mój to Inkscape), aby odizolować obraz od tekstu.

Alternatywnie, jeśli jesteś hardkorowym użytkownikiem wiersza poleceń, możesz wyodrębnić do EPS (enkapsulowany postscript) i użyć seddo ukrycia całego tekstu (który zdarza się między wierszami BT i ET dla pdftocairo). Oto jak:

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

A jeśli naprawdę jesteś szalony, aby uniknąć używania X11, możesz nawet zmniejszyć ramkę graniczną obrazu z wiersza poleceń, używając eps2epspolecenia Ghostscript :

$ eps2eps myimage.eps myimage-bb.eps

Przetestowałem to i działa świetnie. Jednak osobiście uważam, że łatwiej jest po prostu korzystać z Inkscape.

hackerb9
źródło
+1 twoja linia poleceń usuwa cały tekst .. ale czy wiesz, jak również usuwać wszystkie obrazy? Szukam rozwiązania, w którym pozostała tylko grafika wektorowa :)
clarkk
Czy to ci odpowiada? cat foo.eps | sed '/^8 dict dup begin$/,/^Q$/ c Q' > nobitmaps.eps
hackerb9
1
ale czy można wtedy sprawdzić, czy plik eps ma nawet grafikę wektorową? :)
clarkk
1
Podejrzewam, że możesz użyć eps2eps Ghostscript do destylacji go do najmniejszego obwiedni i sprawdzenia, czy jest całkowicie pusty. Ale to zaczyna być nowe pytanie. Zapytaj i jestem pewien, że jeśli nie odpowiem, ktoś to zrobi.
hackerb9
1
@ hackerb9 dzięki, teraz eps jest czytelny, ale obraz ma naprawdę niską gęstość, a część tekstu nadal pozostaje wokół niego. Plik pdf jest tutaj , a obraz jest na stronie 7
rtrtrt