Как извлечь векторы из файла PDF?


51

У меня есть файл PDF с векторными изображениями внутри. (Я скачал его из интернета, поэтому у меня нет оригиналов.)

Я хочу извлечь векторы, чтобы я мог наложить их на некоторые другие изображения; используйте их в печатных СМИ или на веб-сайте.

Как извлечь конкретные векторы из PDF-файла?

Возможно, есть какое-нибудь программное обеспечение, которое может извлекать векторы из PDF-файла? (Желательно бесплатно.)


@slhck: я имел в виду векторную графику . Я использовал Inkscape, и он работает как положено. Не могли бы вы оставить свой комментарий как ответ, чтобы я мог отметить его как принятый?
Девдатта Тенгше

Ответы:


49

Вы можете использовать Inkscape - бесплатное кроссплатформенное приложение с векторной графикой с открытым исходным кодом. Это позволит вам импортировать файлы PDF и выбирать встроенные векторы. Затем вы можете редактировать их и обрабатывать, как вам нравится.

Подробная документация доступна на веб-сайте Inkscape.

Обратите внимание, что в Linux для этого требуется X11. Существует также родная версия Windows.

Кроме того, вы можете попробовать Adobe Illustrator (платное программное обеспечение).


2
В Linux для него, как и в случае с X11, существует также родная версия Windows (которую я просто использовал для извлечения векторного рисунка из PDF).
Марк Лейтон Фишер

23

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

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

Затем вы можете использовать ваш любимый векторный редактор (мой Inkscape), чтобы изолировать изображение от текста.

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