Momentan erweitere ich unseren Faxserver. Dieser läuft unter Hylafax. Vor einiger Zeit habe ich um den Faxserver herum diverse Scripte und ein Webfrontend erstellt. Das wird nun alles ein wenig aufgehübscht. Das System ist extrem auf die Befürfnisse der Firma angepasst da es einige sehr spezielle Anforderungen gibt.

Ein Fehler der dabei immer mal wieder auftauchen kann ist, dass postscript Dateien nicht richtig erstellt werden und als Folgefehler diese nicht als Postscript versendet werden, sondern als ASCII. Nun muss man wissen, dass beispielsweise eine Postscript Datei die interpretiert 1 Seite ergibt, als ASCII (also Code) mehrere Seiten haben kann. Dazu muss nur ein kleiner Fehler in der Datei sein. Bei uns sieht das dann so aus, dass aus einem Fax von 8 Seiten schnell 400 Seiten werden. Um das zu vermeiden möchte ich innerhalb meiner Scripte nun die Seiten zählen. Dazu ist Ghostscript (gs) der Freund in schlechten Tagen.

Interessanterweise zeigt gs eine defekte Datei ebenso als quasi “ASCII” Ausdruck an und kann dem entsprechend auch die Seiten zählen. Achtung! Das ganze funktioniert bei uns, da der Header für Postscript anscheinend auch bei Fehlern korrekt ist.

Postscript sind Anweisungen, man kann sogar Funktionen innerhalb von Postscript ausführen. Diese Möglichkeit mache ich mir zu Nutze und zähle die Seiten wie folgt:

gs -q -dNODISPLAY -dBATCH -dNOPAUSE <.ps file> count.ps

Der Inhalt von count.ps sieht dabei so aus:

%!
currentpagedevice /PageCount get
(Seiten:) print == flush

Dadurch erhät man als Ausgabe “Seiten: X”.

Im Internet gibt es viele Anleitungen beispielsweise das “showpage” innerhalb eine Postscript Datei zu zählen, allerdings funktioniert das nur dann, wenn die Datei auch fehlerfrei ist. Die oben beschriebene Methode funktioniert bei fehlerfreien und korrupten Dateien (korrupt bis zu einem gewissen Grad).

PDF

Für .pdf Dateien gibt es übrigens das Tool “pdfinfo”. Dieses gibt, neben diversen anderen Informationen, auch die Seitenzahl einer .pdf Datei zurück.