Extraire des images d'arrière-plan d'un fichier PDF?

8

J'ai un fichier PDF contenant les plans du bâtiment dans lequel je travaille, ici:

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

Les fichiers source d'origine ont été perdus et on m'a demandé d'extraire les images de la carte, de préférence sans le texte et les icônes qui ont été superposés dessus. Cela s'est avéré extrêmement difficile.

Jusqu'à présent, j'ai essayé les programmes GUI suivants:

  • Adobe Reader: me permet de sélectionner du texte, mais pas les images d'arrière-plan
  • FoxIt PDF Viewer: permet de sélectionner du texte, mais pas les images d'arrière-plan
  • XPDF sur Ubuntu 10.10: permet de sélectionner le texte, mais pas les images d'arrière-plan

Et aussi les programmes de ligne de commande suivants:

  • pdfimages: extrait très bien les icônes indiquant les salles de bain, mais pas les images d'arrière-plan
  • pdftohtml: identique à pdfimages, en plus il fait un document HTML mal balisé
  • pdfextract: identique à pdfimages
  • convertir: images enregistrées avec succès, mais avec le texte gravé en elles

J'ai même essayé d'ouvrir le PDF manuellement dans un éditeur de texte et d'extraire les objets de flux en les collant dans un nouveau fichier et en l'enregistrant avec une extension .jpg, .png ou .bmp (chacun à son tour). Compte tenu du peu que je connais sur la structure interne des fichiers PDF, il n'est pas surprenant que cela n'ait pas fonctionné.

Alors ... est-il possible de récupérer les images de la carte à partir de cette chose sans obtenir le texte et les icônes?

Will Martin
la source
La façon dont je résout habituellement ce genre de tâche: (1) Utilisez qpdfpour convertir les parties binaires en ASCII autant que possible. (2) Utilisez un éditeur de texte pour rendre tout le texte invisible que je ne veux pas voir à l'écran ou sur les impressions (peut être réalisé facilement et sans endommager la table XRef en basculant le drapeau invisible ). (3) Redistillez le résultat avec Ghostscript pour réduire sa taille autant que possible. - Malheureusement, votre fichier n'est plus téléchargeable pour illustrer la procédure ...
Kurt Pfeifle

Réponses:

7

Vous pouvez télécharger la bibliothèque XPDF sur http://www.foolabs.com/xpdf/download.html pour Linux et Windows. Ensuite , exécutez pdfimages -j input.pdf outputet vous devriez obtenir output-000.jpg, output-001.jpgetc. De plus, consultez http://linuxcommand.org/man_pages/pdfimages1.html pour plus d' options d'utilisation.

mybluevan
la source
1
Correction, on dirait que l'image est un graphique vectoriel directement intégré au PDF. Essayez de l'ouvrir dans quelque chose comme Inkscape ou Adobe Illustrator qui gère les graphiques vectoriels.
mybluevan
Ah HA! Les cartes sont des graphiques vectoriels - pas étonnant que j'aie autant de mal! Inkscape semble l'avoir très bien ouvert et je peux le modifier à mon gré. Merci!
Will Martin
2

Ok, après avoir dérangé avec cela pendant 5 minutes, mon analyse est que le PDF est encore plus étrange que je ne le pensais à l'origine, et cela dit quelque chose.

Vous ne savez pas quel est votre budget, mais avec Acrobat Pro Extended 9, vous pouvez utiliser:

A. Outils, édition avancée, outil de retouche de texte

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

B. Outils, édition avancée, outil d'objets de retouche

-Sélectionnez l'objet (vous pouvez en obtenir la plupart, mais pas tous (par exemple, les icônes des ordinateurs des élèves ne peuvent pas être sélectionnées), puis supprimez

Voici à quoi ressemblait la page 1 après un nettoyage rapide: http://dl.dropbox.com/u/7434256/p1test.pdf

