¿Extraer imágenes de fondo de un archivo PDF?

8

Tengo un archivo PDF que contiene mapas del edificio en el que trabajo, aquí:

http://www.libsys.und.edu/dev/FloorPlans_All.pdf

Los archivos de origen originales se han perdido, y me han pedido que extraiga las imágenes del mapa, preferiblemente sin el texto y los iconos que se han superpuesto sobre ellos. Esto ha resultado molestamente difícil.

Hasta ahora, he probado los siguientes programas GUI:

  • Adobe Reader: me permite seleccionar texto, pero no las imágenes de fondo
  • FoxIt PDF Viewer: me permite seleccionar texto, pero no las imágenes de fondo
  • XPDF en Ubuntu 10.10: permite seleccionar texto, pero no las imágenes de fondo

Y también los siguientes programas de línea de comandos:

  • pdfimages: extrae los iconos que indican que los baños están bien, pero no las imágenes de fondo
  • pdftohtml: igual que pdfimages, además hace un documento HTML mal marcado
  • pdfextract: igual que pdfimages
  • convertir: imágenes guardadas con éxito, pero con el texto grabado en ellas

Incluso intenté abrir el PDF manualmente en un editor de texto y extraer los objetos de la secuencia pegándolos en un nuevo archivo y guardándolo con una extensión .jpg, .png o .bmp (cada uno a su vez). Teniendo en cuenta lo poco que sé sobre la estructura interna de los archivos PDF, no sorprende que esto no haya funcionado.

Entonces ... ¿hay alguna manera de recuperar las imágenes del mapa de esta cosa sin obtener también el texto y los iconos?

Will Martin
fuente
La forma en que generalmente resuelvo este tipo de tarea: (1) Se usa qpdfpara convertir las partes binarias a ASCII en la medida de lo posible. (2) Use un editor de texto para hacer invisible todo el texto que no quiero ver en la pantalla o en las impresiones (se puede lograr fácilmente y sin dañar la tabla XRef al alternar la bandera invisible ). (3) Vuelva a destilar el resultado con Ghostscript para reducir su tamaño tanto como sea posible. - Desafortunadamente, su archivo ya no se puede descargar para demostrar el procedimiento ...
Kurt Pfeifle

Respuestas:

7

Puede descargar la biblioteca XPDF desde http://www.foolabs.com/xpdf/download.html para Linux y Windows. Luego, ejecute pdfimages -j input.pdf outputy debería obtener output-000.jpg, output-001.jpgetc. Además, visite http://linuxcommand.org/man_pages/pdfimages1.html para obtener más opciones de uso.

mybluevan
fuente
1
Corrección, parece que la imagen es un gráfico vectorial directamente incrustado en el PDF. Intente abrirlo en algo como Inkscape o Adobe Illustrator que maneja gráficos vectoriales.
mybluevan
Ah HA! Los mapas son gráficos vectoriales, ¡no es de extrañar que haya tenido tantos problemas! Inkscape parece haberlo abierto bien, y puedo editarlo al contenido de mi corazón. ¡Gracias!
Will Martin
2

Ok, después de jugar con esto durante 5 minutos, mi análisis es que PDF es aún más extraño de lo que pensaba originalmente, y eso es algo que dice.

No estoy seguro de cuál es su presupuesto, pero con Acrobat Pro Extended 9, puede usar:

A. Herramientas, edición avanzada, herramienta de retoque de texto

-Select All
-Right click, Properties
-Text tab
-Select a standard font (e.g. Arial), close
-Hit Delete

B. Herramientas, edición avanzada, herramienta de retoque de objetos

-Seleccione el objeto (puede obtener la mayoría, pero no todos) (por ejemplo, no se pueden seleccionar los iconos de las computadoras de los estudiantes), luego elimine

Así es como se veía la página 1 después de una limpieza rápida: http://dl.dropbox.com/u/7434256/p1test.pdf

