Як витягти вектори з PDF-файлу?


51

У мене є PDF-файл із векторними зображеннями всередині нього. (Я завантажив його з Інтернету, тому у мене немає оригіналів.)

Я хочу витягти вектори, щоб я міг накласти їх на деякі інші зображення; використовувати їх у друкованих засобах масової інформації або на веб-сайті.

Як отримати конкретні вектори з PDF-файлу?

Чи є, можливо, якесь програмне забезпечення, яке може витягти вектори з PDF-файлу? (Переважно безкоштовно.)


@slhck: Я мав на увазі векторну графіку . Я використовував Inkscape, і він працює як очікувалося. Чи можете ви, будь ласка, поставити свій коментар як відповідь, щоб я міг позначити його як прийнятий?
Devdatta Tengshe

Відповіді:


49

Ви можете використовувати Inkscape , який є безкоштовним, відкритим кодом та крос-платформним векторною графікою. Це дозволить вам імпортувати PDF-файли та вибрати вбудовані вектори. Потім ви можете їх редагувати та обробляти як завгодно.

Детальна документація доступна на веб-сайті Inkscape.

Зауважте, що для Linux для цього потрібен X11. Також є рідна версія Windows.

Крім того, ви можете скористатися програмою Adobe Illustrator (платне програмне забезпечення).


2
Для Linux це як би вимагає X11 - також є рідна версія Windows (яку я просто добре використав для витягування векторного малюнка з PDF).
Марк Лейтон Фішер

23

Хоча Inkscape - це дивовижний спосіб зробити це, для тих, хто не має X11, ви також можете витягти окремі сторінки PDF у форматі SVG, використовуючи poppler-утиліти в командному рядку. Наприклад, витягнути лише сторінку 30:

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

Потім ви можете використовувати улюблений векторний редактор (мій - Inkscape), щоб виділити зображення з тексту.

Крім того, якщо ви жорстокий користувач командного рядка, ви можете витягнути його до EPS (інкапсульований постскрипт) і використати 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 ваш командний рядок знімає весь текст .. але чи знаєте ви, як також знімати всі зображення? Я шукаю рішення, де залишиться лише векторна графіка :)
clarkk

Це працює для вас? cat foo.eps | sed '/^8 dict dup begin$/,/^Q$/ c Q' > nobitmaps.eps
hackerb9

1
але чи можна тоді перевірити, чи має файл eps навіть векторну графіку? :)
кларк

1
Я припускаю, що ви можете використовувати eps2eps Ghostscript, щоб перегнати його до найменшого обмежувального поля і побачити, чи він повністю порожній. Але це починає ставати новим питанням. Сміливо запитайте, і я впевнений, що якщо я не відповім, хтось зробить це.
hackerb9

1
@ hackerb9 спасибі, тепер eps читабельна, але зображення знаходиться в дуже низькій щільності, а текст залишається навколо нього. Pdf тут , а зображення знаходиться на сторінці 7
rtrtrt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.