Benutzer-Werkzeuge

Webseiten-Werkzeuge


Testausdrucke anzeigen

Anforderung

Beim Entwurf neuer Prozesse und Formulare mit print2forms werden oft viele Testausdrucke benötigt, insbe­sondere, 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.

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 ver­wandeln, 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.

Realisierung

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. 1) 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:

Lösung mit PDF

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 2) 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!): 3)

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:

makepdf.bat
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-, die PCL-Datei gelöscht.

Lösung mit Bildern

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:

makepng.bat
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.



Hinweise

  • Es soll nicht verschwiegen werden, dass es auch mit GhostPCL hin und wieder zu Darstellungsfehlern innerhalb von PDF-Dateien kommt, insbesondere dann, wenn Farbe mit Transparenz genutzt wird und diese gegen bereits gefüllte Hintergründe gemischt werden muss (wie in dem Screenshot hier). Bei der Bilderzeugung gibt es diese Fehler nicht - deshalb ist die Erzeugung von PNG-Dateien im Moment zu bevorzugen. Es mag sein, dass GhostPCL das in einer neueren Version demnächst besser macht.
  • Es wird die schon etwas ältere Version 9.21 von GhostPCL eingesetzt, weil diese noch permanent gemachte Schriften im Speicher behält, wenn innerhalb der PCL-Daten PJL-Befehle kommen (geschieht meistens im Zusammenhang mit Dokumentprozessen). Die neueren Versionen von GhostPCL löschen die Schriften. Manche Drucker tun diese ebenfalls, wenn einer der PJL-Befehle die Speicheraufteilung im Drucker verändert. In solchen Fällen muss in der Druckeranpassung in der PO-Ressource dafür gesorgt werden, dass die Schriften für jeden vom Dokumentenprozess erzeugten Teilauftrag neu geladen werden (Beispiel in der Anpassung Hewlett Packard OfficeJet).
  • Auf nicht ganz so leistungsstarken Rechnern kann bei der Erzeugung der PNG-Dateien statt der beiden Parameter -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.
  • Für ein Temporär-Verzeichnis die Environment-Variable %Temp% zu verwenden, funktioniert mit dem Bildanzeigeprogramm von Microsoft leider nicht. Die einzelnen Seiten lassen sich nicht weiterschalten.
  • Die naheliegende Idee, das Programm p2fViewer.exe mit der DLL von GhostPCL zu koppeln, und eine direkte Anzeige zu programmieren, ist aus lizenzrechtlichen Problemen nicht möglich. Aus dem gleichen Grund ist GhostPCL auch nicht direkter Bestandteil des print2forms-Installers.
  • Möchte man mit einem ganz normalen Gateway testen und die sich erzeugten Daten direkt anzeigen lassen, kann ebenfalls wie hier beschrieben vorgegangen werden. Allerdings wird eine leicht modifizierte Batch-Datei benötigt:

    makepdf.bat
    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"".



1) GhostPCL ist ein Teil des grossen Projekts GhostScript als Interpreter für PostScipt und PDF.

2) Natürlich darf auch jedes andere Verzeichnis gewählt werden, in dem Rechte zum Ausführen von Programmen zur Verfügung stehen.

3) Bitte mindestens den Build 149 von p2fViewer.exe einsetzen, um zu vermeiden, dass ein zusätzliches Fenster für die Commandshell aufgeht.
print2forms/tips/tip74.txt · Zuletzt geändert: 2019-02-27 17:20 (Externe Bearbeitung)

Seiten-Werkzeuge