Craig H
la source
Bizarre, c'est l'euphémisme. Je ne connais pas l'historique de ce fichier, mais Acrobat Pro 8 nous a posé des problèmes. Inkscape a cependant fait l'affaire, Dieu merci. Maintenant, pour convertir tout cela en quelques SVG appropriés à partir desquels nous pouvons générer des graphiques raster ...
Will Martin
1
Le travail que vous avez fait sur le PDF d'origine (qui, malheureusement, n'est plus disponible pour moi) n'est pas le meilleur. Votre fichier est toujours ~ 3 Moctets. Il contient beaucoup + beaucoup d'objets non utilisés. Il contient même une instance de l' /AAopérateur (pour Action automatique ), ce qui en fait un fichier PDF potentiellement dangereux. Ghostscript a pu le réduire à 60 koctets sans perdre aucun de son contenu visible. (Les métadonnées contenues dans le fichier s'étalent sur 17 objets différents. Les métadonnées suggèrent également qu'il y a 17 révisions / modifications différentes de ce fichier depuis sa création le 2011-01-18.)
Kurt Pfeifle
@pipitas Je suis content d'avoir vérifié à nouveau, il s'avère qu'Apache était en panne sur ce serveur. Le PDF d'origine est à nouveau disponible. C'est quand même ennuyeux. J'ai depuis découvert que les cartes ont été générées à partir de fichiers AutoCAD DXF, ce qui donne des graphiques vectoriels très moche. Il y a des centaines de chemins individuels dans chaque carte, chacun une seule ligne avec deux points d'extrémité. Cela a probablement rendu plus facile pour un architecte de modifier des sections individuelles de mur ou autre chose, mais c'est une douleur dans le cul pour quoi que ce soit d'autre.
Will Martin
@ Will Martin: Ouch !, c'est un fichier PDF assez volumineux contenant beaucoup de mises à jour de fichiers cachées internes (et donc: des ordures du point de vue de l'utilisateur). - 16 pages sur 16 Mo sont plutôt "lourds" pour des graphiques vectoriels simples. Au moins 16 couches différentes ("Contenu optionnel" dans le langage PDF), une pour chaque page. Je préfère ne pas parcourir ce bordel avec un éditeur de texte seulement ...
Kurt Pfeifle
2
@pipitas: Merci - juste points. Bien que je ne décrirais pas ce que j'ai fait comme un "travail" - je montrais juste (après quelques minutes de jeu) que c'était possible avec Acrobat. Garantie de remboursement et tout ça. ;)
Craig H
1

Prenez le PDF créé par Craig H et optimisez-le un peu en l'exécutant via Ghostscript. Sous Windows, la ligne de commande est:

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

Sous Linux / Unix / Mac OS X, procédez comme suit:

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

Cela réduira la taille du fichier de 3 000 Ko à environ 60 Ko sans perdre de contenu. Ensuite, l'importer dans Inkscape (ou InDesign, Illustrator, ...) devrait être beaucoup plus rapide ....

Kurt Pfeifle
la source
1

... vous pouvez essayer Photoshop. Il lit les fichiers PDF, et il est «possible» qu'il provienne de PS et ait peut-être encore les couches ... mais c'est un plan très long.

aart12
la source
0

Dans un environnement Linux, j'ai utilisé pdfmod pour extraire toutes les images en une seule fois. Voir https://wiki.gnome.org/Apps/PdfMod ou, pour les utilisateurs d'Ubuntu, https://apps.ubuntu.com/cat/applications/pdfmod/

Pour le télécharger et l'installer dans Ubuntu, il suffit de taper sudo apt-get install pdfmod.

  • Démarrez l'interface graphique pdfmod (tapez dans pdfmodle tableau de bord ou le terminal de ligne de commande)
  • Ouvrez le document PDF
  • Sélectionnez toutes les pages (ou celles dont vous souhaitez extraire les images)
  • L'élément de menu Édition présentera la possibilité d'extraire autant d'images qu'elles peuvent être extraites dans la plage sélectionnée ( export n images, avec n le nombre approprié). Vous pouvez également accéder à cette commande en survolant avec votre souris sur la sélection et en activant le menu local (clic droit pour les droitiers).
  • Une fois que vous allez de l'avant, une nouvelle fenêtre s'ouvrira où vous sélectionnez l'emplacement dans lequel enregistrer les images.

J'espère que cela t'aides.

XavierStuvw
la source
Veuillez lire Comment puis-je recommander un logiciel pour obtenir des conseils sur la façon de recommander un logiciel. Fournissez plus qu'un simple lien, par exemple, ainsi que des informations supplémentaires sur le logiciel lui-même, et comment il peut être utilisé pour résoudre le problème dans la question. Vous pouvez même inclure des exemples de lignes de commande.
DavidPostill
@DavidPostill. Merci de l'avoir signalé. C'est fait, je crois.
XavierStuvw
Beaucoup mieux ...;)
DavidPostill
Maintenant, je sais ce que je peux exiger des réponses à mes messages :-)
XavierStuvw
-1

Ouvrez le document sur votre écran, zoomez sur l'image pour la rendre aussi grande que possible mais tout est toujours visible. Appuyez sur alt + prnt scrn (ou l'équivalent sur votre système d'exploitation) et il devrait prendre une capture d'écran du programme. Maintenant, ouvrez la peinture ou votre éditeur d'image préféré (Photoshop, Gimp, etc.) collez l'image et recadrez tout ce que vous ne voulez pas.

Will Gunn
la source
Cela inclut également les icônes qui se trouvent sur l'image d'arrière-plan dans les images capturées, et il utilise la résolution de l'écran. Il doit y avoir un meilleur moyen.
Zachiel du