¿Cómo extraer vectores de un archivo PDF?

51

Tengo un archivo PDF con imágenes vectoriales dentro. (Lo descargué de Internet, por lo que no tengo ningún original).

Deseo extraer los vectores para poder superponerlos en otras imágenes; úselos en medios impresos o en un sitio web.

¿Cómo extraigo los vectores específicos del archivo PDF?

¿Existe, tal vez, algún software que pueda extraer los vectores de un archivo PDF? (Preferiblemente gratis)

Devdatta Tengshe
fuente
@slhck: quise decir gráficos vectoriales . Utilicé Inkscape, y funciona como se esperaba. ¿Puedes por favor poner tu comentario como respuesta, para que pueda marcarlo como aceptado?
Devdatta Tengshe

Respuestas:

49

Puede usar Inkscape , que es una aplicación de gráficos vectoriales multiplataforma gratuita y de código abierto. Le permitirá importar los archivos PDF y seleccionar vectores incrustados. Luego puede editarlos y procesarlos a su gusto.

La documentación detallada está disponible en el sitio web de Inkscape.

Tenga en cuenta que en Linux como requiere X11. También hay una versión nativa de Windows.

Alternativamente, es posible que desee probar Adobe Illustrator (software pago).

slhck
fuente
2
En Linux, requiere X11, también hay una versión nativa de Windows (que acabo de usar muy bien para extraer un dibujo vectorial de un PDF).
Mark Leighton Fisher
23

Si bien Inkscape es una forma increíble de hacerlo, para aquellos que carecen de X11, también puede extraer páginas individuales de un PDF en formato SVG utilizando poppler-utils en la línea de comandos. Por ejemplo, para extraer solo la página 30:

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

Luego puede usar su editor de vectores favorito (el mío es Inkscape) para aislar la imagen del texto.

Alternativamente, si eres un usuario incondicional de la línea de comandos, puedes extraer a EPS (postscript encapsulado) y usar sedpara ocultar todo el texto (que está entre las líneas BT y ET para pdftocairo). Así es cómo:

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

Y, si está realmente loco para evitar usar X11, incluso puede reducir el cuadro delimitador de la imagen desde la línea de comando usando el comando de Ghostscript eps2eps:

$ eps2eps myimage.eps myimage-bb.eps

He probado esto y funciona muy bien. Sin embargo, personalmente, me resulta más fácil usar Inkscape.

hackerb9
fuente
+1 su línea de comando elimina todo el texto ... pero ¿sabe cómo eliminar también todas las imágenes? Estoy buscando una solución donde solo queda el gráfico vectorial :)
clarkk
¿Esto funciona para tí? cat foo.eps | sed '/^8 dict dup begin$/,/^Q$/ c Q' > nobitmaps.eps
hackerb9
1
pero, ¿es posible verificar si el archivo eps tiene incluso gráficos vectoriales? :)
clarkk
1
Supongo que podría usar eps2eps de Ghostscript para destilarlo hasta su cuadro delimitador más pequeño y ver si está completamente vacío. Pero esto comienza a convertirse en una nueva pregunta. Siéntase libre de preguntar y estoy seguro de que si no respondo, alguien lo hará.
hackerb9
1
@ hackerb9 gracias, ahora el eps es legible, pero la imagen está en muy baja densidad y todavía queda algo de texto a su alrededor. El pdf está aquí , y la imagen está en la página 7
rtrtrt