===== Hilfsprogramm p2fSetProcess.exe =====
==== Anforderung ====
Beim Einsatz von (p2f)-Verzeichnismonitors oder auch bei anderen automatisierten Abläufen rund um (p2f) werden Dokumente aus Windows-Anwendungen heraus gedruckt. Beispielsweise werden vom Verzeichnismonitor PDF-Dateien vorgefunden, die automatisch in einen Unternehmensablauf eingebunden werden sollen. Dazu wird ein Programm aufgerufen, das die PDF-Dateien auf einem Windows-Drucker ausgeben kann. Der Windows-Drucker nutzt den (p2f)-Druckertreiber, der dann die für (p2f) notwendigen Sequenzen erzeugt.
Dabei ist es oft wünschenswert, dass dieser Windows-Drucker die Ausgabe nicht immer mit demselben (p2f)-Prozess erzeugt, sondern dass der (p2f)-Prozess abhängig vom PDF-Dokument gewählt werden kann. Das erfordert einen automatisierbaren Zugriff auf die Einstellungen des Windows-Druckers.
\\
\\
==== Realisierung ====
Das Kommandozeilen-Programm **p2fSetProcess** erlaubt es, die Benutzereinstellungen des (p2f)-Druckertreibers aus einem Skript heraus zu verändern. Es können der für das Drucken auszuwählende Prozess und die für den Einsatz von Routern benötigten Einstellungen für das Halten von Druckaufträgen und für sicheres Drucken gesetzt werden.
Das Programm verlangt im einfachsten Fall als Parameter den Windows-Namen des Druckers (der nicht notwendigerweise mit dem Namen im (p2f) selbst übereinstimmen muss) und den internen Namen des auszuwählenden (p2f)-Prozesses. Dass der interne Name des Prozesses angegeben werden muss, hat seine Begründung darin, dass auf diese Weise kein Zugriff auf den (p2f)-Server notwendig wird, um den externen Namen eines Prozesses in den internen Namen zu übersetzen.
Im hier diskutierten Kontext von Skripten für Gateways ist die Angabe des internen Namens sicherlich hinnehmbar, wenn dafür keine Konfigurationsdaten des Servers bekannt sein müssen und ständige Last für den Server und das Netzwerk vermieden wird.
**p2fSetProcess** kann direkt von der Kommandozeile aus aufgerufen werden. Es benötigt keinerlei Lizenzierung oder ähnliches. Wird es ohne Parameter aufgerufen, gibt es folgende kurze Beschreibung aus:
p2fSetProcess V1.0 (c) 2013 by SPE Systemhaus GmbH
Description:
Modifies the print2forms process setting in the
configuration of the given windows printer, if
the printer uses a print2forms printer driver.
Program parameters are:
Mandatory parameter:
-w Windows printer name
Optional parameters:
-p Internal name of process to set
(without extension '.XML')
-n Don't use any process
-h# Hold print job in p2fRouter if #=1
-s# Save print job in p2fRouter if #=1
General return codes:
0 - Success
-1 - Failed
-2 - Unknown program option
-3 - Program option expected
-4 - Process name not known
-5 - Process name missing
-6 - Printer name missing
-7 - Printer not found
-8 - Not a print2forms printer
n - Windows error code
Samples:
p2fSetProcess p2fPrinter E-TI-XO
Sets process 'E-TI-XO' for printer 'p2fPrinter'
p2fSetProcess p2fPrinter -n -h0
Don't use a process on printer 'p2fPrinter'
and reset the print job hold option
print2forms (R) is a registered trademark
of SPE Systemhaus GmbH
Ein typischer Einsatzfall für das Programm **p2fSetProcess** sieht demnach so aus, dass zunächst mit seiner Hilfe die Druckparameter eingestellt werden, und dann mit dem für den jeweiligen Dateityp notwendigen Programm gedruckt wird. Im vom Gateway aufgerufenen Skript kommt dann irgendwo eine Befehlsfolge ähnlich der folgenden vor:
...
"C:\Programme\print2forms\p2fSetProcess.exe" "-wp2f Printer" -pCK_R$UG
"C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe" /t 0901c4139ab906a5.PDF "p2f Printer"
...
Hier wird unterstellt, dass der Windows-Drucker den Namen 'p2f Printer' hat, was die Verwendung von Anführungszeichen erzwingt. In einem realen Skript sind die Parameter natürlich nicht Konstanten, sondern Inhalte von Variablen.
Ein vollständiges Bespiel eines solchen Skriptes findes sich im Tip [[print2forms:tips:tip29|PDF-Dateien drucken]].
\\
\\
==== Bemerkungen ====
* Ein 'hässlicher' Seiteneffekt, der durch den Verzicht auf die direkte Verbindung zum (p2f)-Server aus dem Programm **p2fSetProcess** heraus bedingt wird, ist der, dass die Konfiguration des benutzten Windows-Druckers inkonsistent erscheint, wenn man sich die Einstellungen im Windows-System direkt anschaut.\\ \\ Wählt man einen Prozess im Einstelldialog des Druckers direkt aus, erscheint im oberen Teil des Dialogs unter 'Prozess' der externe Name des ausgewählten Prozesses.\\ \\ {{print2forms:tips:0041-1.png}}\\ \\ Wird der gleiche Prozess mit Hilfe des Programms gesetzt, verschwindet der externe Name, was allerdings keinen Einfluss auf die Funktion des Druckers hat. \\ \\ {{print2forms:tips:0041-2.png}}