Craig H
fuente
Extraño es quedarse corto. No conozco el historial de este archivo, pero Acrobat Pro 8 nos dio problemas. Sin embargo, Inkscape hizo el truco, gracias a Dios. Ahora para convertirlo todo en algunos SVG adecuados a partir de los cuales podemos generar gráficos de trama ...
Will Martin
1
El trabajo que ha realizado en el PDF original (que, lamentablemente, ya no está disponible para mí) no es el mejor. Su archivo sigue siendo ~ 3 MByte. Contiene lotes + lotes de objetos no utilizados. Incluso contiene una instancia del /AAoperador (para Acción automática ) que lo convierte en un archivo PDF potencialmente peligroso. Ghostscript pudo reducirlo a 60 kByte sin perder nada de su contenido visible. (Los metadatos contenidos en el archivo se extienden sobre 17 objetos diferentes. Los metadatos también sugieren que hay 17 revisiones / modificaciones diferentes de ese archivo desde su creación el
18 de
@pipitas Me alegro de haber comprobado esto nuevamente, resulta que Apache estaba inactivo en ese servidor. El PDF original está disponible nuevamente. Sin embargo, sigue siendo molesto. Desde entonces descubrí que los mapas se generaron a partir de archivos DXF de AutoCAD, lo que genera gráficos vectoriales muy feos. Hay cientos de rutas individuales en cada mapa, cada una de una sola línea con dos puntos finales. Esto probablemente hizo que sea más fácil para un arquitecto alterar secciones individuales de la pared o lo que sea, pero es una molestia para cualquier otra cosa.
Will Martin
@Will Martin: ¡Ay! Este es un archivo PDF bastante grande que contiene muchas actualizaciones internas de archivos ocultos (y por lo tanto: basura desde el punto de vista del usuario). - 16 páginas en 16 MBytes son bastante "pesadas" para gráficos vectoriales de aspecto simple. Al menos 16 capas diferentes ("Contenido opcional" en lenguaje PDF), una para cada página. Prefiero no meterme en este lío solo con un editor de texto ...
Kurt Pfeifle
2
@pipitas: Gracias, puntos justos. Aunque no describiría lo que hice como un "trabajo", solo estaba demostrando (después de un par de minutos jugando) que era posible con Acrobat. Garantía de devolución de dinero y todo eso. ;)
Craig H
1

Tome el PDF creado por Craig H y optimícelo un poco ejecutándolo a través de Ghostscript. En Windows, la línea de comando es:

gswin32c.exe ^
   -o p1test-gs-optimized.pdf ^
   -sDEVICE=pdfwrite ^
   -dPDFSETTIINGS=/prepress ^
    p1test.pdf

En Linux / Unix / Mac OS X, haga lo siguiente:

gs \
   -o p1test-gs-optimized.pdf \
   -sDEVICE=pdfwrite \
   -dPDFSETTIINGS=/prepress \
    p1test.pdf

Esto reducirá el tamaño del archivo de 3.000 kByte a aproximadamente 60 kByte sin perder contenido. Luego importarlo a Inkscape (o InDesign, Illustrator, ...) debería ser mucho más rápido ...

Kurt Pfeifle
fuente
1

... podrías probar Photoshop. Lee archivos PDF y es 'posible' que se originó en PS y posiblemente todavía tenga las capas ... pero es una posibilidad muy remota.

aart12
fuente
0

En un entorno Linux, he usado pdfmod para extraer todas las imágenes de una vez. Ver https://wiki.gnome.org/Apps/PdfMod o, para usuarios de Ubuntu, https://apps.ubuntu.com/cat/applications/pdfmod/

Para descargarlo e instalarlo en Ubuntu, es suficiente escribir sudo apt-get install pdfmod.

  • Inicie la interfaz gráfica de usuario de pdfmod (escriba pdfmoden el tablero o terminal de línea de comandos)
  • Abra el documento PDF.
  • Seleccione todas las páginas (o cualquiera de las que desee extraer las imágenes)
  • El elemento del menú Editar presentará la opción de extraer tantas imágenes como puedan extraerse dentro del rango seleccionado ( export n imagescon n el número apropiado). También puede acceder a este comando al pasar el mouse sobre la selección y activar el menú local (haga clic con el botón derecho para la mano derecha).
  • Una vez que continúe con esto, se abrirá una nueva ventana donde seleccione la ubicación para guardar las imágenes.

Espero que esto ayude.

XavierStuvw
fuente
Lea Cómo recomiendo el software para obtener algunos consejos sobre cómo debe recomendar el software. Proporcione algo más que un enlace, por ejemplo, así como información adicional sobre el software en sí y cómo se puede utilizar para resolver el problema en la pregunta. Incluso podría incluir algunas líneas de comando de ejemplo.
DavidPostill
@DavidPostill. Gracias por señalar esto. Hecho, creo.
XavierStuvw
Mucho mejor ...;)
DavidPostill
Ahora sé lo que puedo exigir de las respuestas a mis publicaciones :-)
XavierStuvw
-1

Abra el documento en su pantalla, amplíe la imagen para que sea lo más grande posible, pero todo sigue visible. Presione alt + prnt scrn (o el equivalente en su sistema operativo) y debería tomar una captura de pantalla del programa. Ahora abra paint o su editor de imágenes favorito (photoshop, gimp, etc.) pegue en la imagen y recorte todo lo que no desee.

Will Gunn
fuente
Esto también incluye los iconos que están sobre la imagen de fondo en las imágenes capturadas, además de que usa la resolución de la pantalla. Debe haber una mejor manera.
Zachiel