Zum Hauptinhalt springen

CONZEPT 16-Druckprozessor - Funktionsweise

CONZEPT 16-Druckprozessor - Funktionsweise Aufbereitung der Druckausgabe

Nach der Standard-Installation des CONZEPT 16-Druckertreibers sind auf dem entsprechenden Rechner zwei neue Druckertreiber installiert und der CONZEPT 16-Druckprozessor als Dienst gestartet. Der CONZEPT 16-Druckprozessor wird immer dann angesprochen, wenn eine Applikation (CONZEPT 16 oder andere Programme) auf einen CONZEPT 16-Drucker druckt. Der Druckjob wird an den Druckprozessor weitergeleitet und durch eine CONZEPT 16-Prozedur aufbereitet. Diese Aufbereitung kann eine oder mehrere der folgenden Funktionen umfassen:

  • Drucken auf Windows-System oder -Netzwerkdrucker
  • Erzeugen von PDF-Dokumenten
  • Erzeugen von Multipage-TIFF-Dateien
  • Erzeugen von Vorschaubildern in verschiedenen Formaten

Wird über die CONZEPT 16-Druckertreiber gedruckt, wird der Druckjob an den Druckprozessor weitergeleitet. Bei der Installation des CONZEPT 16 Druckertreibers werden standardmäßig zwei Druckertreiber installiert. Diese leiten ihre Druckjobs an einen lokal gestarteten Druckprozessor weiter. Wurden bei der Installation Druckerports angegeben, die auf einer anderen Maschine sind (siehe c16_setup_printer.cfg ), wird der Druckjob an einen Druckprozessor im Netz weitergeleitet. Der Druckprozessor verbindet sich mit einer CONZEPT 16-Datenbank und führt innerhalb dieser Datenbank eine Prozedur oder Funktion aus. Die Datenbank und die Funktion werden in einer Konfigurationsdatei angegeben.

info

Der Druckprozessor wird als Dienst gestartet. Dienste laufen in einem anderen Benutzerkontext (meist SYSTEM), der andere Benutzerrechte als der angemeldete Benutzer besitzt. Auf diese Rechte gilt es besonders zu achten, wenn aus der Prozedur des Druckprozessors andere Drucker oder externe Dateien angesprochen werden.

Die aufgerufene Funktion muss folgenden Funktionskopf besitzen:

sub <Funktionsname>
(
aPpcObject : int; // Druckprozess-Objekt
) : logic;

Ist in der Konfigurationsdatei nur eine Prozedur eingetragen, muss die main-Funktion wie folgt definiert sein:

main
(
aPpcObject : int; // Druckprozess-Objekt
) : logic;

Der Funktion des Druckprozessors wird das Objekt PpcObject übergeben. Innerhalb der Funktion wird mit den Ppc-Befehlen bestimmt, was aus dem Druckjob generiert werden soll. Im einfachsten Fall kann der Druckjob auf den Standarddrucker des Systems ausgedruckt werden.

Beispiel:

sub PrintProcess
(
aPpcObject : int; // Druckprozess-Objekt
) : logic;

local
{
tHdlPrtDevice : handle;
}

{
tHdlPrtDevice # PrtDeviceOpen();
aPpcObject->PpcPrint(tHdlPrtDevice);
tHdlPrtDevice->PrtDeviceClose();
return(true);
}

Im folgenden noch ein Beispiel bei dem aus dem Druckjob ein PDF-Dokument und für die erste Seite ein Vorschaubild erzeugt wird:

sub PrintProcess
(
aPpcObject : int; // Druckprozess-Objekt
) : logic;

{
// Vorschaubild erzeugen
aPpcObject->ppSelectPvw # 'range(1)';
aPpcObject->PpcMakePreviewJpg('C:\printout\prtdoc.jpg', PointMake(150, 75));

// PDF-Dokument erzeugen
aPpcObject->PpcMakePdf('C:\printout\prtdoc.pdf');
return(true);
}

Die Befehle zum Generieren von Dateien oder Druckjobs geben einen Fehlerwert zurück. Konnte zum Beispiel ein PDF-Dokument nicht generiert werden, kann eine entsprechende Fehlerbehandlung in der Funktion des Druckprozessors durchgeführt werden.

Beispiel:

sub PrintProcess
(
aPpcObject : int; // Druckprozess-Objekt
) : logic;

local
{
tErg : int;
}

{
// Vorschaubild erzeugen
aPpcObject->ppSelectPvw # 'range(1)';
tErg # aPpcObject->PpcMakePreviewJpg('C:\printout\prtdoc.jpg', PointMake(150, 75));
ErrHandling(tErg);

// PDF-Dokument erzeugen
tErg # aPpcObject->PpcMakePdf('C:\printout\prtdoc.pdf');
ErrHandling(tErg);
return(true);
}

// **********************************************
// ***** Funktion zur Fehlerbehandlung *****
// **********************************************

sub ErrHandling
(
aErrValue : int;
)

{
switch (aErrValue)
{
case _ErrOk : // kein Fehler aufgetreten
{
}

case _ErrPpcAcrobat : // Fehler bei PDF-Erstellung
{
...
}

case _ErrPpcArgument : // Fehler bei PDF-Erstellung
{
...
}

...

default : // Unbekannter Fehler
{
...
}
}
}

Konnte ein Druckjob nicht verarbeitet werden, bleibt die Datei des Druckjobs im Temporärverzeichnis des Betriebssystems stehen. Beim nächsten Starten des Druckprozessors wird diese Datei erneut verarbeitet. Gibt die durch den Druckprozessor aufgerufene Funktion true zurück, wird die temporäre Datei gelöscht.

Beim Erzeugen einer PDF-Datei wird zunächst eine Postscript-Datei generiert, die dann weiter zu der PDF-Datei umgewandelt wird. Das Verzeichnis und der Name dieser Postscript-Datei kann über die Eigenschaft FileName des ppcObject ermittelt werden. Sollte diese Datei zu einem späteren Zeitpunkt oder zu Debug-Zwecken noch benötigt werden, kann sie innerhalb der Prozedur kopiert werden.