PostScript Datei lesen und in Seiten zerhacken

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Es gibt schöne Module zum Einlesen von PDF Dateien. Mit pyPdf kann man z.B. ein PDF in einzelne Seiten zerhacken und jede Seite als separate PDF Datei schreiben.

Sowas möchte ich nun mit PostScript realisieren, finde aber kein passendes Python-Modul dafür. Ich brauche keinen kompletten PS-Interpreter, sondern nur eine einzige Funktion: `getPage(number)` heißt die bei pyPdf -> also aus PostScript den Code-Teil einer Seite extrahieren. Dafür braucht man sicherlich noch `getNumPages()`, damit man auch weiß wann Schluss ist.

Das könnte man ggf. auch selber realisieren, wenn man sich mit PS im Detail auskennen würde. Tu ich aber nicht, daher frage ich erstmal ob's ein Modul dafür gibt. Was ich bislang gefunden habe ist pypsg. Damit kann man anscheinend aber nur PS erzeugen und nicht lesen.

Weiß jmd. mehr?
BlackJack

PostScript ist eine Programmiersprache, d.h. heisst Du brauchst letztendlich doch einen Interpeter dafür, weil Seiten zum Beispiel auch in einer Schleife erzeugt werden können.
LivingOn
User
Beiträge: 33
Registriert: Montag 11. August 2008, 07:53

Du könntest die PostScript-Datei aber auch erst in ein pdf umwandeln (leider auch nur mit Hilfe eines Interpreters, z.B. Ghostscript) und dann mit pyPdf zerlegen.

Stichwort: ps2pdf (google sollte helfen;)
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

BlackJack hat geschrieben:PostScript ist eine Programmiersprache, d.h. heisst Du brauchst letztendlich doch einen Interpeter dafür, weil Seiten zum Beispiel auch in einer Schleife erzeugt werden können.
Und das ist Standard-PostScript? Ich kenne sowas von PPML oder VIPP, das sind aufgebohrte PostScript-Derivate für variablen Datendruck. Wusste nicht, das Standard-PostScript das auch kann.
LivingOn hat geschrieben:Du könntest die PostScript-Datei aber auch erst in ein pdf umwandeln (leider auch nur mit Hilfe eines Interpreters, z.B. Ghostscript) und dann mit pyPdf zerlegen.

Stichwort: ps2pdf (google sollte helfen;)
Das ist leider nicht praktikabel, weil es zahlreiche unsaubere Methoden gibt, PDF Daten zu erzeugen. Letzlich möchte ich ja auch wieder RAW PostScript Code an den Drucker schicken -> bei einer Konvertierung zwischendrin kann viel schief gehen.

Ich würde gern einen PostScript-Druckertreiber nehmen, der eine .ps Datei in ein vordefiniertes Verzeichnis "druckt". Mein Python-Tool überwacht diesen Ordner, liest neue .ps Dateien ein, zerhackt sie in deren Einzelseiten (anhand bestimmter Kriterien) und druckt diese Einzelseiten auf verschiedenen Druckern bzw. mit verschiedenen Einstellungen aus.

Alternative: ich nehme einen (guten) PDF-Druckertreiber und mache das gleiche. Das Problem dabei: am Ende schicke ich RAW PostScript zum Drucker -> also müsste ich erst noch PDF in PS wandeln. Das ist zwar sicherer als umgekehrt (wenn der PDF Druckertreiber sauber arbeitet), aber auch hierfür kenne ich kein Python-Modul.

Lösungsvorschlag wäre, dass ich sowohl einen PDF als auch einen PostScript-Druckertreiber voraussetze. Die Benutzer drucken über den PDF-Druckertreiber. Mittels pyPdf zerlege ich das PDF in Einzelseiten, speichere jede als temporäre Datei ab und wandle diese Datei wiederum über den PostScript-Treiber in eine .ps Datei, die ich binär einlesen und an den Drucker schicken kann.

Dabei fällt mir ein: Kann man unter Windows einen Drucker verstecken, so dass Benutzer ihn nicht nutzen können?
Antworten