CIB pdf toolbox technischer Leitfaden (DE)
14. Interne Module im Detail
14.1. CIB pdf/print
AllgemeinSpezielle Optionen für die Druckausgabe
Druck über CUPS
Praxisorientierte Beispiele für die Anforderung des direkten Drucks
Allgemein
CIB pdf/print wird als PDF-Druckinterpreter eingesetzt. Es wurde dazu entwickelt, den kompletten Textinhalt der PDF-Datei passend zu einem vorgegebenen Drucker zu rendern und auszudrucken. Das Ergebnis soll so nahe wie möglich vom Aussehen her dem vergleichbaren Standardwerkzeug (Acrobat Reader) des Formatherstellers (Adobe) kommen. Unterstützt wird die PDF-Spezifikation der Version 1.8 (Acrobat Reader 8). Es wird die Grafik-API des jeweiligen Betriebssystems genutzt. Alle Druckertreiber und Fontinstallationen der jeweiligen Plattform werden unterstützt.
Spezielle Optionen für die Druckausgabe
Propertybezeichnung |
Typ |
Funktionalität |
DocumentUsedFonts (ab CIB pdf toolbox 1.6.115) |
String |
Ausgabe der in einem Dokument verwendeten Schriftarten {Name;Größe;Attribute}. Beispiel: |
DocumentReplacedFonts (ab CIB pdf toolbox 1.6.115) |
String |
Ausgabe der bei der Dokumenten-Verarbeitung erfolgten Font-Ersetzungen. Falls ein Font auf dem System nicht vorhanden ist, wird er von der CIB pdf tollbox durch einen möglichst „ähnlichen“ installierten Font ersetzt. Die durchgeführten Font-Ersetzungen werden in dieser Property dokumentiert in der Form: <Font-Ersetzungen> ::= <Font-Ersetzung> | <Font-Ersetzung> „;“<Font-Ersetzung> <Font-Ersetzung> ::= „{“ <Alter Font> „;“<Neuer Font> „}“ <Alter Font> ::= <Fontname> <Neuer Font> ::= <Fontname> <Fontname> ::= <Text> Jede Font-Ersetzung wird nur einmal ausgegeben. Beispiel: |
DocumentUsedOriginFonts (ab CIB pdf toolbox 1.6.115) |
String |
Ausgabe der in einem Dokument verwendeten Original-Schriftarten {Name;Größe;Attribute}. Beispiel: |
DuplexPrint2 |
Char* |
DuplexPrint2 erweitert die Ausprägung für den Duplexdruck und wird anstatt der Property DuplexPrint verwendet. „DuplexDefault“: „DuplexPrintShort“: „DuplexPrintLong“: „SimplexPrint“: |
PageSelection |
Char* |
Geben Sie hier die gewünschte
Seitenselektion an. Die Angabe „1-3“ entspricht Seite
1 bis 3, Angabe von Ausfertigungen: (ab CIB pdf toolbox
1.4.83): |
PaperBin |
Char* |
Gezielte Ansteuerung eines bestimmten Drucker-Schachtes. Möglich sind: Achtung: Es ist möglich, für die erste Seite und den Rest des Dokuments unterschiedliche Schächte anzusteuern. Die beiden Schächte werden dann durch Semikolon getrennt. Beispiel: |
PaperBinReset |
Char* |
Erste Seite wird auf einem anderen Schacht gedruckt. Mögliche Werte: =„Bookmarks“
(Default) =“PartialDocuments“ =“Copies“ =“None“ |
ReceiverCopyMap (ab CIB pdftoolbox 1.4.106)
(ab CIB pdftoolbox 1.14.0) |
Char* |
In einer Tabelle können den in
den Dokumenten gesetzten Textmarken (Ausfertigungen, AUSFn) sprechende Namen
zugeordnet werden. Syntax: <r-copy> ::= „{“
<NameNeu> „;“ <Textmarke> „;“ <NameNeu> ::= <leer> | <Text> <Textmarke> ::= <Text> <PapiertypSeite1> ::= <leer> | <Text> <PapiertypRest> ::= <leer> | <Text> Beispiel: Spezialfall: Einer der beiden Schächte fehlt: ReceiverCopyMap= {kunde;AUSF1;briefkopf} oder {kunde;AUSF1;;briefkopf} haben das gleiche Ergebnis: Aber: ReceiverCopyMap= {kunde;AUSF1;} erzeugen einen Fehler - 304. |
PaperTypeMap (ab CIB pdftoolbox 1.4.106) |
Char* |
In einer Tabelle können den
verwendeten Papiertypen die Druckerschächte zugeordnet werden, in denen
dieses Papier liegt. Syntax: <Eintrag> ::= <Papiertyp> „,“ <Schacht> <Papiertyp> ::= <Text> <Schacht> ::= <Text> | <Nummer> Beispiel: |
PaperTypes (ab CIB pdftoolbox 1.4.106) |
Char* |
Es können Default-Papiertypen
für den Ausdruck festgelegt werden, falls keine ReceiverCopyMap vorhanden
ist. Es sind maximal zwei Papiertypen möglich (für Gesamtdokument oder für 1.
Seite und den Rest). Syntax: <Papiertyp> ::= <Text> Beispiel: PaperTypes=briefkopf;brief |
PrintBracketMode (ab CIB pdftoolbox 1.4.106) |
Char* |
Es können mehrere Druck-Dokumente in einem Druckauftrag geklammert werden. Dadurch wird vermieden, dass sich Druckseiten von unterschiedlichen Personen mischen und danach per Hand auseinander sortiert werden müssen. Bei diesen Dokumenten kann es sich um RTFs oder PDFs (auch gemischt) handeln. Mögliche Werte: Open PrintBracket
ist leer: Close PrintBracket
ist leer: Cancel PrintBracket ist leer: |
PrintBracket (ab CIB pdftoolbox 1.4.106) |
Long |
Bei Starten einer neuen Druckklammer (PrintBracketMode=Open) erstellt die CIB pdf toolbox (oder der CIB format) ein neues Druckklammer-Handle. Dieses Handle wird in der Property PrintBracket hinterlegt. Dieses Handle weist auf die Druckauftrag-Instanz,
wo Verwaltungsinformationen (printed pages, printed documents, etc.)
gespeichert sind und zusätzlich unter |
PrintMode (ab CIB pdftoolbox 1.13.0) |
Char* |
Wirkt nur unter Windows Bei RenderingEngine=CIBRenderer wird für den Rendering-Vorgang des Drucks (OutputFormat=FormatPrinter) der CIBRenderer verwendet und erzeugt als Zwischenschritt temporäre Files, die dann an den Drucker übergeben werden.
Mögliche Werte: Auto (oder leer): Es wird Postscript benutzt, wenn der Druckertreiber postscriptfähig ist, ansonsten GDI. Postscript: Es wird Postscript benutzt, wenn der Druckertreiber
postscriptfähig ist. GDI: Druck über GDI PCL: Wird noch nicht unterstützt Die Properties PrintBrackets, PageSelection, PrintCopies2, DuplexPrint2, SortedPrint2, PaperBins, InsertEmptyPageBetweenBookmarks, PaperBinReset können benutzt werden.
Bei RenderingEngine ungleich CIBRenderer wird nur GDI
unterstützt. |
ParentHwnd2 |
Char* |
Es wird das Windowhandle der Anwendung übergeben, bezüglich der der Druckdialog zentriert werden soll. (default: Windowhandle des Desktops) |
PrintCopies2 |
Char* |
Anzahl der Kopien vom Original,
die beim Ausdruck erzeugt werden. |
SortedPrint2 (ab CIB pdf toolbox 1.6.117) |
Char* |
Ausgabe von sortierten oder unsortierten Kopien auf den Drucker. Diese Property ist nur sinnvoll, falls PrintCopies2 > 0 ist. Diese Eigenschaft wird sowohl für Simplexdruck als auch für Duplexdruck unterstützt. Mögliche Werte: „1“: Die Seiten des Pdf Dokuments werden sortiert gedruckt (default). „0“: Die Seiten des Pdf Dokuments werden unsortiert gedruckt. In diesem Fall wird die Property RequestedPages nicht unterstützt. Außerdem gilt: Beispiel: Für SortedPrint2=0 wird
ausgegeben: |
PrinterChanged2 |
Char* |
„1“: Drucker wurde geändert. „0“: Der Drucker wurde nicht geändert. |
PrinterLocalisation |
Char* |
Definition der Druckertypen die mit PrinterAvailable geholt werden sollen „PrinterDefault“: „PrinterLocal“: „PrinterNetwork“: „PrinterCUPS“: |
PrintedPageCount2 |
Char* |
Liefert die Anzahl der gedruckten Seiten zurück. |
PrinterName |
Char* |
Windows: |
PrintToFile2 |
Char* |
„0“: der Ausdruck geht auf den gewünschten Drucker „1“: der Druck wird in eine Datei umgeleitet. Diese Datei wird entweder im Benutzerdialog ermittelt oder kann über die Eigenschaft OutputFilename bereits vorher gesetzt werden. |
PrintDialogDisableToFile2 |
Char* |
„1“: Im Druckdialog wird die Checkbox „Ausgabe In Datei umleiten“ nicht angezeigt. „0“: Die Checkbox wird angezeigt (Default). |
PrintDialogDisableSelection2 |
Char* |
„1“: Die Optionen zum Auswählen einzelner Seiten im Druckdialog sind ausgegraut und können nicht verwendet werden. „0“: Die Optionen zum Auswählen einzelner Seiten sind verfügbar (Default) |
PrintDlgHwnd2 |
Char* |
Windowhandle des verwendeten Druckdialoges |
PrinterPortName |
Char* |
Auf diesem Port ausdrucken (Nur Get) |
DefaultPrinter |
Char* |
Rückgabe des Standarddruckers. |
PaperBinAvailable |
Char* |
Rückgabe der verfügbaren Druckerschächte des Druckers aus Property PrinterName bzw. des Standarddruckers, falls PrinterName leer ist. |
DeviceCapability.DuplexAvailable |
Char* |
Gibt zurück, ob der Drucker aus Property PrinterName (oder der Standarddrucker, falls PrinterName leer ist) fähig ist, Duplex oder zweiseitig zu drucken. Mögliche Rückgabewerte: |
PrintCommentList (ab CIB pdf toolbox 1.9.2) |
Char* |
Gibt an, ob die sichtbaren Kommentare beim Drucken aufgelistet werden sollen (entspricht dem „Kommentare zusammenfassen“ bei Adobe Professionell). Mögliche Werte: „0“: Es wird keine Kommentarliste gedruckt. (default) „1“: Alle sichtbaren Kommentare des PDF Dokuments erhalten eine fortlaufende Nummer und sie werden in Zusatzseiten aufgelistet. |
PrintCommentListTypes (ab CIB pdf toolbox 1.9.2) |
Char* |
Die Property gibt an, welche speziellen Kommentartypen aufgelistet
werden sollen. Mögliche Werte: „“: (leerer String – default) Alle sichtbaren Kommentare werden aufgelistet. Non-empty-string: Eine durch Strichpunkt
getrennte Liste der Kommentartypen, die aufgelistet werden sollen. |
PrintCommentListEmpty (ab CIB pdf toolbox 1.9.2) |
Char* |
Gibt an, ob nur die Kommentare mit nicht-leerem Text aufgelistet werden. Mögliche Werte: „1“: Alle passenden Kommentare werden aufgelistet, egal ob sie Text enthalten oder nicht. (Default) „0“: Es werden nur die Kommentare aufgelistet, die wirklich Text enthalten. |
Druck über CUPS
Die CIB pdf toolbox unterstützt unter Linux die Druckansteuerung über CUPS (Common Unix Printing System).
CUPS besteht aus einer Client-Server-Architektur, das heißt, das Programm ist aufgeteilt in einen Druck-Client, der die Druckaufträge schickt, und einen Druck-Server, der das Drucken auf dem Rechner, an dem der Drucker angeschlossen ist, erledigt.
Das Standardformat für CUPS ist Postscript (PS), daher generieren die CIB Module unter Linux immer PS, das an die CUPS Schnittstelle übergeben wird. In der Regel wird CUPS das PS an den angeschlossenen Drucker weitergeben. Je nach Konfiguration und Fähigkeit des Druckers kann es aber auch sein, dass CUPS noch eine Konvertierung (z.B. nach PCL) durchführt.
Voraussetzung für die Ansteuerung eines CUPS Druckes unter Linux:
- Vorliegen einer CUPS Version größer 1.2
- Installation von PDFTOPS 3.0 vom poppler-utils package 0.5.4
- gtk 2.10 (für den Druckdialog)
Praxisorientierte Beispiele für die Anforderung des direkten Drucks
Der direkte Druck kann über die CIB Runshell oder die direkte Dll Funktionalität ausgeführt werden.
Einfacher Runshell-Aufruf für den Druck einer PDF-Datei:
cibrsh.exe –fp Test.pdf
Um über die Dll zu drucken, sind folgende Schritte als Basis erforderlich:
Über die Methode SetProperty(), den Wert „InputFilename“ mit dem zu druckenden Dokument belegen.
Über die Methode SetProperty(), den Wert „OutputFormat“ mit „FormatPrinter“ belegen.
Die Methode CibPdfJoin() ausführen
Mit diesen Aufrufen wird die angegebene Eingabedatei auf dem Standarddrucker ausgegeben. Genauere Angaben zum Druck können über weitere Properties gemacht werden.
Im Folgenden sollen Beispiele für häufig vorkommende
Anwendungsfälle des Duplex-Drucks gegeben werden.
Voraussetzung ist ein Drucker mit Duplex-Eigenschaft. In den Beispielen hat der
Drucker einen manuellen („BinManual“) und einen oberen Schacht („BinUpper“).
Druck einfaches Dokument
Gedruckt wird ein einfaches Dokument, in dem sich keine
Textmarken befinden.
Anwendungsfall |
Properties |
Ergebnis |
Komplettdruck des Dokuments |
Keine erforderlich |
Das komplette Dokument wird einmal ausgedruckt. |
Komplettdruck mit Kopien |
PrintCopies2=1 |
Das komplette Dokument wird zweimal gedruckt. |
Ausdruck von Teilen des Dokuments |
PageSelection=1-3;7 InsertEmptyPageBetweenRtfBookmarks=“1“ |
Gedruckt werden nur die Seiten 1, 2, 3 und 7. |
Ausdruck von Teilen des Dokuments mit Kopien |
PageSelection=1,1;5,2 InsertEmptyPageBetweenRtfBookmarks=“1“ |
Gedruckt werden nur die Seite 1 zweimal und Seite 5 dreimal. |
Druck auf unterschiedliche Schächte |
PaperBin=“BinManual;BinUpper“ |
Die erste Seite des Dokuments wird auf manuellen Schacht, der Rest auf oberen Schacht gedruckt. |
Druck mit Kopien und unterschiedlichen Schächten Variante 1 |
PrintCopies2=1 PaperBin=“BinManual;BinUpper“ PaperBinReset=Bookmarks |
Die erste Seite jeder Kopie des Formulars wird auf manuellen Schacht, der Rest auf oberen Schacht gedruckt. |
Variante 2
|
PrintCopies2=1 PaperBin=“BinManual;BinUpper“ PaperBinReset=None |
Die erste Seite des Druckauftrags wird auf manuellen Schacht, der Rest auf oberen Schacht gedruckt |
Druck eines Dokuments mit Ausfertigungen
Das Dokument enthält die Textmarken AUSF1, AUSF2 und AUSF3. Jede dieser Textmarken steht für einen Textbereich im Dokument. So kann z.B. unter dem Bezeichner AUSF1 ein bestimmter Teil des Dokuments (=Ausfertigung 1) direkt angesprochen und gedruckt werden.
Die Property InsertEmptyPageBetweenRtfBookmarks=“1“
muss gesetzt werden, damit beim Druck und ungerader Seitenzahl jede Ausfertigung
auf einem neuen Blatt beginnt.
Anwendungsfall |
Properties |
Ergebnis |
Komplettdruck des Dokuments |
Keine weiteren Properties erforderlich |
Das komplette Dokument wird einmal ausgedruckt. Es werden Leerseiten eingesteuert, damit jede Ausfertigung auf einem neuen Blatt beginnt. |
Ausdruck von Teilen des Dokuments |
PageSelection=AUSF2 |
Nur die Ausfertigung 2 wird gedruckt. |
Ausdruck von Teilen des Dokuments mit und ohne Kopien |
PageSelection=AUSF1,1;AUSF3 |
Die Ausfertigung 1 wird zweimal und Ausfertigung 3 einmal gedruckt. |
Ausdruck auf unterschiedliche Schächte Variante 1 |
PaperBin=“BinManual;BinUpper“ PaperBinReset=Bookmarks |
Die erste Seite jeder der im Dokument enthaltenen Ausfertigungen wird auf manuellen Schacht, der Rest auf oberen Schacht gedruckt. |
Variante 2 |
PaperBin=“BinManual;BinUpper“ PaperBinReset=None |
Die erste Seite des Dokuments wird auf manuellen Schacht, der Rest auf oberen Schacht gedruckt |
Ausdruck auf unterschiedliche Schächte mit Kopien |
PrintCopies2=1 PaperBin=“BinManual;BinUpper“ PaperBinReset=Copies |
Das komplette Dokument wird zweimal gedruckt. Dabei geht die erste Seite jeder Kopie auf den manuellen und die restlichen Seiten auf den oberen Schacht. |
Druck von Formular-Bündeln (Verkettung einfacher Dokumente)
Verkettung: Durch den
CIB pdf/join werden einfache PDF-Dokumente (d.h. sie enthalten keine
Textmarken) zu einem einzigen großen PDF-Dokument verkettet. Man spricht auch
von einem Formular-Bündel.
Durch das Setzen der Property JoinHistory=“1“ wird an den Übergängen zwischen den
Einzeldokumenten eine Markierung gesetzt, damit an dieser Stelle beim
Duplexdruck auf einem neuen Blatt begonnen wird.
Druck: Durch Setzen der Property InsertEmptyPageInDuplex=“1“ wird das Einsteuern von Leerseiten zwischen den Einzeldokumenten (siehe JoinHistory) veranlasst, damit jedes Teildokument auf einem neuen Blatt beginnt.
Anwendungsfall |
Properties |
Ergebnis |
Komplettdruck des Formular-Bündels |
Keine weiteren Properties erforderlich |
Das komplette Formular-Bündel wird einmal ausgedruckt. Es werden Leerseiten so eingesteuert, dass jedes Einzel-Dokument auf einem neuen Blatt beginnt. |
Ausdruck von Einzelseiten des Formularbündels ohne und mit Kopien |
PageSelection=1;10,2 InsertEmptyPageBetweenRtfBookmarks=“1“ |
Die Seite 1 des Formularsbündels wird einmal und Seite 10 dreimal gedruckt. Durch Setzen der Property „InsertEmptyPageBetweenRtf-Bookmarks“ wird verhindert, dass die Seite 10 auf die Rückseite von Seite 1 gedruckt wird. |
Ausdruck auf unterschiedliche Schächte Variante 1 |
PaperBin=“BinManual;BinUpper“ PaperBinReset=Bookmarks |
Die erste Seite jedes Teil-Dokuments wird auf manuellem Schacht, der Rest auf oberem Schacht gedruckt. |
Variante 2 |
PaperBin=“BinManual;BinUpper“ PaperBinReset=None |
Die erste Seite des Formular-Bündels wird auf manuellem Schacht, der Rest auf oberem Schacht gedruckt. |
Ausdruck auf unterschiedliche Schächte mit Kopien |
PrintCopies2=1 PaperBin=“BinManual;BinUpper“ PaperBinReset=Copies |
Das komplette Formular-Bündel wird zweimal gedruckt. Dabei geht die erste Seite jeder Kopie auf den manuellen und die restlichen Seiten auf den oberen Schacht. |
Druck von Formular-Bündeln mit Ausfertigungen
Die Einzeldokumente
enthalten die Textmarken AUSF1, AUSF2 und AUSF3. Diese Textmarken
markieren jeweils Textbereiche für Druckausfertigungen in den
Einzel-Dokumenten. Der Name einer bestimmten Textmarke kann auch in mehreren
Einzel-Dokumenten vorkommen. Dann werden beim Druck dieser Ausfertigung alle so
benannten Textbereiche ausgewählt.
Verkettung: Durch den CIB pdf/join
werden die einzelnen PDF-Dokumente zu einem einzigen großen PDF-Dokument
verkettet (= Formular-Bündel).
Durch das Setzen der Property JoinHistory=“1“ wird an den Übergängen zwischen den
Einzeldokumenten eine Markierung gesetzt, damit an dieser Stelle beim
Duplexdruck auf einem neuen Blatt begonnen wird.
Druck: Durch
Setzen der Property InsertEmptyPageInDuplex=“1“ wird das Einsteuern von Leerseiten
zwischen den Einzeldokumenten (siehe JoinHistory) veranlasst, damit jedes
Teildokument auf einem neuen Blatt beginnt.
Durch Setzen der Property InsertEmptyPageBetweenRtfBookmarks=“1“ beginnt auch jede Ausfertigung auf einem
neuen Blatt.
Anwendungsfall |
Properties |
Ergebnis |
Komplettdruck des Formular-Bündels |
Keine weiteren Properties erforderlich |
Das komplette Formular-Bündel wird einmal ausgedruckt. Es werden Leerseiten so eingesteuert, dass jedes Teildokument und jede Ausfertigung auf einem neuen Blatt beginnt. |
Ausdruck von Teilen des Formularbündels ohne und mit Kopien |
PageSelection=AUSF1;AUSF2,1 |
Alle Ausfertigungen1 aus dem Formularsbündel werden einmal und die Ausfertigungen2 zweimal gedruckt. |
Ausdruck auf unterschiedliche Schächte Variante 1 |
PaperBin=“BinManual;BinUpper“ PaperBinReset=Bookmarks |
Die erste Seite jedes Teil-Dokuments und jeder Ausfertigung wird auf manuellem Schacht, der Rest auf oberem Schacht gedruckt. |
Variante 2 |
PaperBin=“BinManual;BinUpper“ PaperBinReset=PartialDocument |
Die erste Seite jedes Teil-Dokuments wird auf manuellem Schacht, der Rest auf oberem Schacht gedruckt. |