Lizenzen und Installation, Programmierung

CONZEPT 16-Druckertreiber und Druckprozessor

Bei der Installation von CONZEPT 16 besteht die Option, die Komponente Drucker ebenfalls zu installieren. Wird diese Komponente ausgewählt, so wird der CONZEPT 16-Druckertreiber eingerichtet. Heute möchte ich auf die Funktionsweise dieser Komponente etwas näher eingehen.

Der CONZEPT 16-Druckertreiber

Der CONZEPT 16-Druckertreiber ist ein Dienst, welcher es ermöglicht Druckjobs flexibel weiterzuverarbeiten. Bei der Installation des CONZEPT 16-Druckertreibers werden verschiedene Drucker installiert. Wird nun auf einem dieser Drucker gedruckt, so wird dieser Druckjob an eine CONZEPT 16-Prozedur weitergeleitet. Der Druckjob kann nun an einen anderen Drucker weitergeleitet oder mit Hilfe von Ghostscript in ein PDF- oder TIFF-Dokument umgewandelt werden. Ist auf dem System bereits Acrobat Distiller installiert, so kann alternativ auch dieser zur Umwandlung in ein PDF- oder TIFF-Dokument verwendet werden. Hierbei spielt es keine Rolle, welche Applikation auf den CONZEPT 16-Drucker gedruckt hat.

CONZEPT 16-Druckprozessor

Ist der CONZEPT 16-Druckertreiber installiert, so befinden sich auf dem entsprechenden Rechner ein zusätzlicher Druckeranschlusstyp CONZEPT 16 Port-Monitor und zwei neue Druckertreiber: PDF und TIFF. Diese leiten nun ihre Druckjobs über den CONZEPT 16-Port-Monitor an einen lokal gestarteten Druckprozessor weiter.

Sollen andere oder weitere Drucker eingerichtet werden, wird eine Konfigurationsdatei benötigt. Diese muss vor der Installation des Druckertreibers in das Verzeichnis der Installationsroutine kopiert werden. Es besteht auch die Möglichkeit, den Druckjob an einen zentralen Druckprozessor im Netz weiterzuleiten.

Hierzu kann über die Druckereigenschaften und das Register Anschlüsse ein neuer CONZEPT 16-Port hinzugefügt werden oder die Konfigurationsdatei c16_setup_printer.cfg wird dementsprechend geändert.

Der Druckprozessor verbindet sich mit einer CONZEPT 16-Datenbank und führt innerhalb dieser Datenbank eine Prozedur bzw. eine Funktion aus. Die Datenbank und die Funktion werden wiederrum in der Konfigurationsdatei c16_ppcsvc.cfg angegeben.
Es ist zu beachten, dass Dienste in einem anderen Benutzerkontext laufen können, welcher andere Benutzerrechte als der angemeldete Benutzer besitzt. Werden aus der Prozedur andere Drucker oder externe Dateien angesprochen, so ist auf diese Rechte ein besonderes Augenmerk zu richten.

Funktionsweise des Druckertreiber und Druckprozessors
c16_setup_printer.cfg

Sollen andere bzw. weitere Drucker eingerichtet werden, so werden in dieser Datei weitere Bereiche angelegt. Innerhalb des Bereiches befinden sich die Einträge für den Druckertreiber.

  • c16_printer_name
    Name des Druckers
  • c16_printer_port
    Dies ist der Port, auf den der Druckertreiber druckt. Dieser Port muss in der Form C16_PORT:\\<Rechner>\<Bereich> angegeben werden. Hier kann der Name oder die IP-Adresse des Rechners, auf dem der Druckprozessor installiert ist, angegeben werden.
c16_ppcsvc.cfg

In dieser Konfigurationsdatei wird festgelegt, für welchen Drucker-Port welche Datenbank und welche Prozedur aufgerufen wird. Die zwei standardmäßig installierten Druckertreiber drucken auf den Port \\local\default. Welche Einträge hier genau zu hinterlegen sind, kann in der Online-Dokumentation unter dem Index Konfigurationsdatei des Druckprozessors nachgelesen werden.
Nach der Durchführung des Druckvorgangs durch einen CONZEPT 16-Druckertreiber ruft der Druckprozessor die in der c16_ppcsvc.cfg eingetragene Funktion auf. Diese wird an das Druckprozessor-Objekt (c16_ppcsvc.cfg) übergeben. Innerhalb des Ereignisses wird das Objekt weiter verarbeitet.

Aus diesem Grund muss die vom Druckprozessor aufgerufene Funktion folgenden Funktionskopf besitzen:

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

Innerhalb dieser Funktion wird mit den Ppc-Befehlen bestimmt, was aus dem Druckjob generiert werden soll.
Im folgenden Beispiel wird ein aus einem Druckjob ein PDF-Dokument erzeugt und für die ungeraden Seiten eine Vorschau erzeugt:

sub PrintProcess
(
  aPpcObject : int;   // Druckprozess-Objekt
) : logic
{
  // Vorschaubild anzeigen
  aPpcObject->ppSelectPvw # 'odd()';
  aPpcObject->PpcMakePreviewJpg(_Sys->spPathTemp + '\prtdoc_%d.jpg',
                                PointMake(75,150));

  // PDF-Dokument erzeugen
  aPpcObject->PpcMakePdf(_Sys->spPathTemp + '\prtdoc.pdf');
  return (true);
}
Keine Kommentare

Kommentar abgeben