Wie kann ich eine PDF-Datei in Ebenen aufteilen?

1673
Benjamin Tamási

Ich habe eine große PDF-Datei mit einer Karte. Die PDF-Datei wurde wahrscheinlich mit AutoCAD erstellt.

Das Bild besteht aus einer farbigen Rasterkarte und einem Vektor mit Linien oben auf der Karte. (Straßenlinien etc.)

Ich muss mit dem Raster und dem Vektor getrennt arbeiten. Wenn ich es in Photoshop importiere, wird nur eine Ebene angezeigt. Wenn ich die Registerkarte "Ebenen" in Adobe PDF Reader auswähle, wird auch nur eine Ebene angezeigt. Ich bin jedoch sicher, dass es mehrere Ebenen gibt, denn wenn die Datei gerendert wird, wird zuerst die Karte im Hintergrund gezeichnet, und erst nachdem der Vektor oben gezeichnet wurde. Wenn ich schnell genug bin, kann ich "Hintergrund drucken" verwenden, um das Hintergrundraster zu speichern. Ich brauche eine zuverlässigere Methode, um dieses Bild und auch den Vektor zu extrahieren.

Kann ich ein OpenSource-Tool wie Ghostscript verwenden, um die PDF-Datei in die wichtigsten Teile wie Text, Raster, Vektordaten zu unterteilen? Und sie alle in einen Ordner gelegt?

1

2 Antworten auf die Frage

0
LPChip

Sie sollten mit der Autocad-Version arbeiten oder sie als separate Layer exportieren. Nach dem Export in eine PDF-Datei wird es zu einem Bitmap-Bild, das Sie nicht als separate Ebenen bearbeiten können.

Ich habe keine Autocad-Version: D Wenn ja, oder natürlich würde ich das verwenden. Benjamin Tamási vor 8 Jahren 0
Es wird kein Bitmap-Bild, denn wenn ich es mit Adobe-Reader öffne, kann ich, wenn ich schnell genug bin, die erste Ebene aufnehmen, die ohne die zweite mit einem Druckbildschirm gerendert wird. :) Also kann es keine Bitmap sein ... Bitmaps machen das nicht. Benjamin Tamási vor 8 Jahren 0
0
Nikhil VJ

Ich habe mit Inkscape eine manuelle Lösung gefunden. Ich suche nach Möglichkeiten, sie zu automatisieren.

  1. Öffnen Sie die PDF-Datei in Inkscape (auch ich hatte eine Karte wie Ihre). Gehen Sie mit den Standard-Importeinstellungen.
  2. Menü> Objekt> Objekte. (und nicht Ebenen)
  3. Es öffnet sich ein Objektfenster. Das ist wie bei Schichten. Wir können auf die linken Spalten klicken, um die Sichtbarkeit umzuschalten, sie zu sperren usw.
  4. Es gibt dort ein Element, aber es gibt einen Pfeil, der darauf hinweist, dass möglicherweise mehr vorhanden ist. Ich klicke darauf und es werden mehrere Unterelemente angezeigt.
  5. Wenn ich auf jedes Objekt klicke, werden auf dem Bild die verschiedenen Objekte ausgewählt. Beim Umschalten der Sichtbarkeit (Schließen des Auges) verschwindet jedes Objekt aus dem Bild.
  6. Nachdem ich all das versteckt habe, was ich nicht wollte, gehe ich zu Datei> PNG-Bild exportieren. Ich musste die Größe und DPI erhöhen, um eine gute Auflösung zu erhalten. Die Standardeinstellung hat ein kleines Miniaturbild.
  7. Ich habe jetzt die Karte, die ich brauchte.

Ich lese die Dokumentation von Inkscape nach und werde hier aktualisieren, wenn ich einen Weg finde, diesen Prozess zu automatisieren. [EDIT] Es wurde eine Befehlszeile gefunden.

inkscape -z -i g2846 -j -D -d 300 test3.pdf -e 3.png 

Referenzdokument: https://inkscape.org/sk/doc/inkscape-man.html

Erklärung der Parameter:

  • -z : no gui, führe inkscape nur in der Kommandozeile aus
  • -i g2846: Auswählen der spezifischen Gruppen- / Layer-ID zum Exportieren. Ich habe diese ID / Label durch die oben genannten manuellen Schritte in der Inkscape-Gui kennengelernt.
  • -j : alle anderen Ebenen usw. im Export ausblenden
  • -D: Behalten Sie die Bemaßung des Exportbildes der gesamten Zeichnung / des Dokuments bei und behalten Sie die Position des extrahierten Objekts bei. (Dies ist wichtig für den Fall, dass das Originalobjekt gedreht / verzerrt wird und die Ausgabe nicht das Original sein soll, oder wenn Sie mehrere Ebenen extrahieren und ihre Positionen auf der Leinwand beibehalten müssen.)
  • -d 300 : 300 DPI: Die Standardeinstellung machte die Ausgabe png zu verlustig, diese Einstellung hielt alles an meinem Ende gut.
  • test3.pdf : meine Eingabe pdf
  • -e 3.png : Export als PNG und Dateiname.

Leider können wir momentan nur ein Objekt / eine Ebene extrahieren. Inkscape hat einen Fehler mit der Anforderung, mehrere Layer zuzulassen, eingereicht: Erlauben Sie mehrere Optionen -i (--export-id = ID) .

[BEARBEITEN] Eine weitere Problemumgehung, wenn Sie mehrere (aber nicht alle) Ebenen verwenden möchten: Verwenden Sie den oben angegebenen inkscapeBefehl, um die einzelnen Ebenen wie 1.png, 2.png, 3.png folgt anzuzeigen : Führen Sie dann den folgenden Befehl von imagemagick aus :

$ convert -page +0+0 1.png \ -page +0+0 2.png \ -page +0+0 3.png \ -layers merge +repage merged.png 

Das sollte die Ebenen miteinander verschmelzen merged.png.