Beim Entwurf neuer Prozesse und Formulare mit print2forms werden oft viele Testausdrucke benötigt, insbesondere, wenn die Formulare dynamische Inhalte enthalten. Dann muss mit verschiedenen Testdaten geprüft werden, inwieweit sich das Formular an die geänderten Druckdaten anpasst.
Dabei geht einige Zeit für die Erstellung der Ausdrucke ins Land und es entstehen Kosten für Papier und Toner/Tinte.
Ein Fortschritt wäre, wenn man sich die Ausdrucke stattdessen direkt am Rechner ansehen könnte, ohne dass tatsächlich Papier bedruckt werden müsste. 1)
Zu diesem Zweck wurde bereits vor einiger Zeit ein spezielles Hilfsprogramm p2fViewer.exe geschrieben, welches einen Netzwerkdrucker simuliert und die empfangenen Daten als PCL-Datei ablegt. Um dann diese PCL-Datei in ein Druckbild zu verwandeln, wurde in der Vergangenheit ein Programm der Firma Lincoln & Co (http://www.lincolnco.com/) verwendet (siehe auch Tip PDF- und TIFF-Datei erzeugen).
Leider hat es den Anschein, dass dieses Programm nicht mehr weiterentwickelt wird. Jedenfalls nutzt print2forms inzwischen eine ganze Reihe von PCL-Sequenzen, die nicht oder nicht korrekt dargestellt werden können. Das betrifft vor allem die neuen Schriften aus der Schriftenbibliothek, wenn es um die Kodierung UTF-8 geht, die Grundlage der Nutzung von vielen multinationalen Zeichensätzen ist.
Es musste also eine Alternative gesucht werden, damit auch die neuen Features von print2forms uneingeschränkt genutzt werden können.
Als Alternative bietet sich das Programm GhostPCL der Firma Artifex an, das für die Nutzung durch Endanwender unter der GNU Affero GPL Lizenz kostenfrei eingesetzt werden kann. 2) Bei diesem Programm handelt es sich aber lediglich um einen reinen Konverter, der aus dem PCL-Datenstrom andere Datenströme, Bilder oder PDF-Dateien erzeugt.
Man benötigt also noch irgendein anderes Programm zum Anzeigen des Druckergebnisses.
Schaut man sich die möglichen Ausgabeformate von GhostPCL an, bieten sich zwei Lösungsmöglichkeiten an:
Das naheliegendste scheint zu sein, GhostPCL aus den Druckdaten eine PDF-Datei machen zu lassen, und dann ein beliebiges auf dem Rechner bereits installiertes Programm zur Anzeige der PDF-Datei aufzurufen.
Das kann sowohl der Adobe-Reader, der Foxit-Reader oder etwa SumatraPDF sein.
Die Programme unterscheiden sich in ihrem Leistungsumfang erheblich, aber das ist im hier vorliegenden Fall nur insofern von Interesse, als es die Startzeit des Programms beeinflusst. Viel wesentlicher ist, ob die Einstellungen zur Anzeige von einem externen Skript her gesetzt werden können. Da das nur sehr eingeschränkt möglich ist, gilt eigentlich die Empfehlung, nicht den Standard-PDF-Betrachter zu wählen, sondern einen, der ausschliesslich für die Anzeige von print2forms-Ausgaben eingestellt werden kann.
Aus diesem Grund nutzt das nachfolgende Beispiel SumatraPDF, welches in der portablen Version über eine lokale Konfigurationsdatei (editierbarer Text) verfügt. SumatraPDF ist frei und kann für diesen Zweck genutzt werden.
Der Einfachheit halber gehen wir davon aus, dass alle notwendigen Dateien in einem Verzeichnis C:\View
installiert sind. Das reduziert die Pfadlänge entsprechend 3) und vermeidet eine ganze Reihe sonst notwendiger Hochkommata. Dort soll GhostPCL liegen (die gpcl6win64.exe und die gpcl6win64.dll für 64-Bit Systeme, ansonsten gpcl6win32.exe und die gpcl6win32.dll für 32-Bit Systeme). Ausserdem die Batch-Dateien mit den Kommandos, wie unten beschrieben. Für die Lösung mit PDF muss in diesem Verzeichnis auch die Datei SumatraPDF.exe liegen.
In der Kommandozeile des Programms p2fViewer.exe wird jetzt statt wie bisher kein Programm, sondern eine Batch-Datei mit Befehlen für die Windows-Commandshell aufgerufen (die Hochkommata sind wichtig!): 4)
cmd /s /c ""C:\View\makepdf.bat" "%1""
Das Spool-Verzeichnis des p2fViewers muss auf C:\View
gesetzt werden. Diese Batch-Datei selbst enthält folgende Befehle:
C:\View\gpcl6win64.exe -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="C:\View\View.pdf" %1 C:\View\SumatraPDF.exe -view "single page" "C:\View\View.pdf" del C:\View\View.*
Als erstes wird GhostPCL aufgerufen, um eine PDF-Datei aus der angelieferten PCL-Datei zu erzeugen. Die PDF-Datei erhält dabei der Einfachheit halber immer den Namen View.pdf. Diese PDF-Datei wird dann an das Programm SummatraPDF zur Anzeige übergeben. Nachdem die Anzeige in SumatraPDF beendet ist, werden die PDF- und die PCL-Datei gelöscht.
Eine zweite Lösung, die keine weiteren Programme benötigt, nutzt die Erzeugung von Bildern durch GhostPCL. Das ist nicht wirklich langsamer, ermöglicht aber, den mit Windows mitgelieferten Bildbetrachter einzusetzen.
Die Grundidee beruht darauf, für jede Seite des gedruckten Dokuments eine PNG-Datei zu erzeugen, die dann vom Bildbetrachter nacheinander zur Anzeige gebracht werden können. Dazu wird die Kommandozeile des Programms p2fViewer.exe wie folgt konfiguriert:
cmd /s /c ""C:\View\makepng.bat" "%1""
Die ausgeführte Batch-Datei hat folgenden Inhalt:
C:\View\gpcl6win64.exe -dNOPAUSE -sDEVICE=png16m -r600 -dDownScaleFactor=2 -sOutputFile=c:\View\Seite-%%d.png %1 %SystemRoot%\System32\rundll32.exe "%ProgramFiles(x86)%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen c:\View\Seite-1.png del c:\View\Seite-*.png del %1
Als erstes wird GhostPCL aufgerufen, um PNG-Dateien mit einer Farbtiefe von 16-Millionen Farben (24-Bit) zu erzeugen. Die Dateien erhalten im Namen einen Seitenzähler und heissen dann Seite-1.png, Seite-2.png, usw. Das Prozentzeichen muss in der Batch-Datei verdoppelt werden, um es von Environment-Variablen unterscheiden zu können.
Anschliessend wird der Bildbetrachter aus dem Windows-Verzeichnis (nur eine DLL) aufgerufen und gewartet, bis der Benutzer den Bildbetrachter schliesst. Sobald das der Fall ist, werden die erzeugten PNG-Dateien und die PCL-Datei gelöscht.
-r600 -dDownScaleFactor=2
nur der Parameter -r300
angegeben werden. Dadurch werden die Bilder direkt in 300 dpi erzeugt. Das ist deutlich weniger Aufwand als die Bilder zunächst mit 600 dpi zu erzeugen und sie dann auf 300 dpi herunterzurechnen. Motivation für letzteres ist, dass dadurch mittels Anti-Aliasing das Bild sehr viel angenehmer anzuschauen ist, weil die Kanten weicher und runder werden.C:\View\gpcl6win64.exe -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="%~1.pdf" "%~1.pcl" C:\View\SumatraPDF.exe -view "single page" "%~1.pdf" del "%~1.*"
Die zugehörige Kommandozeile für das Gateway ist cmd /s /c ""%1\makepdf.bat" "%2\%4""
.
Wenn man auch auf dem Rechner gespeicherte PCL-Dateien anzeigen möchte, kann man die beiden BAT-Dateien ebenfalls einsetzen. 5) Vorausgesetzt, PCL-Dateien haben eine einheitliche Endung wie etwa '.pcl', kann man über die rechte Maustaste aus dem Kontextmenü einfach den Eigenschaftendialog für diese Datei öffnen.
Ein Klick auf die Schaltfläche
Wenn man dort zu einer der beiden BAT-Dateien im Verzeichnis In jedem Fall öffnet sich zunächst einmal ein Kommandofenster zur Ausführung der BATCH-Datei. Erst anschliessend öffnet sich der PDF-Viewer oder die Windows Bildanzeige. Das kann bei PCL-Dateien mit vielen Seiten durchaus seine Zeit dauern. Wird der PDF-Viewer oder der Bildbetrachter geschlossen, beendet sich auch das Kommandofenster. |