Hintergrundbilder aus einer PDF-Datei extrahieren?

13976
Will Martin

Ich habe eine PDF-Datei mit Karten des Gebäudes, in dem ich arbeite, hier:

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

Die ursprünglichen Quelldateien sind verloren gegangen, und ich wurde gebeten, die Kartenbilder zu extrahieren, vorzugsweise ohne den Text und die überlagerten Symbole. Das hat sich als ärgerlich erwiesen.

Bisher habe ich folgende GUI-Programme ausprobiert:

  • Adobe Reader: Ermöglicht die Auswahl von Text, nicht jedoch der Hintergrundbilder
  • FoxIt PDF Viewer: Ermöglicht die Auswahl von Text, nicht jedoch der Hintergrundbilder
  • XPDF unter Ubuntu 10.10: Mit mes können Sie Text auswählen, nicht jedoch die Hintergrundbilder

Und auch die folgenden Befehlszeilenprogramme:

  • pdfimages: extrahiert die Symbole, die auf Badezimmer hinweisen, aber nicht die Hintergrundbilder
  • pdftohtml: Wie pdfimages, außerdem wird das HTML-Dokument schlecht markiert
  • pdfextract: wie bei pdfimages
  • convert: erfolgreich gespeicherte Bilder, jedoch mit dem eingebrannten Text

Ich habe sogar versucht, die PDF-Datei manuell in einem Texteditor zu öffnen und die Stream-Objekte zu extrahieren, indem Sie sie in eine neue Datei einfügen und mit der Erweiterung .jpg, .png oder .bmp speichern (jeweils einzeln). Wenn man bedenkt, wie wenig ich über die interne Struktur von PDF-Dateien weiß, ist es kein Wunder, dass dies nicht funktioniert hat.

Also ... gibt es eine Möglichkeit, die Kartenbilder von diesem Ding abzurufen, ohne auch den Text und die Symbole zu erhalten?

8
So löse ich normalerweise diese Art von Aufgabe: (1) Verwenden Sie "qpdf", um die binären Teile so weit wie möglich in ASCII zu konvertieren. (2) Verwenden Sie einen Texteditor, um den gesamten Text unsichtbar zu machen, den ich nicht auf dem Bildschirm oder in Ausdrucken sehen möchte (dies ist leicht und ohne Beschädigung der XRef-Tabelle durch Umschalten der Markierung * invisible * möglich). (3) Destilliere das Ergebnis erneut mit Ghostscript, um seine Größe so weit wie möglich zu reduzieren. - Leider kann Ihre Datei nicht mehr heruntergeladen werden, um den Vorgang zu veranschaulichen ... Kurt Pfeifle vor 13 Jahren 0

6 Antworten auf die Frage

6
mybluevan

Sie können die XPDF-Bibliothek unter http://www.foolabs.com/xpdf/download.html für Linux und Windows herunterladen . Dann laufen pdfimages -j input.pdf outputund Sie sollten erhalten output-000.jpg, output-001.jpgusw. Auch Besuche http://linuxcommand.org/man_pages/pdfimages1.html für weitere Nutzungsmöglichkeiten.

Die Korrektur sieht aus, als wäre das Bild eine Vektorgrafik, die direkt in die PDF-Datei eingebettet ist. Versuchen Sie es in etwas wie Inkscape oder Adobe Illustrator zu öffnen, das Vektorgrafiken verarbeitet. mybluevan vor 13 Jahren 1
Ah HA! Die Karten sind Vektorgrafiken - kein Wunder, dass ich solche Probleme hatte! Inkscape scheint es gut geöffnet zu haben, und ich kann es nach meinem Herzen bearbeiten. Vielen Dank! Will Martin vor 13 Jahren 0
2
Craig H

Ok, nachdem ich 5 Minuten damit herumgespielt habe, ist meine Analyse, dass PDF noch seltsamer ist, als ich ursprünglich dachte, und das sagt etwas.

Sie wissen nicht, wie hoch Ihr Budget ist, aber mit Acrobat Pro Extended 9 können Sie Folgendes verwenden:

A. Extras, Erweiterte Bearbeitung, Touchup-Textwerkzeug

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

B. Extras, Erweiterte Bearbeitung, Touchup-Objektwerkzeug

-Wählen Sie das Objekt aus (Sie können die meisten, aber nicht alle davon erhalten (z. B. Symbole für Schülercomputer können nicht ausgewählt werden), und dann löschen

So sah Page 1 nach einer schnellen Bereinigung aus: http://dl.dropbox.com/u/7434256/p1test.pdf

Komisch ist Untertreibung. Ich kenne die Geschichte dieser Datei nicht, aber Acrobat Pro 8 hat uns Probleme bereitet. Inkscape gelang es jedoch, Gott sei Dank. Um es jetzt in einige richtige SVGs umzuwandeln, können wir Rastergrafiken aus ... Will Martin vor 13 Jahren 0
Die Arbeit, die Sie auf dem Original-PDF (das mir leider nicht mehr zur Verfügung steht) erledigt haben, ist nicht die beste. Ihre Datei ist noch ~ 3 MByte. Es enthält Lose + viele nicht verwendete Objekte. Es enthält sogar eine Instanz des `/ AA`-Operators (für * Automatic Action *), wodurch es zu einer möglicherweise gefährlichen PDF-Datei wird. Ghostscript konnte es auf 60 kByte reduzieren, ohne dabei sichtbaren Inhalt zu verlieren. (Die in der Datei enthaltenen Metadaten erstrecken sich auf 17 verschiedene Objekte. Die Metadaten legen außerdem nahe, dass es 17 verschiedene Revisionen / Änderungen dieser Datei gibt, seit sie am 18.01.2011 erstellt wurden.) Kurt Pfeifle vor 13 Jahren 1
@pipitas Ich bin froh, dass ich das nochmal überprüft habe. Es stellte sich heraus, dass Apache auf diesem Server nicht verfügbar war. Das Original-PDF ist wieder verfügbar. Es ist immer noch nervig. Ich habe seitdem herausgefunden, dass die Karten aus AutoCAD-DXF-Dateien erstellt wurden, die zu hässlichen Vektorgrafiken führen. Es gibt Hunderte von individuellen Pfaden in jeder Karte, jeder eine einzelne Linie mit zwei Endpunkten. Dies hat es wahrscheinlich für einen Architekten einfacher gemacht, einzelne Wandabschnitte oder was auch immer zu verändern, aber es ist ein Schmerz für alles andere. Will Martin vor 13 Jahren 0
@ Will Martin: Autsch !, das ist eine ziemlich große PDF-Datei, die viele interne, verborgene Datei-Updates enthält (und daher: Müll aus Benutzersicht). - 16 Seiten auf 16 MByte sind für einfach aussehende Vektorgrafiken eher "schwer". Mindestens 16 verschiedene Ebenen ("Optionaler Inhalt" in PDF-Sprache), eine für jede Seite. Ich möchte dieses Chaos nicht nur mit einem Texteditor durchgehen ... Kurt Pfeifle vor 13 Jahren 0
@pipitas: Danke - faire Punkte. Obwohl ich meine Arbeit nicht als "Job" bezeichnen würde, demonstrierte ich (nach ein paar Minuten herumspielen), dass dies mit Acrobat möglich ist. Geld-zurück-Garantie und das alles. ;) Craig H vor 13 Jahren 2
1
Kurt Pfeifle

Nehmen Sie das von Craig H erstellte PDF und optimieren Sie es ein wenig, indem Sie es durch Ghostscript laufen lassen. Unter Windows lautet die Befehlszeile:

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

Unter Linux / Unix / Mac OS X:

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

Dadurch wird die Dateigröße von 3.000 kByte auf etwa 60 kByte reduziert, ohne dass Inhalt verloren geht. Dann könnte der Import in Inkscape (oder InDesign, Illustrator, ...) wesentlich schneller sein.

1
aart12

... Sie könnten Photoshop ausprobieren. Es liest PDFs, und es ist "möglich", dass es aus PS stammt und möglicherweise noch die Ebenen hat ... aber es ist eine sehr lange Sicht.

0
XavierStuvw

In einer Linux-Umgebung habe ich pdfmod verwendet, um alle Bilder auf einmal zu extrahieren. Siehe https://wiki.gnome.org/Apps/PdfMod oder für Ubuntu-Benutzer https://apps.ubuntu.com/cat/applications/pdfmod/

Um es in Ubuntu herunterzuladen und zu installieren, genügt die Eingabe sudo apt-get install pdfmod.

  • Starten Sie die pdfmod-Benutzeroberfläche (geben Sie pdfmoddas Dashboard oder das Befehlszeilenterminal ein).
  • Öffnen Sie das PDF-Dokument
  • Wählen Sie alle Seiten aus (oder alle, von denen Sie die Bilder extrahieren möchten)
  • Das Menüelement Bearbeiten bietet die Option, so viele Bilder zu extrahieren, wie sie innerhalb des ausgewählten Bereichs extrahiert werden können ( export n imagesmit der entsprechenden Anzahl). Sie können auf diesen Befehl auch zugreifen, indem Sie mit der Maus auf die Auswahl zeigen und das lokale Menü aktivieren (Rechtsklick für Rechtshänder).
  • Wenn Sie damit fortfahren, wird ein neues Fenster geöffnet, in dem Sie den Speicherort für die Bilder auswählen.

Hoffe das hilft.

Bitte lesen Sie [Wie empfehle ich Software] (https://meta.superuser.com/questions/5329/how-do-i-recommend-software-in-my-answers/5330#5330), um einige Tipps zu erhalten Sie sollten Software empfehlen. Bieten Sie mehr als nur einen Link an, zum Beispiel einige zusätzliche Informationen über die Software selbst und wie sie verwendet werden können, um das Problem in der Frage zu lösen. Sie können sogar einige Beispielbefehlszeilen einfügen. DavidPostill vor 8 Jahren 0
@DavidPostill. Danke, dass Sie darauf hingewiesen haben. Fertig, glaube ich. XavierStuvw vor 8 Jahren 0
Viel besser ... ;) DavidPostill vor 8 Jahren 0
Jetzt weiß ich, was ich von Antworten auf meine Posts verlangen kann :-) XavierStuvw vor 8 Jahren 0
-1
Will Gunn

Öffnen Sie das Dokument auf Ihrem Bildschirm, vergrößern Sie das Bild, um es so groß wie möglich zu machen, aber es ist immer noch alles sichtbar. Drücken Sie alt + prnt scrn (oder das entsprechende unter Ihrem Betriebssystem) und es sollte ein Screenshot des Programms erstellt werden. Öffnen Sie nun Paint oder Ihren bevorzugten Bildeditor (Photoshop, Gimp usw.), fügen Sie das Bild ein und schneiden Sie alles heraus, was Sie nicht möchten.

Dies umfasst auch die Symbole, die sich über dem Hintergrundbild in den Screenshot-Bildern befinden, und verwendet die Bildschirmauflösung. Es muss einen besseren Weg geben. Zachiel vor 7 Jahren 0