CIB pdf toolbox technischer Leitfaden (DE)
Site: | CIB eLearning |
Course: | CIB pdf toolbox |
Book: | CIB pdf toolbox technischer Leitfaden (DE) |
Printed by: | Guest user |
Date: | Friday, 22 November 2024, 4:19 AM |
Table of contents
- 1. Lieferumfang
- 2. Einführung
- 3. Die CIB pdf toolbox als „PDF Werkzeugkasten“
- 4. Nutzungsmöglichkeiten im Formularbereich
- 5. PDF/A Konvertierung
- 6. PDF Signatur mit Zertifikat
- 7. Passwörter und Verschlüsselung bei PDFs
- 8. PDF-Informationen Auslesen
- 9. Lesezeichen hinzufügen oder entfernen
- 10. Barcodeinformationen aus dem Pdf extrahieren
- 11. Unterstützte Grafikformate
- 12. Technische Schnittstellen
- 13. Allgemein gültige Properties
- 14. Interne Module im Detail
- 15. Briefpapierfunktion, Overlay von Texten, Grafiken und Barcodes
- 16. CIB ocr
- 17. Prüfschablonen verwenden
- 18. Schneller Einstieg
- 19. Programmrückgabewerte
- 20. Trace
1. Lieferumfang
AllgemeinCIB runshell
JAVA Kapsel mit JCoMod
CIB documentServer
Allgemein
Komponente |
Softwareumfang |
|
CIB pdf toolbox
|
CibPdf32(64).dll CibPdf32(64).lib CibPdf32(64).h CibDataCsv(64).dll CibDataXml(64).dll CIBxalan(64).dll Xalan-C_1_5_0.dll xerces-c_2_2_0.dll cibjbig232(64).dll libcibpdfux(64).so libcibpdfux(64).sl |
CIB pdf toolbox-DLL für Win, Schnittstelle zur Anwendung Library zur CIB pdf toolbox Include Datei zur CIB pdf toolbox Zugriffs Dll für CSV Daten Zugriffs Dll für XML Daten Tool Dll für XML Tool Dll XML Tool Dll XML Tool Dll für JBIG2-Grafiken CIB pdf toolbox shared library für diverse Unix Systeme CIB pdf toolbox shared library für HP Unix Systeme |
Abhängige Libraries unter Linux/Unix |
||
libgcc_s.so libstdc++.so.6 |
||
Abhängige Libraries unter AIX |
||
libgcc_s.a libstdc++.a |
Im Lieferumfang ist des Weiteren eine Hilfe und Anwendungsbeispiele enthalten.
Hinweise zu den Modulen:
Ab PDF 1.5 werden von Adobe interaktive Formulare basierend auf die Adobe XML Forms Architecture (XFA) unterstützt. Bei XFA ist die Information zu den Formularfeldern in einem XML-Datenstrom enthalten. Das bedeutet,
dass bei Einsatz der CIB pdf toolbox zusätzliche Module erforderlich sind. Im Folgenden werden diese Module näher erläutert.
Cibcache.dll optional, dient für den Cache von Abfragen mit CibDataXml.dll.
CibDataCsv.dll benötigt, wenn Eingabedaten des CIB pdf merge CSV-Format haben.
CibDataXml.dll benötigt, wenn Eingabedaten des CIB pdf merge XML-Format haben.
Cibxalan.dll benötigt, wenn Eingabedaten des CIB pdf merge XFDF-Format haben oder das PDF XFA-Objekte enthält.
xalan-c_1_5_0.dll benötigt, wenn CIBDataXml.dll oder Cibxalan.dll eingesetzt werden.
xerces-c_2_2_0.dll benötigt, wenn CIBDataXml.dll oder Cibxalan.dll eingesetzt werden
Jbig2dec.dll benötigt, wenn das PDF Grafiken im Format JBIG2 enthält.
Die CIB pdf toolbox ist für folgende weitere Plattformen verfügbar:
- Linux
- SUN Solaris
- IBM Aix
- HP Ux
- Linux für OS/390
- zusätzliche Plattformen auf Anfrage
CIB runshell
Die CIB runshell (cibrsh.exe) ermöglicht eine direkte Ansteuerung der CIB pdf toolbox Komponente(DLL), so dass darüber PDF Dateien verarbeitet werden können.
Der Anrufe der cibrsh.exe sieht wie folgt aus:
cibrsh.exe –f<Zusatzargument> <PDFDatei> [<PDF Dateien>]
Hier ein Beispiel für eine CIB pdf join Aufruf:
cibrsh.exe –fj Datei1.pdf Datei2.pdf
JAVA Kapsel mit JCoMod
Zusätzlich existiert mit dem JCoMod Wrapper eine komplette JAVA/JNI Kapselung, die eine einfache Ansteuerung der CIB pdf toolbox aus JAVA ermöglicht.
Es gibt auch entsprechende JAVA Klassen für die Kapselung der CIB runshell, so daß eine Nutzung der CIB Komponente nicht direkt im Prozeßraum der JAVA VM sondern in einem eigenen Prozeß darunter stattfindet.
CIB documentServer
Für eine Nutzung der CIB pdf toolbox in einem J2EE Container.
2. Einführung
Die CIB pdf toolbox eignet sich auch zum nachfolgenden Einsatz im Anschluß an eine CIB format/pdf Konvertierung um z.B. weitere originale PDF Dateien (Anlagen etc.) mit dem erzeugten Konvertierungsergebnis zu einer finalen PDF Ausgabedatei zu verarbeiten.
Die vorliegende Dokumentation gibt einen schnellen Überblick über die vielfältigen Nutzungsmöglichkeiten.
3. Die CIB pdf toolbox als „PDF Werkzeugkasten“
AllgemeinCIB pdf merge
CIB pdf join
CIB pdf overlay
CIB pdf linearized
CIB pdf print
CIB pdf split
CIB pdf interpreter
CIB pdf format
Allgemein
Die CIB pdf toolbox ist ein universeller Werkzeugkasten zur Be- und Verarbeitung von PDF Dateien. Die einzelnen Werkzeuge sind nach funktionalen Schwerpunkten untergliedert.
Dem Anwender steht der gesamte Funktionsumfang der CIB pdf toolbox zur Verfügung.
Bei allen Funktionen der CIB pdf toolbox werden die erweiterten PDF-Features wie Verschlüsselung und Weboptimierung unterstützt.
CIB pdf merge
Mit CIB pdf merge ist es möglich:
- Daten aus externen XML, XFDF und CSV Datenquellen in ein PDF einzumischen. Dabei werden im PDF Dokument enthaltene Formularfelder über ihren eindeutigen Namen angesprochen und mit dem angegebenen Inhalt gefüllt. Durch die Möglichkeit der Abarbeitung von Datensätzen wird sowohl die Einzelbrief- als auch die Serienbrieffunktionalität unterstützt.
- Die Daten können ebenso über direkte API Schnittstellen per Programmcode aus einzelnen Feldern abgefragt und/oder neu gesetzt werden.
- Für die befüllten Formularfelder kann zusätzlich angesteuert werden, ob sie später noch editiert werden können oder nur lesbar bleiben.
CIB pdf join
Mit CIB pdf join ist es möglich einzelne PDF Dateien/Bausteine aneinanderzufügen. Dabei sind als Übergabe auch verschlüsselte (Bedingung: Owner-Passwort für jede Datei bekannt) PDF Dateien möglich.
CIB pdf overlay
Mit CIB pdf overlay können verschiedene Objekte (z.B. Grafik, Text) auf eine Seite unter Angabe der Position aufgestempelt werden. Eine detaillierte Beschreibung zu diesem Werkzeug finden Sie im Kapitel „Briefpapierfunktion, Overlay von Texten, Grafiken und Barcodes“.
CIB pdf linearized
Mit CIB pdf linearized kann das PDF weboptimiert abgespeichert werden und die vorrangig anzuzeigenden Seiten können damit favorisiert werden.
Dies ist insbesondere während Internet-Downloads von Interesse, um dem Betrachter schnelle Anzeigen zu ermöglichen.
CIB pdf print
Mit dem CIB pdf print Interpreter aus der CIB pdf toolbox kann eine PDF-Datei direkt ausgedruckt werden. Optional steht auch eine Schnittstelle für eine interaktive Druckerselektion und weiterer Druckeigenschaften zur Verfügung.
Es ist auch möglich PDF Dateien in den Druckvorschau-/ Seitenansicht-Modul CIB view/jView vorher anzuzeigen und von dort auszudrucken.
Zusätzlich ist aus dem CIB view&form Modul auch eine PDF Formularfeldbearbeitung möglich.
CIB pdf split
Mit dem CIB pdf print Interpreter aus der CIB pdf toolbox kann eine PDF-Datei direkt ausgedruckt werden. Optional steht auch eine Schnittstelle für eine interaktive Druckerselektion und weiterer Druckeigenschaften zur Verfügung.
Es ist auch möglich PDF Dateien in den Druckvorschau-/ Seitenansicht-Modul CIB view/jView vorher anzuzeigen und von dort auszudrucken.
Zusätzlich ist aus dem CIB view&form Modul auch eine PDF Formularfeldbearbeitung möglich.
CIB pdf interpreter
Der in der CIB pdf toolbox enthaltene PDF Interpreter liefert insbesondere auch Fremdherstellern von PDF Oberflächen/Werkzeugen wichtige Detailinformationen zu PDF Dateien.
CIB pdf format
Die CIB pdf toolbox ermöglicht mit Ihren Werkzeugen auch das Umformatieren der geladenen PDFs in veränderte Zielstrukturen z.B. in PDF/A.
4. Nutzungsmöglichkeiten im Formularbereich
Die CIB pdf toolbox bietet optimale Möglichkeiten ein PDF Formularmanagement zu unterstützen.
Zum Einmischen von Nutzdaten in bestehende PDF-Formulare ist der CIB pdf merge die geeignete Anwendung. Die Unterstützung einer weboptimierten und/oder verschlüsselten Ausgabe ist dabei selbstverständlich.
Bei PDF Dokumenten ohne Formularfelder können variable Daten, Zusatztexte, Graphiken oder Formularfelder zum späteren interaktiven Befüllen mittels CIB pdf overlay an der gewünschten Position aufgebracht werden.
Damit werden praktisch alle Varianten, ein Formular mit Daten zu befüllen, abgedeckt.
Zusätzlich gibt es die Möglichkeit Auswertungen über die Felder eines Formulars zu machen. Man kann mit der CIB pdf toolbox:
- Alle enthaltenen Formularfelder abfragen
- Alle Feldtypen eines Formulars abfragen („Button“, „Check“, „Radio“, „Text“, „List“, „Combo“) und auch unbekannte Typen (z.B. Signatur) erkennen.
- Inhalt eines Feldes abfragen
- bei Checkboxen und Radiobuttons ist das der Statename (Exportwert)
- bei Textfeldern der Text
- bei Listboxen der ausgewählte Wert (bei Multiselect die ausgewählten Werte durch ; getrennt)
- bei Comboboxen der in dem Editfeld erscheinende Wert
- zusätzlich mögliche Werte abfragen
- bei Checkboxen, Radiobuttons, List- und Comboboxen: eine Liste der möglichen Werte, durch ; getrennt
- zusätzliche Feldoptionen abfragen
- derzeit nur „MaxLen=
“ bei Textfeldern mit MaxLen>0
In Verbindung mit den Oberflächenmodulen CIB view , CIB image oder jView ist interaktives Befüllen, Speichern und Drucken von PDF Formularen möglich, sofern die Felder nicht für das Editieren gesperrt wurden.
Ebenso wird in Verbindung mit diesen Komponenten ein direkter (Silent) PDF Druck unterstützt.
4.1. PDF-Dokumente mit XFA-Formulardaten
In PDF-Dokumenten können die Formular-Felder und deren Inhalte auch als XFA-Daten enthalten sein. Die Verarbeitung dieser Daten ist ab CIB pdf toolbox Version 1.4.89 möglich.
In der PDF-Spezifikation 1.5 wurde in PDF die Unterstützung von interaktiven Formularen eingeführt, die auf der XML-Architektur basieren. XFA (XML Forms Architecture) enthält die Informationen über das Formular in einem XML-Datenstrom. Hier geht es im Wesentlichen um die Formularfelder (Berechnungen, Validierungen, Formatierung) und die damit verbundenen Daten. XFA wurde von dem kanadischen Unternehmen JetForm entwickelt. Adobe erwarb dieses Unternehmen und führte XFA in seine PDF-Spezifikation und in die darauf basierenden Acrobat-Versionen 6 und 7 ein.
CIB pdf toolbox wandelt bei der Verarbeitung von XFA-Formularfeldern diese Informationen in ein normales PDF-Formularfeld um. Die XFA-Daten werden gelöscht. Dabei gehen Informationen verloren, die keine Entsprechung im PDF haben, z.B. numerisches oder Datums-Format.
4.2. Wie verhält sich die CIB pdf toolbox bei mehreren PDF Formularen?
Wenn man mehrere PDF Formulare mit einer CIB pdf toolbox Funktion verarbeiten möchte, dann kann es je nach gewähltem Verarbeitungsschritt zu Einschränkungen kommen, für die folgende Regeln gelten:
CIB pdf join
Beim Zusammenhängen von mehreren PDF Formularen kann es zu Situationen kommen, bei denen Formularfelder mit gleichem Namen in mehreren der Quellformulare auftreten. Folgende Regeln gelten dabei für das erzeugte PDF Zielformular:
- Die gleichnamigen Formularfelder müssen vom gleichen Feldtyp sein, ansonsten bricht der „Join-Vorgang“ ab.
- Globale Eigenschaften eines Formularfeldes – das sind Eigenschaften, die alle Felder gleichen Namens gemeinsam haben – werden grundsätzlich vom ersten Dokument übernommen.
Ausnahmen:
Die Eigenschaft „Text verbergen“ wie bei Passwortfeldern genießt Vorrang vor dem obigen Prinzip.
Die Elemente einer Listbox, werden um die Elemente des zweiten Dokuments erweitert.
Das gleiche gilt für Kombinationsfelder.
- Lokale Eigenschaften von Formularfeldern bleiben erhalten.
- Hierarchische Verfeinerungen eines existierenden Feldnamens sind nicht erlaubt.
Beispiel: Besitzt ein Dokument ein Formularfeld mit dem Namen „Säugetier.Wal“
und ein weiteres Dokument ein
Formularfeld mit dem Namen „Säugetier.Wal.Delfin“
so würde der „Join-Vorgang“ der beiden Dokumente abbrechen. Der Grund liegt
darin,
dass für die gängigsten Pdf-Reader diese Situation nicht vorgesehen ist.
Wichtiger Hinweis:
Grundsätzlich hat die aufrufende Anwendung auch die Möglichkeit den Formularfeldern jedes beteiligten Einzelformulars ein Präfix voranzustellen, so dass beim zusammenfügen mehrerer Formulare zu einem großen PDF Formular, alle Felder einen eindeutigen Feldnamen haben. Siehe Property: FormfieldNamePrefix
4.3. Formularfelder entfernen, aber die Ansicht behalten
Es ist möglich, Formularfelder aus Pdf Dokumenten zu entfernen, aber die optische “Ansicht” dieser Formularfelder zu erhalten. Dazu muss bei einem Aufruf von Pdf Join die Property FlattenFormfields “1” gesetzt werden.
Propertybezeichnung Typ Funktionalität Art FlattenFormfields String Ist
diese Property gleich „1“ gesetzt, so werden die Formularfelder entfernt,
aber die optische „Ansicht“ dieser Formularfelder bleibt erhalten. Mögliche
Werte: „0“: Es wird nichts getan.
(default) „1“: Alle Formularfelder werden
entfernt, aber die optische „Ansicht“ dieser Formularfelder bleibt erhalten. Set
Allerdings bleiben nur Formularfelder sichtbar, die auch auf dem Bildschirm
sichtbar sind. Ist z.B. ein Formularfeld nur beim Ausdrucken sichtbar, so ist
es nach dem Aufruf von FlattenFormfields nicht sichtbar.
Außerdem sind auch alle optischen Effekte, die durch JavaScript bewirkt
werden, nicht sichtbar. Die Ansicht nach dem Aufruf von FlattenFormfields ist
die gleiche wie bei einem Pdf Reader, bei dem „JavaScript“ deaktiviert ist.
Bei OutputFormat=FormatText wird der Inhalt der Formularfelder in den Textoutput
geschrieben.
5. PDF/A Konvertierung
Mit der CIB pdf toolbox können PDF-Dateien in das Archivformat PDF/A konvertiert werden. Als Ausgabeformate werden derzeit die Ausprägungen PDF/A-1b, PDF/A-2b und PDF/A-3b unterstützt.
Das gewünschte Ausgabeformat der zu erzeugenden PDF/A-Datei wird über die CIB pdf toolbox Property „PdfVersion“ gesetzt.
5.1. Empfehlungen und Hinweise
AllgemeinFormularfelder im PDF
PDF/A und Verschlüsselung
Signaturen in PDF/A
PDF Inhalte als Bilder in PDF/A
Einbetten von Dateianhängen in PDF/A-3
Allgemein
Im Folgenden werden einige „Best Practises“ und Hinweise für die Konvertierung von PDF-Dateien in PDF/A-Dateien aufgeführt.
Bei der Erzeugung von PDF/A-Dateien aus vorliegenden PDF-Dateien ist grundsätzlich zu beachten, welche Eigenschaften von PDF-Dateien
laut entsprechender PDF/A Spezifikation (ISO 19005-1, ISO 19005-2, ISO 19005-3) erlaubt sind.
Beispiele:
- Bei der Konvertierung nach PDF/A-1b und PDF/A-2b werden Anhänge in PDF-Dateien nicht ins PDF/A übernommen, diese werden entfernt.
- JavaScript Elemente in PDF-Dateien werden generell entfernt.
Formularfelder im PDF
Bei der Konvertierung nach PDF/A werden die in der PDF-Datei verwendeten Schriftarten in die erzeugte PDF/A-Datei eingebettet. Sind Formularfelder mit Inhalt in der PDF-Datei enthalten, so werden die gesamten zugehörigen Schriftarten ins Ergebnisdokument eingebettet. Die Dateigröße kann sich dadurch erheblich erhöhen.
Um nur die verwendeten Zeichen der zugehörigen Schriftarten in das Ergebnisdokument einzubetten, empfehlen wir die Property „FlattenFormfields“ auf den Wert „1” zu setzen. Die optische Repräsentation der Formularfelder bleibt dadurch erhalten, das Formularfeld selbst wird entfernt. Nähere Informationen dazu sind hier nachzulesen.
PDF/A und Verschlüsselung
Bei der Konvertierung in das Archivformat PDF/A wird eine Verschlüsselung generell entfernt. Weiterführende Informationen zu Verschlüsselung und Passwortschutz sind hier nachzulesen.
Signaturen in PDF/A
Aktuell wird das Signieren nur für die Versionen PDF/A-2b und PDF/A-3b unterstützt. Detaillierte Informationen zum Signieren von PDF finden sich in hier.
PDF Inhalte als Bilder in PDF/A
Fehlerbehandlung mit PdfAFallback
Für den Fall, dass Elemente einer PDF-Seite nicht nach PDF/A konvertiert werden können, wird eine Fehlermeldung ausgegeben. Um trotzdem ein gültiges PDF/A Dokument zu erstellen kann die Property „PdfAFallback“ gesetzt werden. Über die Property wird gesteuert, dass in einem solchen Fall die betreffende Seite automatisch über den CIB renderer als Grafik in die PDF/A-Datei konvertiert wird. Die möglichen Übergabeparameter sind hier aufgeführt.
Einbetten von Dateianhängen in PDF/A-3
In Archivformat PDF/A-3 sind eingebettete Dateien (Dateianhänge)
erlaubt. Zu den eingebetteten Dateien können zusätzliche Beschreibungen über
die Werte der Property „EmbeddedFiles“ (siehe hier)
angegeben werden.
5.2. Spezielle Optionen für PDF/A
Propertybezeichnung
Propertybezeichnung Typ Funktionalität Art PdfAFallback (ab CIB pdf toolbox 1.12.0) String Steuert, ob bei Auftreten eines Fehlers bei der PDF/A
Konvertierung automatisch die betreffende Seite über CIB renderer als Grafik konvertiert
wird. Mögliche Werte: „0“ Bei einem Fehler während der PDF/A
Konvertierung wird ein Rückgabewert gesetzt(default). „1“ Bei einem Fehler wird die entsprechende Seite
über den CIB renderer als Grafik konvertiert. Set PdfVersion String Setzen der zu erzeugenden PDF/A Version. Gültige Werte: „PDF/A-1b“ Nach ISO 19005-1 „PDF/A-2b“ Nach ISO 19005-2 „PDF/A-3b“ Nach ISO 19005-3 Get/Set SkipPageXmpCheck
(ab CIB pdf toolbox 1.20.0) String Über diese Property kann die Behandlung der auf
Seiten-Ebene im PDF vorhandenen XMP Metadaten bei der PDF/A-Konvertierung
gesteuert werden. Mögliche
Werte: 0
Default 1
Die auf Seiten-Ebene vorhandenen XMP Metadaten
werden ungeprüft in die PDF/A-Ausgabe übernommen. Set ImagePdfCreationPreserveText (ab CIB pdf toolbox 1.21.0) String Über diese Property kann gesteuert werden, dass im
Falle eines PDF/A-Fallbacks (PdfAFallback=1, Details siehe Beschreibung zur
Property PdfAFallback) extrahiert und in das erzeugte PDF/A eingebettet wird. Der Textinhalt wird aus dem PDF extrahiert, in das
HOCR-Format konvertiert und als HOCR in das PDF/A eingebettet. Mögliche Werte: 0
Default 1
Der Textinhalt wird extrahiert und in das
PDF/A eingebettet Set
Alle im PDF vorhandenen XMP Metadaten werden entfernt und in der
PDF/A-Ausgabe auf Dokument-Ebene durch XMP-Metadaten mit Standardwerten ersetzt.
In diesem Fall ist der Anwender dafür verantwortlich, dass diese Daten PDF/A konform
sind.
Keine Textextraktion
6. PDF Signatur mit Zertifikat
(Ab CIB pdf toolbox Version 1.6.115)
6.1. Allgemeine Informationen zur PDF-Signatur
AllgemeinSignieren/Verifizieren mit der CIB pdf toolbox
Signieren/Verfizieren im CIB pdf toolbox merge
Signieren/Verfizieren im CIB pdf toolbox join
Allgemein
Es gibt zwei Typen von PDF-Signaturen.
Bei einer Byte Range Signatur handelt es sich um eine Signatur, die alle Bytes des fast gesamten PDFs abdeckt.
Hiervon gibt es zwei Arten.- PDF 1.5: Ein “object digest” ist ein Hash-Algorithmus, der beim Durchlaufen eines Teilbaums der Objekte des PDFs ausgeführt wird.
- PDF 1.6 und höher: Dafür wird die zweite Art empfohlen. Die Einträge wie in der ersten Art werden gesetzt, ohne jedoch einen Hash-Algrithmus zu durchlaufen.
Zum Verifizieren der Signatur muss die Anwendung das vorliegende Dokument mit dem signierten vergleichen und dabei prüfen, ob Änderungen an Objekten vorgenommen wurden, die durch die Signatur-Einträge nicht erlaubt sind.
Signieren:
Die CIB pdf toolbox unterstützt sowohl die “DocMDP” (= Modification Detection Prevention) object digest Signatur als auch die “Lock” object digest Signatur. Beide sind nur in einer Pdf Datei mit Pdf Version größer gleich 1.5 erlaubt. Zum Lesen der DocMDP-Signatur ist ein Adobe Reader der Version 7.0 oder höher erforderlich.
Verifizieren der Signatur:
Zurzeit wird von der CIB pdf toolbox nur geprüft, ob das PDF nach dem Signieren nochmal geändert wurde. Ist dies der Fall, ist das PDF ungültig.
Es wird noch nicht geprüft, welche Änderung durchgeführt wurde und ob diese vielleicht erlaubt ist. Eine diesbezügliche Erweiterung der CIB pdf toolbox ist vorgesehen.
Hinweis: UR3 Signaturen werden zwar geprüft und das Ergebnis in den Trace geschrieben, aber ansonsten wird das Ergebnis ignoriert.
Signieren/Verifizieren mit der CIB pdf toolbox
PDFs können sowohl mit dem CIB pdf toolbox Merge (-fm) als auch mit dem Join (-fj) signiert werden. Im Falle mehrerer Ausgabe-PDFs wird (von beiden Modulen) jedes PDF einzeln signiert.
Durch die Verarbeitung mit der CIB pdf toolbox werden eventuell in den Eingabe-PDFs vorhandene Signaturen ungültig und können daher nicht in das Ausgabe-PDF übernommen werden, da bei der Verarbeitung der interne Aufbau des PDFs verändert wird.
Beim Signieren des Ausgabe-PDFs werden alle alten Signaturen aus den Eingabe-PDFs entfernt. Wenn die Ausgabe nicht signiert wird, kann das Entfernen der alten Signaturen aus der Eingabe durch Setzen der Property RemovePdfSignatures=”1” erreicht werden.
Wenn durch die Module CIB pdf toolbox Merge oder Join die PDF Signaturen verfiziert werden soll, so muss dies explizit durch Setzen der Property „CheckPdfSignatures=1“ angestoßen werden. Dann werden alle Signaturen aller Eingabe-PDFs geprüft.
Signieren/Verfizieren im CIB pdf toolbox merge
Im CIB pdf toolbox merge (CIB runshell -fm) ist nur eine Eingabedatei möglich. Enthält diese Eingabedatei eine Signatur, so wird diese nur dann verifiziert, wenn CheckPdfSignatures=1 gesetzt ist.
Im CIB pdf toolbox merge sind eine oder mehrere Ausgabedateien möglich. Beim Signieren wird jede Ausgabedatei mit einer eigenen Signatur versehen.
Signieren/Verfizieren im CIB pdf toolbox join
Im CIB pdf toolbox join (CIB runshell -fj) sind eine oder mehrere Eingabedateien möglich. Enthalten eine oder mehrere dieser Eingabedateien eine Signatur, so werden diese nur dann verifiziert, wenn CheckPdfSignatures=1 gesetzt ist.
Im CIB pdf toolbox join sind auch eine oder mehrere (SplitPages=1) Ausgabedateien möglich. Beim Signieren wird dann jede Ausgabedatei mit einer eigenen Signatur versehen.
6.2. Properties zum Signieren und Verfizieren der Signatur
Propertybezeichnung |
Typ |
Funktionalität |
Art |
SignPdf |
String |
Property, mit der das Signieren des Ausgabe-PDFs eingeschaltet werden kann. Mögliche Werte: „0“ kein Signieren (default) „1“ PDF wird signiert Eventuell in den Eingabe-PDFs enthaltene Signaturen werden standardmäßig gelöscht. |
Set |
SignPdf.DocMDP |
String |
Die Signatur bekommt den Typ „DocMDP“ (Autorensignatur). Das bedeutet, dass im PDF nachträglich nur Änderungen vorgenommen werden dürfen, die vom Autor explizit erlaubt wurden. Andere Änderungen machen die Signatur ungültig. Mögliche Werte: „“ Keine DocMDP Signatur (default) „1“ Keine Änderungen erlaubt „2“ Erlaubt sind: „3“ Erlaubt sind: sonst: keine DocMDP Signatur Hinweis: Dokumente mit DocMDP-Signatur können nur von Adobe Reader 7.0 oder höher gelesen werden. |
Set |
SignPdf.Lock |
String |
Die Signatur bekommt den Typ Lock. D.h. es sind keinerlei Änderungen an Formularfeldern erlaubt bzw. es dürfen keine sichtbaren Signaturen mehr hinzugefügt werden. Voraussetzungen: SignPdf=1, SignPdf.DocMDP ist nicht gesetzt, und die Pdf Version der Ausgabe-Pdf-Datei ist größer gleich 1.5. Mögliche Werte: „0“ Keine Sperrung des Dokuments (default) „1“ Dokument ist im obigen Sinne gesperrt. Dies entspricht der Option „Lock Document After Signing“ von Adobe Professional. Im Adobe Reader wird angezeigt:”The document is locked by that signature”. |
Set |
CertificateFilename |
String |
Angabe des Namens (ggf. mit Pfad) der Zertifikats-Datei. Dabei muss es sich um ein PKCS12-Zertifikatsfile handeln (übliche Endung „.p12“ oder „.pfx“). Die Signierung mit PEM-Datei(en) ist noch nicht verfügbar. Sie ist noch nicht hinreichend getestet. Es können mehrere PEM-Dateien angegeben werden. Diese müssen durch einen Strichpunkt (;) getrennt sein. Alle Dateien zusammen müssen genau einen privaten Schlüssel enthalten. Außerdem muss der öffentliche Schlüssel und (optional) die Schlüsselkette des Signierers enthalten sein. Wenn die PEM-Dateien mehrere private Schlüssel enthalten, wird der erste private Schlüssel verwendet, der zum „CerticatePassword“ passt. |
Set |
CertificatePassword |
String |
Angabe des Passwortes für die Zertifikatsdatei. |
Set |
RemovePdfSignatures |
String |
Über diese Property wird gesteuert, ob in den Eingabedateien vorhandene Signaturen gelöscht werden oder nicht. Mögliche Werte: „0“ Es werden keine Signaturen entfernt. „1“ Es werden alle Signaturen entfernt. Es gibt ein unterschiedliches Standard-Verhalten: |
Set |
RemovePdfSignaturesKeepAppearance |
String |
Diese Property wird nur angewendet, wenn entweder RemovePdfSignatures=1 oder SignPdf=1 gesetzt sind. Mögliche Werte: „0“ Beim Entfernen der Signaturen wird auch der sichtbare Teil der Signatur entfernt. (default) „1“ Beim Entfernen der Signaturen wird der sichtbare Teil der Signatur (z.B. ein Bild oder ein Text) beibehalten. Die Signatur selbst wird aber entfernt. |
Set |
CheckPdfSignatures |
String |
Über diese Property wird gesteuert, ob in den Eingabedateien vorhandene Signaturen geprüft werden oder nicht. Mögliche Werte: „0“ Es werden keine Signaturen geprüft. (default) „1“ Es werden alle Signaturen geprüft. |
Set |
TrustedCertificatesDirectory |
String |
Verzeichnis, das die vertrauenswürdigen Zertifikate (mit den öffentlichen Schlüsseln) für die CIB pdf toolbox enthält. Zum Überprüfen der Vertrauenswürdigkeit der Signatur-Zertifikate im Pdf Dokument bei CheckPdfSignature=”1” ist dieses Verzeichnis zwingend erforderlich. Default: ””. Falls diese Eigenschaft leer ist, kann nicht überprüft werden, ob die Signatur-Zertifikate vertrauenswürdig sind. Aber die Verifizierung der Signatur wird trotzdem nicht abgebrochen! Folgende Zertifikatsfiles mit öffentlichen Schlüsseln werden unterstützt: CER-files („.cer“) in DER- und Base64-Codierung CRT-files („.crt“) in DER- und Base64-Codierung PEM-files („.pem“) P7B-files („.p7b“) in DER-Codierung P7C-files („.p7c“) in DER-Codierung SPC-files („.spc“) in DER-Codierung |
Set |
OutputFormat |
String |
Das Prüfverhalten (also nur bei CheckPdfSignature=”1”) der CIB pdf toolbox wird durch die Belegung der Property “OutputFormat” gesteuert. Dafür wurde ein neuer Wert ”FormatAnalyse” eingeführt.
-
OutputFormat=”FormatAnalyse”
-
OutputFormat ungleich“FormatAnalyse” |
Set |
SignedDocument.DocumentIsUnmodified |
String |
Für jedes Eingabe-PDF wird der Änderungsstatus ausgegeben. Für jede Eingabedatei wird in Form einer Liste, durch „;“ getrennt, je ein Wert ausgegeben. Mögliche Werte: “” Nicht belegt durch die CIB pdf toolbox. (default) “1” Das Dokument wurde nach dem Signieren nicht mehr geändert. “0” Das Dokument wurde nach dem Signieren geändert. “not implemented” Diese Funktionalität wurde noch nicht implementiert. “no signature” Das PDF enthält keine Signatur. |
Get |
SignedDocument.DocumentModificationsAreAllowed |
String |
Für jedes Eingabe-PDF werden eventuell erfolgte Änderungen klassifiziert. Für jede Eingabedatei wird in Form einer Liste, durch „;“ getrennt, je ein Wert ausgegeben. Achtung: Mögliche Werte: “” Nicht belegt durch die CIB pdf toolbox. (default) “1” Die nach dem Signieren erfolgten Änderungen sind erlaubt. “0” Die nach dem Signieren erfolgten Änderungen sind nicht erlaubt. “not implemented” Diese Funktionalität wurde noch nicht implementiert. “no signature” Das PDF enthält keine Signatur. |
Get |
SignedDocument.DocumentSignatureDateIsValid |
String |
Für jedes Eingabe-PDF wird das Signaturdatum geprüft. Für jede Eingabedatei wird in Form einer Liste, durch „;“ getrennt, je ein Wert ausgegeben. Mögliche Werte: “” Nicht belegt durch die CIB pdf toolbox. (default) “1” Das Signaturdatum im PDF passt zu allen Datumsangaben in der Zertifikatskette. “0” Das Signaturdatum fehlt, oder es passt nicht zu mindestens einem Datum aus der Zertifikatskette. “not implemented” Diese Funktionalität wurde noch nicht implementiert. “no signature” Das PDF enthält keine Signatur. |
Get |
SignedDocument.CertificateChainIsValid |
String |
Für jedes Eingabe-PDF wird geprüft, ob die Zertifikatskette durchgängig gültig ist. Für jede Eingabedatei wird in Form einer Liste, durch „;“ getrennt, je ein Wert ausgegeben. Mögliche Werte: “ ” Nicht belegt durch die CIB pdf toolbox. (default) “1” Die Zertifikatskette ist durchgängig gültig. “0” Mindestens ein Zertifikat in der Zertifikatskette ist nicht gültig. “not implemented” Diese Funktionalität wurde noch nicht implementiert. “no signature” Das PDF enthält keine Signatur. |
Get |
SignedDocument.CertificateIsTrusted |
String |
Für jedes Eingabe-PDF wird die Vertrauenswürdigkeit der Signaturen überprüft. Für jede Eingabedatei wird in Form einer Liste, durch „;“ getrennt, je ein Wert ausgegeben. Mögliche Werte: “ ” Nicht belegt durch die CIB pdf toolbox. (default) “1” Ein Zertifikat aus der Zertifikatskette ist gültig. Und die Kette vom Zertifikat der Signatur bis zu diesem gültigen Zertifikat ist durchgängig gültig. “0” Es gibt kein gültiges Zertifikat in der Zertifikatskette. Oder die Kette vom Zertifikat der Signatur bis zu dem gültigen Zertifikat ist nicht durchgängig gültig. “not implemented” Die Property “TrustedCertificatesDirectory” ist nicht belegt. “no signature” Das PDF enthält keine Signatur. |
Get |
7. Passwörter und Verschlüsselung bei PDFs
Im Zusammenhang mit PDF Dateien tauchen oft die Begriffe „Owner Password“ (Eigentümer-Passwort) und „User Password“ (Benutzer-Passwort) auf.
Das Benutzer-Passwort muss bereits zum Lesen eines verschlüsselten Dokumentes eingegeben werden. Mit dem Benutzerkennwort ist es nicht möglich die Sicherheitseinstellungen beim Speichern zu ändern oder zurückzusetzen. Neben dem Schutz vor dem illegitimen Öffnen lassen sich zusätzliche Nutzungsbeschränkungen festlegen. Hierzu zählen: Drucken nicht zulässig, Dokument ändern nicht zulässig usw.
Das Eigentümer-Passwort berechtigt zur Änderung des Benutzerkennwortes oder der Berechtigungen. Wird das Eigentümer-Passwort bereits beim Öffnen einer mit Benutzer- und Eigentümer-Passwort geschützten Datei angegeben, treten die Nutzungsbeschränkungen, die durch die Berechtigungen festgelegt sind, nicht in Kraft.
Die CIB pdf toolbox verlangt für verschiedene Funktionen das Setzen von Passworten. Man kann beim Bearbeiten von PDF Dateien auch neue Passwörter für die Zieldatei vergeben.
Folgende Fragen und Antworten helfen Ihnen hoffentlich weiter:
- Kann ein PDF ein Owner-Passwort haben und kein User-Passwort?
Ja, das ist der Fall wenn der Benutzer das PDF lesen aber nicht bearbeiten (bzw. speichern/drucken/was auch immer eingestellt ist) kann. - Kann ein PDF ein User-Passwort haben und kein Owner-Passwort?
Nein, in diesem Fall wird intern automatisch das Owner-Passwort gleich dem User-Passwort gesetzt. - Welches der beiden Passwörter benötigt man, um die Datei im Reader überhaupt zu öffnen?
Um das PDF im Reader zu öffnen, kann entweder das Owner-Passwort oder das User-Passwort angegeben werden. - Ein PDF kann nicht gleichzeitig verschlüsselt sein und beide Passwörter leer haben. Wenn beide Passwörter leer sind, wird das PDF immer unverschlüsselt gespeichert.
7.1. Wie verhält sich die CIB pdf toolbox bei Passwortschutz?
Untere Tabelle gibt einen Überblick darüber, wie die CIB pdf toolbox passwort-geschützte PDF-Dateien verarbeitet. Am Beispiel eines Vorganges zum Aneinanderhängen von 2 PDF Dateien (CIB pdf join) sind alle denkbaren Varianten durchgespielt.
Hauptdatei = Erste Datei, die bei InputFilename angegeben wird.
|
Angehängte Datei hat kein Passwort |
Angehängte Datei hat ein Eigentümer-Passwort |
Angehängte Datei hat ein Eigentümer- und ein Benutzer-Passwort |
Hauptdatei hat kein Passwort |
Ergebnisdatei hat kein Passwort. |
Ergebnisdatei hat das Passwort der angehängten Datei. |
Ergebnisdatei hat hat das Passwort der angehängten Datei.. |
Hauptdatei hat ein Eigentümer-Passwort |
Ergebnisdatei hat Eigentümer-Passwort der Hauptdatei. |
Ergebnisdatei hat Eigentümer-Passwort der Hauptdatei. |
Ergebnisdatei hat Eigentümerpasswort der Hauptdatei. |
Hauptdatei hat ein Eigentümer- und Benutzer-Passwort |
Ergebnisdatei hat Eigentümer- und Benutzer-Passwort der Hauptdatei. |
Ergebnisdatei hat Eigentümer- und Benutzer-Passwort der Hauptdatei. |
Ergebnisdatei hat Eigentümer- und Benutzer-Passwort der Hauptdatei. |
Zusammenfassend lässt sich sagen:
Werden mehrere Dateien aneinandergehängt von denen auch mehrere Passwort-geschützt
sind, so wird immer das erste gefundene Passwort für die Ausgabedatei genommen.
Die Tatsache, ob die Ergebnisdatei verschlüsselt wird und welcher Verschlüsselungs-Algorithmus hierfür verwendet wird, entscheidet sich nach der gleichen Logik wie in der Tabelle für das Passwort beschrieben wurde.
⚠️ Wenn das Ergebnisdokument einen neuen, eigenen Passwortschutz erhalten bzw. anders verschlüsselt werden soll, sind die Properties „OutputOwnerPassword“ und/oder „OutputUserPassword“ an den CIB pdf/join zu setzen.7.2. Properties für Passwort-Schutz und Verschlüsselung
Propertybezeichnung
Propertybezeichnung Typ Funktionalität Art AllowPdfPermissions (ab CIB
pdf toolbox 1.8.3) String Über
die Property kann gesteuert werden, ob bei der Verarbeitung die im PDF über
das Owner-Passwort gesetzten Bearbeitungsrechte berücksichtigt werden. Achtung: Das
erzeugte Ausgabe-PDF ist nicht verschlüsselt. 1 Rechte werden ignoriert 0 Rechte werden beachtet (default) Bei der
PDF/A Konvertierung eines mit Ownerpasswort geschützten PDF muss diese
Property auf den Wert „1“ gesetzt werden. Andernfalls wird ein Fehler
ausgegeben. Set EncryptDocumentPassword (ab CIB pdf toolbox 1.18.0) String Über
diese Property kann das Passwort für ein Passwort-geschütztes Dokument übergeben
werden ohne die Detailangabe, ob es sich um ein EncryptUserPassword oder EncryptOwnerPassword
handelt. Die
Syntax ist identisch zu der von diesen beiden Properties. Wenn
das EncryptDocumentPassword gesetzt wird, stellt die CIB pdf toolbox bei der
Verarbeitung fest um welches Passwort es sich dabei handelt (User oder Owner). Für die
Rückmeldung dieser Information wurden die Metadaten PDFPERMISSION (= SECURITYINFO)
um das Flag IsOwnerAccess erweitert: Achtung: Set EncryptOwnerPassword String Owner-Passwort
(Eigentümer-Passwort) der Eingabedatei (bzw. der Eingabedateien) bzw.
BackgroundFilename. Das
Passwort selbst darf kein „;“ enthalten. Set EncryptUserPassword String User-Passwort
(Benutzer-Passwort) der Eingabedatei (bzw. der Eingabedateien) bzw.
BackgroundFilename. Das
Passwort selbst darf kein „;“ enthalten. Set OutputOwnerPassword String Vergibt
neues Owner-Passwort (Eigentümer-Passwort) für die Ausgabedatei. Das
Passwort selbst darf kein „;“ enthalten. Set OutputUserPassword String Vergibt
neues User-Passwort (Benutzer-Passwort) für die Ausgabedatei. Das
Passwort selbst darf kein „;“ enthalten. Set PdfUserPasswordPresent String Mögliche Werte sind: „“ oder „0“ = es ist kein User-Password
vorhanden “1” = User-Password ist
vorhanden Get PdfOwnerPasswordPresent String Mögliche Werte sind: „“ oder „0“ = es ist kein Owner-Password
vorhanden “1” = Owner-Password ist
vorhanden Get PdfVersion String Setzen
der zu erzeugenden PdfVersion. Gültige Werte: “1.3” Acrobat-Familie
4 “1.4” Acrobat-Familie
5 (default) “1.5” Acrobat-Familie
6 “1.6” Acrobat-Familie
7 „1.7“ Acrobat-Familie
8 Ab CIB pdf toolbox Version 1.4.109: Hinweis:
Get/ EncryptMetadata (Ab CIB pdf toolbox Version 1.4.109) String Durch Setzen dieser Property
kann der Benutzer steuern, ob die Metadaten im PDF verschlüsselt werden. Mögliche Werte: Hinweis: Get/ Die Einstellungen der folgenden
Encryptxxx-Properties (Berechtigungen) werden generell mit dem Passwort aus
der Eingabe in das Ausgabedokument übernommen. Siehe hierzu Kapitel „Wie
verhält sich die CIB pdf toolbox bei Passwortschutz?“. Wird für das Ausgabedokument ein
neues Passwort (OutputOwnerPassword, OutputUserPassword) vergeben, können die
Berechtigungen durch Setzen der folgenden Encryptxxx-Properties neu vergeben
werden. EncryptEnableAssembling String Dokumentzusammenstellung
für die Ausgabedatei genehmigen. Mögliche
Werte: Set EncryptEnableClipboard String Kopieren
von Inhalt für die Ausgabedatei genehmigen. Mögliche
Werte: Set EncryptEnableExtract String ScreenReader-Programme
(z.B. für Sehbehinderte) können auf den Inhalt zugreifen. Der Benutzer darf
Text und Grafiken nicht aus der PDF-Datei kopieren, wenn dieser Wert gesetzt
ist. Mögliche
Werte: „0“ keine Erlaubnis (default) „1“ Aktion erlaubt Set EncryptEnableForms String Ausfüllen
von Formularfeldern für die Ausgabedatei genehmigen. Mögliche
Werte: Set EncryptEnableModifying String Der
Benutzer darf die PDF-Datei verändern (Text hinzufügen etc.), wenn dieser
Wert gesetzt ist. Mögliche Werte: „0“ keine Erlaubnis (default) „1“ Aktion erlaubt Set EncryptEnableNotes String Der
Benutzer darf der PDF-Datei Text Notes und AcroForm Felder hinzufügen und
vorhandene ändern, wenn dieser Wert gesetzt ist. Mögliche Werte: „0“ keine Erlaubnis (default) „1“ Aktion erlaubt Set EncryptEnablePrinting String Drucken
für die Ausgabedatei genehmigen. Mögliche
Werte: Set PdfEncryptionLevel String Liefert die
Verschlüsselungstiefe, welche größer gleich 40 und immer ein Vielfaches von
8. Get PdfEncryptionAlgorithm String Liefert den Wert des
Verschlüsselungsalgorithmus. „0“ = undokumentierter Algorithmus „1“ = PDF-Verschlüsselung 40 bit (RC4-40) „2“ = PDF-Verschlüsselung, 40 bit oder höher (RC4-128) „3“ = undokumentierter Algorithmus Ab CIB pdf toolbox 1.4.107: „4“ = AES-128 Ab CIB pdf toolbox 1.4.109: „5“ = AES-256 Get PdfPermissionAssemble String Mögliche Werte sind: „“ = Tauschen von Seiten,
erzeugen von Lesezeichen und Thumbnails erlaubt „NotAllowed” = Tauschen von
Seiten, erzeugen von Lesezeichen und Thumbnails nicht erlaubt Get PdfPermissionContentAccess String Mögliche Werte sind: „“ = ausschneiden von Text und
Grafik erlaubt „NotAllowed” = ausschneiden von
Text und Grafik nicht erlaubt Get PdfPermissionCopy String Mögliche Werte sind: „“ = kopieren von Text und
Grafiken erlaubt „NotAllowed“ = kopieren von Text
und Grafiken nicht erlaubt Get PdfPermissionFillFormFields String Mögliche Werte sind: „“ = ausfüllen von
Formularfeldern, einschließlich Signaturfeldern, erlaubt „NotAllowed“ = ausfüllen von
Formularfeldern, einschließlich Signaturfeldern, nicht erlaubt Get PdfPermissionModify (ab CIB pdf toolbox 1.4.78) String Mögliche Werte sind: „“ = Änderung ist erlaubt „NotAllowed“ = nicht erlaubt Get PdfPermissionModifyAnnotations (ab CIB pdf toolbox 1.4.78) String add or modify text annotations and (if modify permission is true) form
fields) Mögliche Werte sind: „“ = Änderung von Annotations ist erlaubt „NotAllowed“ = nicht erlaubt Get PdfPermissionPrint String Mögliche Werte sind: „“ = Drucken erlaubt „NotAllowed“ = Druck nicht
erlaubt „Low Resolution“ = Druck nur in
geringer Auflösung Get PdfPermissions String Bitfeld
als Dezimalzahl, erlaubte Zugriffsarten ohne Hauptkennwort Get
Ein evtl. im PDF vergebenes User-Passwort muss gesetzt werden, sonst findet
keine Verarbeitung statt.
1 Owner-Passwort
0 User-Passwort
Die SECURITYINFO
Metadaten werden nur bei verschlüsselten Dokumenten gesetzt. Falls sie aldso
nicht vohanden sind bedeutet das, dass das Dokument ungeschützt ist.
Die Passwörter sind in genau der Reihenfolge aufzulisten wie die zugehörigen
Dateien innerhalb der Properties InputFilename /BackgroundFilename (durch „;“
getrennt).
Die Passwörter sind in genau der Reihenfolge aufzulisten wie die zugehörigen
Dateien innerhalb der Properties InputFilename /BackgroundFilename (durch „;“
getrennt).
(ab
CIB pdf toolbox 1.4.78)
(ab CIB pdf toolbox 1.4.78)
“1.7EL3“ Acrobat Familie 8
(zum Öffnen ist ein Acrobat Reader
ab Version 9 erforderlich!)
Bei aktivierter Verschlüsselung werden folgende Verschlüsselungs-Algorithmen
angewendet:
”1.3” RC4-40, Revision 2
”1.4” RC4-128, Revision 3
”1.5” RC4-128, Revision 4
ab “1.6” AES-128, Revision 4
ab „1.7EL3“ AES-256, Revision 5
Set
Bei den Metadaten handelt es sich um allgemeine Informationen zum PDF wie
Autor, Erstellungsdatum etc. Format und Inhalt der Metadaten sind nicht
festgelegt und hängen von dem Tool ab, das das PDF erstellt hat.
„0“ keine Verschlüsselung der Meta-
daten
„1“ Metadaten werden verschlüsselt
(default)
Für die Verarbeitung dieser Property ist eine PdfVersion von mindestens 1.5
erforderlich.
Set
Bei unverschlüsselter Eingabe werden in der Ausgabe alle Schalter auf TRUE
gesetzt.
“1“ oder „TRUE“ erlaubt
“0“ oder „FALSE“ nicht erlaubt
“1“ oder „TRUE“ erlaubt
“0“ oder „FALSE“ nicht erlaubt
“1“ oder „TRUE“ erlaubt
“0“ oder „FALSE“ nicht erlaubt
“1“ oder „TRUE“ erlaubt
“0“ oder „FALSE“ nicht erlaubt
(ab
CIB pdf toolbox 1.4.78)
(ab
CIB pdf toolbox 1.4.78)
Bei den Fällen „4“ und „5“ ist benutzerdefinierte Verschlüsselung möglich.
Hiermit ist das von Acrobat angebotene Feature „Metadaten unverschlüsselt“
gemeint.
(ab
CIB pdf toolbox 1.4.78)
(ab
CIB pdf toolbox 1.4.78)
(ab
CIB pdf toolbox 1.4.78)
(ab CIB pdf toolbox 1.4.78)
(bit 3 gesetzt oder Dokument nicht verschlüsselt)
(bit 3 nicht gesetzt)
(bit 5 gesetzt oder Dokument nicht verschlüsselt)
(bit 5 nicht gesetzt)
(ab
CIB pdf toolbox 1.4.78)
8. PDF-Informationen Auslesen
(Ab CIB pdf toolbox Version 1.6.116f)
Durch einen CIB pdf toolbox join können globale Dokumenten-Eigenschaften aus dem PDF ausgelesen werden. Dazu muss die Property OutputFormat auf den Wert “FormatInfo” gesetzt werden. Als Eingabedokument darf nur eine PDF Datei angegeben werden. Die Angabe einer Ausgabedatei wird ignoriert. Außer dem Auslesen der Dokumenten-Eigenschaften findet keine weitere Verarbeitung statt.
Die Werte aus dem PDF werden in Properties übertragen. Konkret handelt es sich um folgende Properties:
PageCount: Anzahl Seiten im Dokument
DocInfo.Author: Verfasser
DocInfo.Title: Titel
DocInfo.Subject: Betreff
DocInfo.Keywords: Schlüsselwörter
DocInfo.CreationDate: Erstellungsdatum
DocInfo.ModDate: Änderungsdatum
PdfPermissionAssembly: Tauschen von Seiten, erzeugen von Lesezeichen und Thumbnails (nicht) erlaubt
PdfPermissionContentAccess: Ausschneiden von Text und Grafik (nicht) erlaubt
PdfPermissionCopy: Kopieren von Text und Grafik (nicht) erlaubt
PdfPermissionFillFormFields: Ausfüllen von Formularfeldern, einschließlich Signaturfeldern, (nicht) erlaubt
PdfPermissionPrint: Drucken (nicht) erlaubt
Ab CIB pdf toolbox Version 1.20 können zusätzlich Informationen zu den Schriftarten und Bildern in einem PDF Dokument ausgegeben werden.
Dazu muss zusätzlich die Property FilterInfo mit den Optionen „FilterInfo=FontsInfo;ImagesInfo“ gesetzt werden. Damit werden die Ausgabeproperties FontsInfo und ImagesInfo befüllt.
ImagesInfo hat dabei folgende JSON Syntax:
[
\{”ID”:<NumID>, “Height”:<NumHeight>, “Width”:<NumWidth>, “IsMask”:<true/false>, “CompressionMethod”:”<Method>”, “CompressedSize”:<Size>}
,...]
Beispiel:
[
\{”ID”:15, “Height”:32, “Width”:32, “IsMask”:false, “CompressionMethod”:”DCTDecode”, “CompressedSize”:256}
,...]
FontsInfo hat folgende JSON Syntax:
[ \{”ID”:<NumID>, “Name”:”<FontName>”, “Type”:”<FontType>”,”Embedded”:<true/false>,”CompressedSize”:<NumericSize>}} ...]
Beispiel:
[ \{”ID”:10, “Name”:”Courier”, “Type”:”Type1”,”Embedded”:true,”CompressedSize”:1024}}, ...]
9. Lesezeichen hinzufügen oder entfernen
(Ab CIB pdf toolbox 1.6.116 )
Mit Hilfe des CIB pdf toolbox Join können Lesezeichen (Bookmarks bzw. Outlines) aus PDF Dokumenten entfernt oder neue hinzugefügt werden. Dies geschieht mit Hilfe der folgenden Properties:
Propertybezeichnung |
Typ |
Funktionalität |
Art |
OutlinesDeleteExisting |
String |
Über diese Property kann man alle Outlines und Bookmarks aus den Eingabe Dokumenten entfernen. Mögliche Werte: „0“: Die vorhandenen Outlines werden nicht entfernt. (default) „1“: Alle vorhandenen Outlines werden entfernt. |
Set |
OutlinesAdd |
String |
Über diese Property kann man neue Outlines und Bookmarks in das Ausgabe Pdf Dokument einfügen. Falls schon Bookmarks vorhanden sind und erhalten bleiben sollen (d.h. OutlinesDeleteExisting=0), werden die neuen Bookmarks an die vorhandenen angefügt. Mögliche Werte: „ “: Es werden keine Outlines hinzugefügt. (default) Ein nicht leerer String: Es werden die Outlines, die in dieser Property angegeben werden, in das Ausgabe-PDF eingefügt. Syntax: <outlinelist> ::= <outline> | <outline> “;” <outlinelist> <outline> ::= <outline-with-descendants> | <outline-without-descendants> <outline-with-descendants> ::= “{” <page> “;{” <destination> “};” <outlinetext> “;{” <outlinedescendants> “}}” <outline-without-descendants> ::= “{” <page> “;{” <destination> “};” <outlinetext> “}” | “{” <page> “;{” <destination> “};” <outlinetext> “;{}}” <page> ::= <Integer> <outlinetext> ::= <Text> <outlinedescendants> ::= <outlinelist> <destination> ::= <XYZ> | <Fit> | <FitH> | <FitV> | <FitR> | <FitB> | <FitBH> | <FitBV> <XYZ> ::= „XYZ“ „;“ <Integer> „;“ <Integer> „;“ <Integer> <Fit> ::= “Fit” <FitH> ::= “FitH” “;” <Integer> <FitV> ::= „FitV“ „;“ <Integer> <FitR> ::= „FitR“ „;“ <Integer> „;“ <Integer> „;“ <Integer> „;“ <Integer> <FitB> ::= „FitB“ <FitBH> ::= „FitBH“ „;“ <Integer> <FitBV> ::= „FitBV“ „;“ <Integer> Details und Beispiele siehe nächste Abschnitte. |
Set |
(Ab CIB pdf toolbox 1.10.0 ) |
|
Property liefert einen String mit identischer Struktur zurück. |
Get |
Syntax von OutlinesAdd
In der Stringproperty OutlinesAdd können ein oder mehrere Lesezeichen (Outlines) eingetragen werden.
Syntax:
Outline1;Outline2;...;Outline3
Outlinen: {Seitennummer;{Ansicht};Text;{Subbookmarks}}
Seitennummer
Eine ganze positive Zahl, die angibt, auf welche Seite das Lesezeichen verweist.
Z.B. “7”: Das
Lesezeichen verweist auf Seite 7 des Ausgabe-Dokuments.
Speziell beim Join mehrerer Eingabe-PDFs zu einem Ausgabedokument ist die
Tatsache wichtig, dass sich die Seitennummer auf das gejointe Ausgabedokument
bezieht.
Ansicht
Ein String der festlegt, welcher Teil der Seite mit welchem Zoomfaktor angezeigt werden soll. Es gibt acht verschiedene Arten dieser “Ansicht”.
Diese werden in der folgenden Tabelle beschrieben. Dabei sind Zahl1, Zahl2, Zahl3 und Zahl4 jeweils ganze nichtnegative Zahlen. Mit “Fenster” ist das Anzeigefenster des Pdf Viewers, z.B. des Adobe Readers, gemeint.
Name der “Ansicht” |
Syntax der “Ansicht” |
Beschreibung der “Ansicht” |
XYZ |
XYZ;Zahl1;Zahl2; |
Die angegebene Seite wird so angezeigt, dass die x-y-Koordinate (Zahl1;Zahl2) der Seite sich am linken oberen Rand des Fensters befindet. Zahl3 ist der Zoomfaktor für die Seite (Zahl3=1 ist z.B. ein Zoom von 100%, Zahl3=2 ein Zoom von 200%, usw.). Speziell Zahl3=0 bedeutet, dass der aktuelle Zoomfaktor unverändert bleibt. |
Fit |
Fit |
Die angegebene Seite wird so stark vergrößert, dass die Seite das Fenster exakt ausfüllt. Ist das nicht exakt möglich, so wird die Seite so vergrößert, dass die Seite auf jeden Fall vollständig im Fenster sichtbar ist. Eine Dimension der Seite füllt dann exakt das Fenster aus. Die andere Dimension der Seite ist dann kleiner als das Fenster und ist innerhalb des Fensters mittig zentiert. |
FitH |
FitH;Zahl1 |
Die angegeben Seite wird so angezeigt, dass die y-Koordinate Zahl1 der Seite genau am oberen Ende des Fensters angezeigt wird. Gleichzeitig wird die Seite genau so weit vergrößert, dass die Seite in der Breite das Fenster exakt ausfüllt. |
FitV |
FitV;Zahl1 |
Die angegeben Seite wird so angezeigt, dass die x-Koordinate Zahl1 der Seite genau am linken Rand des Fensters angezeigt wird. Gleichzeitig wird die Seite genau so weit vergrößert, dass die Seite in der Höhe das Fenster exakt ausfüllt. |
FitR |
FitR;Zahl1;Zahl2; |
Die Werte (Zahl1;Zahl2;Zahl3;Zahl4) sind die Koordinaten eines Rechtecks innerhalb der Seite in der Darstellung (x-Wert-Links;y-Wert-Unten;x-Wert-Rechts;y-Wert-Oben). Die Seite wird genau so angezeigt und vergrößert, dass dieses Rechteck das Fenster exakt ausfüllt. Ist das nicht exakt möglich, so wird die Seite so vergrößert, dass das Rechteck auf jeden Fall vollständig im Fenster sichtbar ist. Eine Dimension des Rechtecks füllt dann exakt das Fenster aus. Die andere Dimension des Rechtecks ist dann kleiner als das Fenster und ist innerhalb des Fensters mittig zentiert. |
FitB |
FitB |
Die angegebene Seite wird so stark vergrößert, dass der Begrenzungsrahmen (BoundingBox) der Seite das Fenster exakt ausfüllt. Ist das nicht exakt möglich, so wird die Seite so vergrößert, dass der Begrenzungsrahmen der Seite auf jeden Fall vollständig im Fenster sichtbar ist. Eine Dimension des Begrenzungsrahmens der Seite füllt dann exakt das Fenster aus. Die andere Dimension des Begrenzungsrahmens der Seite ist dann kleiner als das Fenster und ist innerhalb des Fensters mittig zentiert. |
FitBH |
FitBH;Zahl1 |
Die angegeben Seite wird so angezeigt, dass die y-Koordinate Zahl1 der Seite genau am oberen Ende des Fensters angezeigt wird. Gleichzeitig wird die Seite genau so weit vergrößert, dass der Begrenzungsrahmen (BoundingBox) der Seite in der Breite das Fenster exakt ausfüllt. |
FitBV |
FitBV;Zahl1 |
Die angegeben Seite wird so angezeigt, dass die x-Koordinate Zahl1 der Seite genau am linken Rand des Fensters angezeigt wird. Gleichzeitig wird die Seite genau so weit vergrößert, dass der Begrenzungsrahmen (BoundingBox) der Seite in der Höhe das Fenster exakt ausfüllt. |
Beispiele:
a)
{XYZ;100;200;3}
Die Seite wird so angezeigt, dass sich die Seitenkoordinate (x;y) = (100;200)
am linken oberen Rand des Fensters befindet. Der Zoomfaktor für die Seite ist
300%.
b)
{XYZ;200;300;0}
Die Seite wird so angezeigt, dass sich die Seitenkoordinate (200;300) am linken
oberen Rand des Fensters befindet. Der Zoomfaktor für die Seite bleibt
unverändert.
c) {FitH;200}
Die angegeben Seite wird so angezeigt, dass sich die y-Koordinate 200 der Seite
genau am oberen Ende des Fensters befindet. Gleichzeitig wird die Seite genau
so weit vergrößert, dass die Seite in der Breite das Fenster exakt ausfüllt.
d) {FitV;100}
Die angegeben Seite wird so angezeigt, dass sich die x-Koordinate 100 der Seite
genau am linken Rand des Fensters befindet. Gleichzeitig wird die Seite genau
so weit vergrößert, dass die Seite in der Höhe das Fenster exakt ausfüllt.
e) {FitR;20;40;100;400}
Das Rechteck mit den x-Koordinaten 20 und 100, und den y-Koordinaten 40 und 400
soll das Fenster ausfüllen. Ist das nicht exakt möglich, wird die Seite so
vergrößert, dass das Rechteck auf jeden Fall vollständig im Anzeigefenster
sichtbar ist. Eine Dimension des Rechtecks füllt dann exakt das Fenster aus.
Die andere Dimension des Rechtecks ist dann kleiner als das Fenster und ist
innerhalb des Fensters mittig zentriert.
Text
Ein String, der angibt, unter welchem Namen das Lesezeichen im Lesezeichenfenster des Viewers (z.B. von Adobe) dargestellt wird.
Wichtig:
Falls in dem Namen eines der Zeichen ;{}\ vorkommt, muss dieses Sonderzeichen mit einem n
Backslash “\” maskiert werden.
Beispiel:
Der Lesezeichenname im
Viewer: “{Berlin;Hamburg}”
ergibt für den “Text” in “OutlinesAdd”: “\{Berlin\;Hamburg\}”
Der Lesezeichenname im Viewer: “Q\R; V\R; L\Z”
ergibt für den “Text”: “Q\\R\; V\\R\; L\\Z”.
Der Eintrag für “Subbookmarks” ist optional. Falls er vorhanden ist, gibt er ein oder mehrere Lesezeichen an, die Unterlesezeichen zu dem angegebenen Lesezeichen sind.
A) Wenn ein Lesezeichen keine Unterlesezeichen hat, kann das auf 2 Syntaxarten angegeben werden:
a) Indem man den ganzen Eintrag und den Strichpunkt davor weg läst: {Seitennummer;{Ansicht};Text}
b) Oder indem man die geschweiften Klammern für die Subbookmarks leer läst: {Seitennummer;{Ansicht};Text;{}}
Z.B. {1;{Fit};Kapitel 1} und {1;{Fit};Kapitel 1;{}} sind identische Lesezeichen und ohne Unterlesezeichen.
B) Falls die Subbookmarks vorhanden sind, bestehen sie aus einem oder mehreren Lesezeichen. Diese sind genauso aufgebaut wie die anderen Lesezeichen. Auf diese Weise läst sich eine ganze Kette von Haupt-, Unter- und Unterunterlesezeichen angeben.
Es folgen verschiedene Beispiele für diese “Lesezeichenverkettungen”. Dabei wird der Einfachheit halber als “Ansicht” immer “{Fit}” verwendet. Natürlich können in jedem einzelnen Lesezeichen auch alle anderen oben beschriebenen “Ansichten” verwendet werden. Die Farben dienen nur der besseren Verständlichkeit: Verschiedene Farben bedeuten verschiedene Einzellesezeichen.
a) {1;{Fit};Lesezeichen 1}
ist ein einzelnes Lesezeichen mit dem Namen “Lesezeichen 1”, welches auf Seite 1 verweist. Dieses hat keine Unterlesezeichen. Man kann das alternativ auch schreiben {1;{Fit};Lesezeichen 1;{}}
b) {1;{Fit};1. Hauptkapitel 1};{4;{Fit};2. Hauptkapitel 2};{8;{Fit};3. Hauptkapitel 3}
sind drei (Haupt-)Lesezeichen. Keines von ihnen hat ein Unterlesezeichen. Das Lesezeichen mit dem Namen “1. Hauptkapitel 1” (violette Schrift) verweist auf Seite 1. Das Lesezeichen mit dem Namen “2. Hauptkapitel 2” (blaue Schrift) verweist auf Seite 4. Und das Lesezeichen mit dem Namen “3. Hauptkapitel 3” (grüne Schrift) verweist auf Seite 8.
c) {1;{Fit};1. Hauptkapitel 1;{{4;{Fit};1.1. Unterkapitel 1};{7;{Fit};1.2. Unterkapitel 2}}}
gibt ein Lesezeichen mit dem Namen “1. Hauptkapitel 1” (schwarze Schrift) an, welches auf Seite 1 verweist. Dieses hat 2 Unterlesezeichen: Eines mit den Namen “1.1. Unterkapitel 1” (violette Schrift); welches auf Seite 4 verweist . Und eines mit dem Namen “1.2. Unterkapitel 2” (blaue Schrift), welches auf Seite 7 verweist.
d) {1;{Fit};1. Hauptkapitel 1;{{2;{Fit};1.1. Unterkapitel 1;{{3;{Fit};1.1.1. Unterunterkapitel 1;{{5;{Fit};1.1.1.1. Unterunterunterkapitel 1}}}}}}}
gibt ein Lesezeichen mit dem Namen “1. Hauptkapitel 1” (schwarze Schrift) an, dass auf Seite 1 verweist. Dieses hat ein Unterlesezeichen mit den Namen “1.1. Unterkapitel 1” (violette Schrift), das auf Seite 2 verweist. Dieses hat wiederum ein Unterlesezeichen mit dem Namen “1.1.1. Unterunterkapitel 1” (blaue Schrift), welches auf Seite 3 verweist. Und dieses hat wiederum ein Unterlesezeichen mit dem Namen “1.1.1.1. Unterunterunterkapitel 1” (grüne Schrift), welches auf Seite 5 verweist.
Die Struktur dieser Lesezeichen im Viewer würde wie folgt aussehen (Die Farben sind nur zur Verdeutlichung da. Die Lesezeichen im Pdf Viewer würden nicht diese Farben haben.):
1. Hauptkapitel 1
1.1. Unterkapitel 1
1.1.1. Unterunterkapitel 1
1.1.1.1. Unterunterunterkapitel 1
e) {3;{Fit};1. Hauptkapitel 1;{{6;{Fit};1.1. Unterkapitel 1;{{9;{Fit};1.1.1. Unterunterkapitel 1};{11;{Fit};1.1.2. Unterunterkapitel 2;{{13;{Fit};1.1.2.1. Unterunterunterkapitel 1}}};{16;{Fit};1.1.3 Unterunterkapitel 3}}};{21;{Fit};1.2. Unterkapitel 2}}};{25;{Fit};2. Hauptkapitel 2;{}}
Die Struktur dieser Lesezeichen würde wie folgt aussehen:
1. Hauptkapitel 1
1.1. Unterkapitel 1
1.1.1. Unterunterkapitel 1
1.1.2. Unterunterkapitel 2
1.1.2.1. Unterunterunterkapitel 1
1.1.3 Unterunterkapitel 3
1.2. Unterkapitel 2
2. Hauptkapitel 2
f) {6;{Fit};1. Hauptkapitel 1;{{9;{Fit};1.1. Unterkapitel 1;{{12;{Fit};1.1.1. Unterunterkapitel 1;{{15;{Fit};1.1.1.1. Unterunterunterkapitel 1}}};{17;{Fit};1.1.2. Unterunterkapitel 2;{{21;{Fit};1.1.2.1. Unterunterunterkapitel 1};{23;{Fit};1.1.2.2. Unterunterunterkapitel 2}}}}};{25;{Fit};1.2. Unterkapitel 2}}};{28;{Fit};2. Hauptkapitel 2}
Die Struktur dieser Lesezeichen würde wie folgt aussehen:
1. Hauptkapitel 1
1.1. Unterkapitel 1
1.1.1. Unterunterkapitel 1
1.1.1.1. Unterunterunterkapitel 1
1.1.2. Unterunterkapitel 2
1.1.2.1. Unterunterunterkapitel 1
1.1.2.2. Unterunterunterkapitel 2
1.2. Unterkapitel 2
2. Hauptkapitel 2
10. Barcodeinformationen aus dem Pdf extrahieren
(ab CIB pdf toolbox Version 1.8.0)
Mit Hilfe des CIB pdf toolbox Join können Barcodes aus Barcode Bildern in PDF Dokumenten ausgelesen werden. Als Ausgabeformat für die Barcode-Informationen ist XML oder CSV möglich.
Die CIB pdf toolbox erzeugt aus PDF ein Metafile, das vom Modul CIB ocr weiterverarbeitet wird. Daher setzt diese Funktionalität das Modul CIB ocr mit entsprechender Lizenz voraus.
(ab CIB pdf toolbox Version 1.13.3):
Jetzt ist es möglich, alle CIB ocr StringProperties mit dem Prefix „CibOcr“ im Namen an die CIB pdf toolbox zu setzen. Diese Properties werden bei einem anschließenden OCR- bzw. BarcodeAuslesen-Lauf an das Modul CIB weitergereicht.
Beispiel:
CIB ocr hat die Property „DatamatrixScanGap=100“. An die CIB pdf toolbox setzt man die Property „CibOcrDatamatrixScanGap=100“, die dann beim CIB ocr Aufruf der CIB pdf toolbox als DatamatrixScanGap mit Wert „100“ weitergereicht wird.
Propertybezeichnung |
Typ |
Funktionalität |
Art |
BarcodeRange |
String |
Diese Property enthält eine Liste von Barcodetypen, die durch Strichpunkte voneinander getrennt sind. Alle Bilder im PDF werden dahingehend überprüft, ob es sich um Barcodes der angegebenen Typen handelt. Die Suche kann auch auf Bereiche des PDFs eingeschränkt werden. Syntax: <barcoderangelist> ::= <barcodetypes> | <barcoderanges> <barcoderanges> ::= <onebarcoderange> | <onebarcoderange> “;” <barcoderanges> <onebarcoderange> ::= “{” <pagenumber> “}” | “{” <pagenumber> “;” <barcodetypes> “}” | “{” <pagenumber> “;” <barcodetype> “;” <rangeleft> “;” <rangebottom> “;” <rangeright> “;” <rangetop> “}” <pagenumber> ::= <Integer> <barcodetypes> ::= <onebarcodetype> | <onebarcodetype> “,” <barcodetypes> <onebarcodetype> ::= “DataMatrix” | “Code128” | “CodeITF” | “Code39” | “Code39Extended” | “QR” <rangeleft> ::= <Integer> <rangebottom> ::= <Integer> <rangeright> ::= <Integer> <rangetop> ::= <Integer> <rangeleft>,
<rangebottom>, <rangeright>, <rangetop> sind positive ganze
Zahlen in mm, der Ursprung (0;0) ist die linke untere Ecke der PDF-Seite. „ “: (Property ist leer) Es werden alle Bilder des PDFs auf Barcode Informationen untersucht und dies wird mit den beiden Barcodetypen „QR“ und „DataMatrix“ durchgeführt. (default) Ist die Property falsch belegt, wird der Errorcode 100 zurückgeliefert. Beispiele siehe unten. |
Set |
BarcodeInfo |
String |
In
diese Property werden die ausgelesenen Barcode-Informationen zurückgeliefert.
Hinweis: Wird im angegebenen Bereich kein Barcode gefunden, bleibt die Property/Ausgabedatei leer. Das Format der Ausgabe ist abhängig vom Inhalt der Property OutputFormat. Möglich sind OutputFormat= FormatBarcodeXml /FormatBarcodeCsv. Der Koordinatenursprung (0;0) ist die linke untere Ecke der PDF-Seite. OutputFormat=FormatBarcodeXml : <barcodeimagexml> ::= <empty value> | „<?xml version=”1.0” encoding=”UTF-8” standalone=”yes”?><barcodeimages>“ <barcodeimagelist> „</barcodeimages>“ <barcodeimagelist> ::= <onebarcodeimage> | <onebarcodeimage> <barcodeimagelist> <onebarcodeimage> ::= „<barcodeimage><pagenumber>“ <pagenumber> „</pagenumber><left>“ <imageleft> „</left><bottom>“ <imagebottom> „</bottom><right>“ <imageright> „</right><top>“ <imagetop> „</top><barcodeinfos>“ <barcodeinfolist> „</barcodeinfos></barcodeimage>“ <pagenumber> ::= <Integer> <imageleft> ::= <Integer> <imagebottom> ::= <Integer> <imageright> ::= <Integer> <imagetop> ::= <Integer> <barcodeinfolist> ::= <onebarcodeinfo> | <onebarcodeinfo> <barcodeinfolist> <onebarcodeinfo> ::= „<barcodeinfo type=”“ <barcodetype> „”“ <barcodecontent> „</barcodeinfo>“ <barcodetype> ::= „DataMatrix“ | „Code128“ | „CodeITF“ | „Code39“ | „Code39Extended“ | „QR“ <barcodecontent> ::= <Text>
OutputFormat=FormatBarcodeCsv: <barcodeimagecsv> ::= <empty value> | <barcodeimagelistcsv> <barcodeimagelistcsv> ::= <onebarcodeimagerow> | <onebarcodeimagerow> <barcodeimagelistcsv> <onebarcodeimagerow> ::= <pagenumber> „;“ <imageleft> „;“ <imagebottom> „;“ <imageright> „;“ <imagetop> „;“ <barcodeinfolistcsv> <CR> <LF> <pagenumber> ::= <Integer> <imageleft> ::= <Integer> <imagebottom> ::= <Integer> <imageright> ::= <Integer> <imagetop> ::= <Integer> <barcodeinfolistcsv> ::= <onebarcodeinfocsv> | <onebarcodeinfocsv> „;“ <barcodeinfolistcsv> <onebarcodeinfocsv> ::= „;“ | <barcodetype> „;“ <barcodecontent> <barcodetype> ::= „DataMatrix“ | „Code128“ | „CodeITF“ | „Code39“ | „Code39Extended“ | „QR“ <barcodecontent> ::= „““
<Text> „““ Hinweise zu CSV: - Sollte der Original-Barcodetext ein Anführungszeichen “ enthalten, so wird dies im CSV-Format durch zwei hintereinander folgende Anführungszeichen “” ersetzt. - Jedes Barcodeimage hat eine eigene “<onebarcodeimagerow>”-Zeile. Sollte ein Pdf-Image aus Bild und Maske bestehen und sollten beide Barcodeinformationen enthalten, werden sie als zwei “<onebarcodeimagerow>”-Zeilen eingetragen mit gleicher Seitennummer und gleichem Rechtsbereich. - Für jedes Barcodeimage werden die Barcodeinfos für verschiedene Barcodetypes am Ende durch den Strichpunkt getrennt angegeben. Dabei wird für jede Barcodeinfo erst der Barcodetype und dann der Barcodecontent angegeben. - Damit jede CSV-Zeile aus der gleichen Anzahl von (durch Strichpunkt getrennte) Spalten besteht, sind bei den einzelnen CSV-Zeilen (= <onebarcodeimagerow>) am Ende entsprechend viele “;;” angehängt.
Beispiele siehe unten. |
Get |
OCRDebug |
String |
Diese Property ist nur für technische Testzwecke von Bedeutung. Sie steuert die Ausgabe der Bilder aus dem PDF. Mögliche Werte: „1“ Die Zwischenschritte der Barcodeextraction mittels OCR werden als einzelne Dateien ausgegeben. „0“ Keine Ausgabe Zwischenschritte (default) Für jedes einzelne Bild im Pdf Dokument, welches an die CIB Ocr Dll übergeben wurde, werden mehrere Dateien ausgegeben: - Das Bild selbst als Bitmap wie es an OCR übergeben wurde. - Das Barcode Ergebnis der CIB Ocr Dll, falls das Barcodeergebnis nicht leer ist. Falls das Barcodeergebnis leer ist, wird diese Datei nicht ausgegeben. Die Dateien werden in das gleiche Verzeichnis geschrieben wie die Ausgabedatei. Die Namen dieser Dateien haben folgende Form: “Ausgabedatei”__Page_”Seitennummer”_Image_“Bildnummer“_“Dateiendung“ Für die “Dateiendung” gilt dabei: - Für die Bitmapdatei: „.bmp“ - Für das Barcodeergebnis der CIB Ocr Dll: „_BARCODE.txt“ Beispiel: |
Set |
10.1. Beispiele für BarcodeRange
- “Code128”
Alle Bilder werden auf Barcodeinformationen überprüft, mit dem Barcodetype “Code128”. - “QR;CodeITF;Code39;DataMatrix”
Alle Bilder werden auf Barcodeinformationen überprüft, mit den Barcodetypen “QR”, “CodeITF”, “Code39” und “DataMatrix”. - “{1}”
Alle Bilder in der 1. Seite des Pdf Dokuments werden auf Barcodeinformationen überprüft. Dabei werden die Barcodetypen DataMatrix und QR verwendet. - “{3;Code128}”
Alle Bilder der Seite 3 werden auf Barcodeinformationen überprüft. Dabei wird der Barcodetyp Code128 verwendet. - “{8;Code39,QR,DataMatrix}”
Alle Bilder der Seite 8 werden auf Barcodeinformationen überprüft. Dabei werden die Barcodetypen Code39, QR und DataMatrix verwendet. - “{13;CodeITF,QR};{22;Code39Extended,DataMatrix}”
Alle Bilder der Seite 13 und 22 werden auf Barcodeinformationen überprüft. Das wird für die Bilder der Seite 13 mit den Barcodetypen CodeITF und QR durchgeführt. Für die Bilder der Seite 22 wird das mit den Barcodetypen Code39 und DataMatrix durchgeführt. - “{2;DataMatrix,Code39;20;30;40;50}”
Es werden alle Bilder überprüft, die auf der Pdf Seite 2 sind und innerhalb des Rechteckbereichs (Links;Unten;Rechts;Oben)=(20;30;40;50) sind. (Dieser Rechtecksbereich beginnt horizontal 20 mm vom linken Seitenrand entfernt und endet 40 mm vom linken Seitenrand entfernt. Er beginnt vertikal 30 mm vom unteren Seitenrand entfernt und endet 50 mm vom unteren Seitenrand entfernt.) Es werden die Barcodetypen DataMatrix und Code39 verwendet. - “{6;Code39Extended;1;2;3;4};{24;CodeITF,Code39,DataMatrix;100;0;200;300}”
Es werden überprüft: Alle Bilder der Seite 6, die im Rechtecksbereich (1;2;3;4) liegen (zwischen 1 mm und 3 mm vom linken Seitenrand entfernt und zwischen 2 mm und 4 mm vom unteren Seitenrand entfernt). Der dazu verwendete Barcodetyp ist Code39Extended. Ebenso alle Bilder der Seite 24, die im Rechtecksbereich (100;0;200;30) liegen. Die dazu verwendeten Barcodetypen sind CodeITF, Code39 und DataMatrix. - “{15;DataMatrix,CodeITF;2;45;20;100};{11;QR};{16;Code39;5;10;15;20}”
Es werden überprüft: Alle Bilder der Seite 15, die im Rechtecksbereich (2;45;20;100) liegen. Die dazu verwendeten Barcodetypen sind DataMatrix und CodeITF. Ebenso alle Bilder der Seite 11. Der dazu verwendete Barcodetyp ist QR. Auch alle Bilder der Seite 16, die im Rechtecksbereich (5;10;15;20) liegen. Der dazu verwendete Barcodetyp ist Code39.
Allgemein:
Sollten verschiedene Bereiche in der Aufzählung auf ein bestimmtes Bild passen, wird der erste passende Bereich innerhalb der BarcodeRange-Aufzählung verwendet und die Barcodetypen aus diesem Bereich selektiert.
10.2. Beispiele für BarcodeInfo, OutputFormat=FormatBarcodeXml
BarcodeInfo
“<?xml version=”1.0” encoding=”UTF-8” standalone=”yes”?>
<barcodeimages>
<barcodeimage>
<pagenumber>23</pagenumber>
<left>30</left>
<bottom>100</bottom>
<right>200</right>
<top>600</top>
<barcodeinfos>
<barcodeinfo type=”Code39”>Der Inhalt des Barcodeimages 1.</barcodeinfo>
<barcodeinfo type=”Code39Extended”>Der Inhalt des Barcodeimages 1.</barcodeinfo>
</barcodeinfos>
</barcodeimage>
<barcodeimage>
<pagenumber>35</pagenumber>
<left>0</left>
<bottom>10</bottom>
<right>400</right>
<top>140</top>
<barcodeinfos>
<barcodeinfo type=”QR”>Der Inhalt des Barcodeimages 2.</barcodeinfo>
<barcodeinfo type=”DataMatrix”>Der Inhalt des Barcodeimages 2.</barcodeinfo>
</barcodeinfos>
</barcodeimage>
</barcodeimages>”
bedeutet:
Es wurden 2 Barcodeimages entdeckt, die in den von BarcodeRange angegebenen Bereichen lagen. Das erste Barcodeimage war auf der Seite 23 und umfasst den folgenden Rechtecksbereich (Der linke Rand ist 30 mm vom linken Rand der Pdf Seite entfernt. Der untere Rand ist 100 mm vom unteren Rand der Pdf Seite entfernt. Der rechte Rand ist 200 mm vom linken Rand der Pdf Seite entfernt. Der obere Rand ist 600 mm vom unteren Rand der Pdf Seite entfernt.) Mit Hilfe der Barcodetypen Code39 und Code39Extended wurden erfolgreich Barcodeinformationen extrahiert. Diese lauten in beiden Fällen “Der Inhalt des Barcodeimages 1.”.
Das zweite Barcodeimage war auf der Seite 35. Der Rechtecksbereich ist hier (Links, Unten, Rechts, Oben) = (0;10;400;140). Hier wurden die Barcodetypen QR und DataMatrix erfolgreich angewendet. Die extrahierte Barcodeinformation für dieses Barcodeimage lautet für beide Barcodetypen “Der Inhalt des 2. Barcodeimages.”
10.3. Beispiele für BarcodeInfo, OutputFormat=FormatBarcodeCsv
BarcodeInfo =2;10;30;200;400;QR;”Dies ist das Barcodeimage 1.”;;\r\n3;50;60;150;160;Code39;”Dies ist das Barcodeimage 2.”;Code39Extended;”Dies ist das Barcodeimage 2.”\r\n
bedeutet:
Es wurden 2 Barcodeimages entdeckt, die in den von BarcodeRange angegebenen Bereichen lagen. Das erste Barcodeimage war auf der Seite 2 und umfasst den folgenden Rechtecksbereich (Der linke Rand ist 10 mm vom linken Rand der Pdf Seite entfernt. Der untere Rand ist 30 mm vom unteren Rand der Pdf Seite entfernt. Der rechte Rand ist 200 mm vom linken Rand der Pdf Seite entfernt. Der obere Rand ist 400 mm vom unteren Rand der Pdf Seite entfernt.) Es wurde der Barcodetyp QR erfolgreich angewendet. Das Ergebnis war ‘Dies ist das Barcodeimage 1.’.
Das zweite Barcodeimage war auf der Seite 3. Der Rechtecksbereich ist hier (Links, Unten, Rechts, Oben) = (50;60;150;160). Mit Hilfe der Barcodetypen Code39 und Code39Extended wurden erfolgreich die Barcodeinformationen extrahiert. Diese lauten in beiden Fällen ‘Dies ist das Barcodeimages 2.’.
Beim ersten Barcodeimage wurde am Ende ‘;;’ eingefügt, weil im 2. Barcodeimage 2 Barcodeinformationen vorhanden waren und diese CSV-Zeile somit 2 Spalten mehr hätte.
BarcodeInfo=15;10;30;200;400;CodeITF;”””Dies”” ist “” “” das Barcodeimage;””Hallo”””;;\r\n
Es wurde ein Barcodeimage entdeckt, das in den von BarcodeRange angegebenen Bereichen lag. Es war auf der Seite 15. Der Rechtecksbereich für dieses Image ist (Links, Unten, Rechts, Oben) = (10;30;200;400). Der Barcodetyp CodeITF wurde erfolgreich angewendet. Das Ergebnis war ‘”Dies” ist “ “ das Barcodeimage;”Hallo”’. (Die Doppelanführungszeichen im Barcodecontent müssen durch Einfachanführungszeichen ersetzt werden.)
11. Unterstützte Grafikformate
Welche Grafikformate durch die CIB pdf toolbox unterstützt werden, ist vom Verarbeitungsmodus der betroffenen PDFs abhängig. In den folgenden Kapiteln werden die verschiedenen Möglichkeiten beschrieben.
CIB pdf join/ CIB pdf mergeCIB pdf print / Aufbereitung für die CIB viewer
Grafik Overlay
Erzeugen von Grafikdateien
Text aus Grafiken in Pdf Dokumente mittels CIB ocr einfügen
CIB pdf join/ CIB pdf merge
Hier sind alle Grafikformate möglich, da die Bildobjekte nicht verarbeitet, sondern nur kopiert werden.
CIB pdf print / Aufbereitung für die CIB viewer
Unterstützt werden:
- RAW (Bilddaten liegen in einem Format vor, das durch die Pdf-Spec. beschrieben ist)
- JPG
- TIFF
- JBIG2 (ab CIB pdf toolbox Version 1.4.100)
- JPEG2000 (ab CIB pdf toolbox Version 1.4.101)
Hinweise:
Die Bildobjekte in diesen PDFs enthalten kein komplettes JPG bzw. TIFF, sondern nur die Bilddaten selbst (also keine Farbpalette und Metadaten).
Für eine Verarbeitung von JBIG2 ist eine spezielle Library Jbig2dec.dll nötig. Die Bibliothek steht auch für Unix-Plattformen zur Verfügung.
Grafik Overlay
Unterstützt werden die Grafikformate BMP, JPG, GIF und PNG.
Detaillierte Informationen zu diesem Thema befinden sich im Kapitel „Overlayfunktion/Grafik“.
Erzeugen von Grafikdateien
(ab CIB pdf toolbox Version 1.4.102)
Über den Modul CIB pdf join der CIB pdf toolbox ist neben der PDF-Ausgabe auch das Erzeugen von Grafikdateien möglich.
Die Steuerung des Ausgabeformats erfolgt über die Property
OutputFormat.
Unterstützt werden die folgenden Grafikformate:
- FormatTiff
- FormatPng,
- FormatJpeg
Pro Seite im PDF wird eine Grafikdatei erzeugt, wobei die Dateinamen durch automatisches Nummerieren eindeutig gemacht werden. Nur bei TIFF ist eine mehrseitige Ausgabe in eine TIFF-Datei möglich.
Ab CIB pdf toolbox Version 1.5.113 stehen diese Grafikformate auch auf Unix-Plattformen zur Verfügung.
(ab CIB pdf toolbox Version 1.8.5a):
- FormatBmp
- FormatBmpLz4 ( BMP, wobei Daten nach lz4 Standard komprimiert sind).
(ab CIB pdf toolbox Version 1.9.0):
- FormatJpegXR
- FormatWebP (bei RenderingEngine=CIBRenderer)
Zu den einzelnen Grafikformaten kann über entsprechende Property-Belegung die Auflösung, Komprimierung, etc. näher spezifiziert werde.
Detaillierte Informationen zu diesem Thema befinden sich im Kapitel „CIB pdf/join / split“.
(ab CIB pdf toolbox Version 1.4.113)
Property OutputFormat = FormatExtractImages
Bei Angabe dieses Ausgabeformats werden alle Image-XObjects, die sich in den Eingabe-PDFs befinden, exportiert. Die Ausgabe erfolgt im TIFF-Format oder (bei bestimmten Pdf Bildobjekten) ins JPEG-Format unter der bei OutputFilename angegebenen Dateibezeichnung.
Bei den TIFF-Bildern besteht die Möglichkeit des Exports in eine einzige TIFF-Datei oder in eine eigene TIFF-Datei pro Bild. Details hierzu und zum Export der JPEG-Bilder siehe bei der Beschreibung der Property OutputFormat = FormatExtractImages.
PDF Layer Support
(Ab CIB pdf toolbox 1.40.0)
Die Verarbeitung und Darstellung von optionalen Inhaltsgruppen ist in der CIB pdf-Toolbox implementiert.
Optionale Inhalte werden innerhalb markierter Inhaltsströme und auch für XObjects und Annotations mit OC-Eintrag verarbeitet. Es ist in der Lage, mit doxiview zu kommunizieren, wobei Eingabe- und Ausgabeeigenschaften und JSON-basierte Argumente verwendet werden.
Propertybezeichnung |
Funktionalität |
Art |
PdfLayers |
Syntax: PdfLayers={"RequestedStates":[{"LayerId":<Id1>,"State":"On"/"Off"},..., {"LayerId":<IdN>,"State":"On"/"Off"}]} Wobei: Id1...IdN sind numerische IDs der optionalen Inhaltslayer, und der State der Ebene ist "Off" (Aus, unsichtbar) oder "On" (Ein, sichtbar). Hinweis: Nach der ersten Verarbeitung einer PDF-Datei kann eine äußere Anwendung Informationen über die vorhandenen OC-Gruppen für die Standardkonfiguration aus der Ausgabeeigenschaft PdfLayersInfo erhalten. Nach Kenntnis dieser Informationen kann die äußere Anwendung beliebige Zustände (sichtbar/nicht sichtbar) für beliebige OC-Ebenen anfordern. |
Set |
PdfLayersInfo |
Die Ausgabeeigenschaft gibt Informationen über die vorhandenen optionalen Inhaltsebenen und ihre Zustände aus. Syntax: PdfLayersInfo={"Tree":[<LayerDescription>], "PageLayers":[<PageLayersDescription>]} Wobei: Tree ist ein Array, das die hierarchische Struktur der vorhandenen Ebenen in PDF beschreibt. Tree enthält die Elemente: <LayerDescription> die eine Beschreibung jeder Ebene ist: {"Name":"<LayerName>", "LayerId":<Id>,"Locked":true/false, "State":"On"/"Off", "RBGroups":[<RBId1>,...<RBIdN>],"Kids":[ <LayerDescription> ]} Wobei: "LayerId": <Id> ist eine eindeutige Nummer, (Layer-Bezeichner, der für die Eingabeeigenschaft PdfLayers verwendet werden soll). Locked: true/false zeigt an, ob ein Benutzer den aktuellen Zustand der Schicht umschalten kann. Kids: Array, das alle Kids des layers beschreibt.
PageLayers ist eine Anordnung von Seiten und ihren Layern: <PageLayersDescription> PageLayersDescription = {"PageIndex":<PageId>, LayerIds:[<LayerId>]} <PageId> ist ein Index einer Seite, beginnend mit 0 LayerIds ist ein Array von <LayerId> (numerische ID), das auf entsprechende LayerIds aus dem Tree-Objekt abgebildet werden kann. Hinweis: 1. Wenn LayerDescription nur Name und Kids (keine LayerId- und State-Einträge) enthält, handelt es sich nicht um einen echten Layer, sondern um einen einfachen Knoten, der auf- und zugeklappt werden kann und weitere Layer enthält.Wenn LayerDescription alle Einträge enthält und auch Kids hat, dann ist der Layer ein Knoten, der ein- oder ausgeschaltet werden kann und auch andere Layer enthält. 2. Eine neue Aktion vom Typ SetOcgState wird zusätzlich in die Metadatei ausgegeben, um OCG-Switching mit Hilfe von Formularfeldern und Widget-Annotationen zu ermöglichen. 3. Die Output Property PDFLayersInfo wird auch mit OutputFormat=FormatInfo mit der entsprechenden FilterInfo ausgegeben. |
Get |
Text aus Grafiken in Pdf Dokumente mittels CIB ocr einfügen
(ab CIB pdf toolbox Version 1.6.116)
Bei Bildern in PDF-Dokumenten, die Text enthalten, kann man mittels des Moduls CIB ocr über die CIB pdf Toolbox diesen Text aus der Grafik extrahieren und als Text in das PDF Dokument einfügen. Hauptanwendungsgebiet für dieses Feature sind eingescannte PDF Dokumente, bei denen der Text nur als Bild vorliegt und somit keine Möglichkeit besteht, nach Text zu suchen oder Text zu kopieren.
Diese Funktionalität ist sowohl für Pdf Join als auch für Pdf Merge möglich. Sie setzt das Modul CIB ocr mit entsprechender Lizenz voraus.
Das Ergebnis ist ein PDF Dokument, das dem (oder den) Eingabedokumenten gleicht, aber (un)sichtbaren Text enthält, eben diesen extrahierten Text aus den Bildern. Nach diesem Text kann gesucht werden und er kann aus dem PDF Dokument herauskopiert werden.
Seit Toolbox Version 1.9.0 gibt es die Möglichkeit, solchen (un)sichtbaren Text aus externen Quellen zu importieren. D.h. der Text wird nicht mehr aus den Bildern des Pdf Dokuments extrahiert, sondern wird der Toolbox mittels der Eigenschaft „HocrInputData“ mitgeteilt. Diese Eigenschaft besteht aus einem oder mehreren Speicherblöcken, welche die Hocrdaten enthalten. Für das genau Format bitte die Eigenschaft unten ansehen.
Außerdem können seit Toolbox Version 1.9.0 alle erzeugten oder
importierten Hocr-Daten als Multi-Hocr-Datei ausgegeben werden. Mittels der Eigenschaft
HocrOutputFilename wird die Datei angegeben, in der die Hocrdaten gespeichert
werden sollen.
Seit der Toolbox Version 1.10.0 ist auch der Import einer Multi-Page-HOCR-XML-Datei
möglich. Dazu wird die Eigenschaft HocrInputData mit dem Pfad auf diese Datei
belegt. Alle Informationen (wie Seitennummern, Fonts, …) sind in dieser HOCR-XML-Datei
enthalten. Für diese Multi-Page-HOCR-XML-Datei werden die Eigenschaften FormatSearchablePdfTextColor,
FormatSearchablePdfLayerName und FormatSearchablePdfDTDFolder unterstützt. Eine
solche Multi-Page-HOCR-XML-Datei kann z.B. mit CIB format und dem Ausgabeformat
FormatHocr erzeugt werden.
Properties:
Propertybezeichnung |
Typ |
Funktionalität |
Art |
OutputFormat |
String |
FormatSearchablePdf |
Set |
CurrentProgress (ab CIB pdf toolbox Version 1.24.0 |
String |
Über diese Property kann der Fortschritt des Texterkennungs-Prozesses
von CIB ocr abgefragt werden. Die Property enthält damit einen String mit dem
Aufbau: Für Details siehe „Technischer Leitfaden CIB ocr“, Kapitel „CibOcrJobGetProgress“ |
Get |
DictionaryWorkSpace |
String |
Mit dieser Property hat man die Möglichkeit, den Pfad für die von CIB ocr benötigten Daten zu setzen. |
Set |
FormatSearchablePdfShowText |
String |
Es kann gesteuert werden, ob der in das Ausgabe-PDF eingefügte Text sichtbar ist oder nicht. „1“ Text ist sichtbar „0“ Text ist nicht sichtbar (default) |
Set |
FormatSearchablePdfRemoveImages |
String |
Es kann
gesteuert werden, ob im Ausgabe-PDF die Bilder entfernt werden oder nicht. „1“ Bilder werden entfernt „0“ Bilder bleiben erhalten (default) |
Set |
PdfVersion (ab Version 1.6.116b) |
String |
Optional kann bei OutputFormat=FormatSearchablePdf auch die Property PdfVersion gesetzt werden. Dann entspricht das erzeugte PDF dem angegebenen PDF/A-Standard. Hinweis: dies wird im Moment nur in Kombination mit FormatSearchablePdfShowText=0 unterstützt. Mögliche Werte: PDF/A-1b PDF/A-2b PDF/A-3b |
Set |
HocrInputData (ab Version 1.9.0, Multi-Page-Format ab Version 1.10.0) |
String |
Mit diesem String hat man die Möglichkeit der Toolbox die Hocrdaten direkt zu importieren (anstatt sie aus den Bildern des Pdf Dokuments zu extrahieren). Ist dieser String leer (default), wird er nicht verwendet. Ansonsten umfasst er eine Liste von Speicheradressen und Längen für Strings, die die Hocrdaten enthalten. Er muss in folgendem Format vorliegen: Syntax: HocrInputData ::= <OneHocrFile> [“;“ <OneHocrFile>] ... OneHocrFile ::= “{” <Pagenumber> “};” <MemoryBlocks> MemoryBlocks ::= [<MemoryBlocks-Delimiter> “;”] <MemoryBlock> [<MemoryBlocks-Delimiter> <MemoryBlock>] ... MemoryBlock ::= <Address> <MemoryBlock-Delimiter> <Length> MemoryBlock-Delimiter ::= Ein einzelnes Zeichen, das ungleich ‚;‘ und ‚\0‘ ist, z.B. ‚#‘ oder ‚?‘, am besten auch keine Ziffern oder Buchstaben. Pagenumber ::= Seitennumber der Seite, für die die Hocrdaten angegeben werden. Address :== Eine Dezimalzahl, welche die Adresse für einen Speicherbereich (memory block) für die Hocrdaten angibt. Length ::= Eine Dezimalzahl, welche die Länge eines Speicherbereichs für die Hocrdaten angibt. Beispiel: HocrInputData=“{1};?;111?100?222?200;{2};113?100;{3};+;300+100+400+200“ bedeutet: Seite 1 hat Hocrdaten in den Speicherbereichen (Adresse, Länge) (111, 100) und (222, 200); Seite 2 hat Hocrdaten in dem Speicherbereichen (113, 100); Seite 3 hat Hocrdaten in den Speicherbereichen (300, 100) und (400, 200). Seit der Toolbox Version 1.10.0 ist auch ein Multi-Page-Format möglich: Falls das erste Zeichen ungleich „{“ ist, so wird nur ein XML-HOCR-File angegeben. Dieses kann verschiedene einzelne XML-HOCR-Seiten umfassen. Die Datei muss in einem besonderen Format vorliegen, wie es z.B. von CIB format mit der Eigenschaft OutputFormat=FormatHocr erzeugt wird. |
Set |
HocrOutputFilename (ab Version 1.9.0) |
String |
Falls der String leer ist, werden keine Hocrdaten rausgeschrieben (default). Falls der String nicht leer ist, werden in die Datei mit diesem Dateinamen alle verwendeten Hocrdaten als Multi-Hocr-Datei geschrieben. Vor jedem einzelnen „Hocrteil“ wird die Zeile „<!-- CIB:page=Seitennummer -->“ geschrieben, wobei „Seitennummer“ die Seitennumer für den Hocrteil ist. (Z.B. „<!-- CIB:page=3 -->“ = Hocrdaten für Seite 3). Texte wie ‚CIB ocr testlicense‘ werden aus den Hocrteilen entfernt. |
Set |
OCRDebug |
String |
Diese Property ist nur für technische Testzwecke von Bedeutung. Sie steuert die Ausgabe der Bilder aus dem PDF. Mögliche Werte: „1“ Die Zwischenschritte der Barcodeextraction mittels OCR werden als einzelne Dateien ausgegeben. „0“ Keine Ausgabe Zwischenschritte (default) Für jedes einzelne Bild im Pdf Dokument, welches an die CIB Ocr Dll übergeben wurde, werden mehrere Dateien ausgegeben: - Das Bild selbst als Bitmap wie es an OCR übergeben wurde. - Das Barcode Ergebnis der CIB Ocr Dll, falls das Barcodeergebnis nicht leer ist. Falls das Barcodeergebnis leer ist, wird diese Datei nicht ausgegeben. Die Dateien werden in das gleiche Verzeichnis geschrieben wie die Ausgabedatei. Die Namen dieser Dateien haben folgende Form: “Ausgabedatei”__Page_”Seitennummer”_Image_“Bildnummer“_“Dateiendung“ Für die “Dateiendung” gilt dabei: - Für die Bitmapdatei: „.bmp“ - Für das Barcodeergebnis der CIB Ocr Dll: „_BARCODE.txt“ Beispiel: |
Set |
FormatSearchablePdfTextColor (ab Version 1.10.0) |
String |
Diese Eigenschaft wird nur verwendet, falls OutputFormat=FormatSearchablePdf und FormatSearchablePdfShowText=“1“ und das erste Zeichen von HocrInputData ungleich ‚{‘ ist. Sie gibt die Farbe für den eingefügten Text an. Mögliche Werte: - leerer String (default): Es wird schwarz als Standardtextfarbe verwendet. - Die Textfarbe ist gegeben in der Form „R;G;B“, wobei R, G und B natürliche Dezimalzahlen zwischen 0 und 255 sind. (R ist der Rotanteil, G ist der Grünanteil und B ist der Blauanteil). Z.B. „255;0;0“ ist rot. |
Set |
FormatSearchablePdfLayerName (ab Version 1.10.0) |
String |
Diese Eigenschaft wird nur verwendet, falls OutputFormat=FormatSearchablePdf und FormatSearchablePdfShowText=“1“ und das erste Zeichen von HocrInputData ungleich ‚{‘ ist. Sie gibt (falls angegeben) den Pdf-Ebenennamen (im Adobe Reader) für den eingefügten Text an. Mögliche Werte: - Leerer String (default): Der eingefügte Text ist nicht Teil irgendeiner Pdf-Ebene. - Der eingefügte Text ist Teil der Pdf-Ebene mit diesem Ebenennamen. |
Set |
FormatSearchablePdfDTDFolder (ab Version 1.10.0) |
String |
Diese Eigenschaft wird nur verwendet, falls OutputFormat=FormatSearchablePdf und FormatSearchablePdfShowText=“1“ und das erste Zeichen von HocrInputData ungleich ‚{‘ ist. Sie ist eine Hilfseigenschaft und gibt (falls angegeben) den lokalen Pfad für die XHTML-DTD-Datei xhtml1-transitional.dtd an. Der Hintergrund ist: Der XML Parser liefert eine NetAccessorException. Und die W3C sagt, dass die Aufrufe der DTDs lokal gespeichert werden sollen. Mögliche Werte: - Leerer String (default): Es wird nichts gemacht. - Die URL für xhtml1-transitional.dtd im HOCR-XML-file von HocrInputData wird durch einen Verweis auf die lokale Datei gleichen Namens ersetzt. |
Set |
FormatSearchablePdfConversionMode (ab Version 1.18.0) |
String |
Diese Property definiert, in welcher Form die im PDF enthaltenen Bilder an CIB ocr übergeben werden. Mögliche Werte: FormatSearchablePdfConvertImages FormatSearchablePdfConvertPages FormatSearchablePdfConvertAuto |
Set |
FormatSearchablePdfUseRotationHint (ab Version 1.18.0 |
String |
Wenn
diese Property gesetzt ist, wird für jede Seite des PDFs die Information über
eine Rotation an CIB ocr übergeben. Das verbessert die Erkennungsrate von CIB
ocr bei gedrehten Seiten. Mögliche Werte: 0 Bisheriges Verhalten 1 Übergabe der Informationen über die Seiten-Rotation an CIB ocr. (Default) |
Set |
FormatSearchablePdfReplaceText |
String |
Diese Eigenschaft ist nur gültig für OutputFormat=FormatSearchablePdf Wenn die Eigenschaft FormatSearchablePdfReplaceText NICHT gesetzt ist, wird das ursprüngliche Verhalten verwendet: pdf toolbox fügt immer neue CIB HOCR-Inhalte hinzu, ohne bestehende zu entfernen. Wenn die Eigenschaft auf FormatSearchablePdfReplaceText=1 gesetzt ist, entfernt die pdf toolbox vorhandenen unsichtbaren CIB HOCR-Inhalt aus dem verarbeiteten Dokument, bevor ein neuer Inhalt hinzugefügt wird. Die neue Eigenschaft FormatSearchablePdfReplaceText kann auch in Verbindung mit TextSelectionFilter verwendet werden: Wenn FormatSearchablePdfReplaceText=1 und TextSelectionFilter einen Filter enthält, wird dieser Filter verwendet, um Text aus dem Originaldokument zu entfernen, bevor neuer HOCR-Text hinzugefügt wird.
Beispiele: 1. OutputFormat=FormatSearchablePdf FormatSearchablePdfReplaceText=1 - entfernt vorhandenen CIB-HOCR-Text, bevor neuer HOCR-Text hinzugefügt wird 2. OutputFormat=FormatDurchsuchbarPdf FormatSearchablePdfReplaceText=1 TextSelectionFilter={"Gruppen":["beliebig_unsichtbar"]} - entfernt jeglichen unsichtbaren Text (einschließlich CIB HOCR), bevor neuer HOCR-Text hinzugefügt wird. |
|
12. Technische Schnittstellen
Dieses Kapitel gibt einen kurzen Überblick über die verfügbare API und derer Parameter. Allgemein gilt, daß man über die Funktion CibPdfSetProperty seine gewünschten Parameter in die CIB pdf toolbox setzt und dann eine Funktion CibPdfJoin oder CibPdfMerge aufruft.
CibPdfSetPropertyCibPdfGetProperty
CibPdfJoin
CibPdfMerge
CibPdfGetVersion
CibPdfGetError
CibPdfGetErrorText
CibPdfGetLastError
CibPdfGetLastErrorText
CibPdfEventNotifier
CibPDFshowPageSetupDialog
CibPdfShowPrintDialog
CibPdfShowPrintSetupDialog
MemoryOutputCallback
AbortDocCallback
CibPdfJobCreate
CibPdfJobFree
CibPdfJobMerge
CibPdfJobJoin
CibPdfJobShowPrintDialog
CibPdfJobShowPrintSetupDialog
CibPdfJobShowPageSetupDialog
CibPdfJobGetProperty
CibPdfJobSetProperty
CibPdfJobGetPropertyW
CibPdfJobSetPropertyW
CibPdfJobGetError
CibPdfJobGetErrorText
CibPdfJobCancel
CibPdfSetProperty
BOOL EXPORTFUNC CibPdfSetProperty (const char* a_pOptionName,
void* a_pOptionValue)
Mit dieser Funktion werden Eigenschaften für die CIB pdf toolbox gesetzt. Die Eigenschaften InputFilename, OutputFilename sowie Data müssen vor Aufruf von CibPdfMerge gesetzt werden. Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
Parameter:
Typ |
Variable |
Bedeutung |
char* |
a_pOptionName |
Name des gewünschten Konfigurationsparameters |
void* |
a_pOptionValue |
Wert des gewünschten Konfigurationsparameters |
|
|
Achtung: Beachten Sie den Datentyp des jeweiligen Wertes |
CibPdfGetProperty
BOOL EXPORTFUNC CibPdfGetProperty(const char* a_pOptionName,
void* a_pOptionValue, long a_lBufferLength)
Mit dieser Funktion können die aktuell gesetzten Eigenschaften der CIB pdf toolbox Komponente abgefragt werden. Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
Parameter:
Typ |
Variable |
Bedeutung |
char* |
a_pOptionName |
Name des gewünschten Konfigurationsparameters |
void* |
a_pOptionValue |
Wert des gewünschten Konfigurationsparameters |
long |
a_lBufferLength |
Länge des Puffers für den Optionsinhalt |
CibPdfJoin
BOOL EXPORTFUNC CibPdfJoin()
Mit dieser Methode wird die Join Funktionalität gestartet. Mit der Funktion CibPdfSetProperty müssen vorher mindestens die Eigenschaften InputFilename und OutputFilename gesetzt werden. Beim Aneinanderfügen von verschlüsselten Pdfs muss für jede Datei das zugehörige Ownerpaßwort bekanntgegeben werden. Dies geschieht mittels der Property EncryptOwnerPassword. Die Funktion hat keine Parameter. Sie liefert TRUE wenn kein Fehler beim Ausführen dieser Funktion aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfMerge
BOOL EXPORTFUNC CibPdfMerge()
Mit dieser Methode wird der Merge-Durchlauf gestartet. Mit der Funktion CibPdfSetProperty müssen vorher mindestens die Eigenschaften InputFilename, OutputFilename und Data gesetzt werden. Die Funktion hat keine Parameter. Sie liefert TRUE wenn kein Fehler beim Ausführen dieser Funktion aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfGetVersion
BOOL EXPORTFUNC CibPdfGetVersion(unsigned long *a_iVersion)
Die Funktion liefert die aktuelle Versionsnummer der Cib pdfm Komponente zurück. Damit können Sie in Ihrer Applikation sicherstellen, daß eine Mindestversion vorliegt, wenn Sie etwa spezielle Programmeigenschaften benutzen, die erst ab einem bestimmten Release zur Verfügung gestellt wurden. Die Funktion liefert TRUE wenn kein Fehler aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
Parameter:
Typ |
Variable |
Bedeutung |
unsigned long & |
a_lVersion |
a_lVersion liefert die aktuelle Versionsnummer der CIB pdfm Komponente zurück. Der unsigned long-Wert liefert die Informationen in zwei Bereichen. Die ersten zwei Bytes enthalten den Versionszähler des Hauptreleases. Die Bytes 3 und 4 enthalten den zugehörigen aktuellen Releasezähler. Je nach Programmiersprache sind die Hi- und Lowbereiche entsprechend zu beachten (siehe Schneller Einstieg). |
CibPdfGetError
BOOL EXPORTFUNC CibPdfGetError (CibPdfHandle a_hJob, int*a_pErrorCode)
Mit dieser Funktion kann der aktuelle Fehlertext zu einem Auftrag nach dem Ausführen einer Funktion abgefragt werden.
Parameter:
Typ |
Variable |
Bedeutung |
long |
a_hJob |
Handle des auszuführenden Auftrags |
int * |
a_iError |
Platzhalter für die aktuelle Fehlernummer |
CibPdfGetErrorText
BOOL EXPORTFUNC CibPdfGetErrorText(int a_iErrorId, char* a_pTextBuffer,
long a_lBufferLength)
Mit dieser Funktion kann der aktuelle Fehlertext zu einem Auftrag nach dem Ausführen einer Funktion abgefragt werden. Die Funktion liefert TRUE wenn kein Fehler beim Abholen des Fehlertextes aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
Parameter:
Typ |
Variable |
Bedeutung |
int |
a_iErrorId |
Fehlernummer |
char |
a_pTextBuffer |
Textpuffer für den Fehlertext |
long |
a_lBufferLength |
Länge des verfügbaren Textpuffers |
CibPdfGetLastError
BOOL EXPORTFUNC CibPdfGetLastError(int *a_iError)
Mit dieser Funktion kann der aktuelle Fehlerstatus der CIB pdf Komponente nach dem Ausführen verschiedener Funktionen abgefragt werden. Die Funktion liefert TRUE wenn kein Fehler beim Ausführen dieser Funktion aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
Parameter:
Typ |
Variable |
Bedeutung |
int |
a_iError |
Platzhalter für die aktuelle Fehlernummer |
CibPdfGetLastErrorText
BOOL EXPORTFUNC CibPdfGetLastErrorText(char* a_pTextBuffer,
long a_lBufferLength)
Mit dieser Funktion kann der aktuelle Fehlertext der CIB pdf toolbox Komponente nach dem Ausführen einer Funktion abgefragt werden. Die Funktion liefert TRUE wenn kein Fehler beim Abholen des Fehlertextes aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
Parameter:
Typ |
Variable |
Bedeutung |
int |
a_pTextBuffer |
Textpuffer für den Fehlertext |
long |
a_lBufferLength |
Länge des verfügbaren Textpuffers |
CibPdfEventNotifier
(ab CIB pdf toolbox Version 1.24.0)
Um die Verwendung der Callbacks zu ermöglichen muss in der rufenden Anwendung zu der in „CibPdfEventNotifier.h“ der CIB pdf toolbox definierten CibPdfEventNotifier Klasse eine abgeleitete Klasse implementiert werden.
Ebenso müssen deren
abstrakte Methoden
CibPdfEventNotifier::OnPageStart(...) und
CibPdfEventNotifier::OnPageImageOutput(...),
implementiert werden um die Callback-Daten empfangen zu können.
Der Pointer zu der Instanz der abgeleiteten Klasse wird (konvertiert in eine natürliche Zahl und als String dargestellt) der Property “EventNotifier” zugeordnet.
Die Methode „CibPdfEventNotifier::OnPageStart(...)“ wird von der CIB pdf toolbox zu Beginn der Verarbeitung jeder Seite gerufen. Sie liefert die „CibPdfEventPageInfo“-Datenstruktur und ein Kennzeichen zurück, über das die weitere Verarbeitung abgebrochen werden kann.
Die Methode „CibPdfEventNotifier::OnPageImageOutput(...)“ wird von der CIB pdf toolbox nach dem Rendern einer Seite und vor dem Speichern des Bildes gerufen. Sie liefert die „CibPdfEventPageImageInfo“-Datenstruktur und ein Kennzeichen zurück, über das das Speichern des Bildes verhindert werden kann.
class CibPdfEventNotifier
{
public: virtual void OnPageStart(CibPdfEventPageInfo* pageInfo, bool& abort) = 0; virtual void OnPageImageOutput(CibPdfEventPageImageInfo* imageInfo, bool& skipFileOutput) = 0;
};
Die von der CIB pdf toolbox zu Beginn der Verarbeitung jeder Seite gelieferte „CibPdfEventPageInfo“-Datenstruktur hat den folgenden Aufbau:
struct CibPdfEventPageInfo
{
int pageIndex;
size_t pageWidth;
size_t pageHeight;
};
Parameter:
Typ |
Variable |
Bedeutung |
int |
pageIndex |
Index der aktuellen Seite (0-basiert) |
size_t |
pageWidth |
Breite und Höhe der aktuellen Seite in Pixel und der Standard-Auflösung von 72dpi |
Die von der CIB pdf toolbox nach dem Rendern einer Seite und vor dem Speichern des Bildes gelieferte „CibPdfEventPageImageInfo“-Datenstruktur hat den folgenden Aufbau:
struct CibPdfEventPageImageInfo
{
int pageIndex;
size_t imageWidth;
size_t imageHeight;
size_t imageStride;
size_t imageLength;
Format imageFormat;
const unsigned char* data;
};
enum Format {fRGB565, fRGB888, fBMP};
Parameter:
Typ |
Variable |
Bedeutung |
int |
pageIndex |
Index der aktuellen Seite (0-basiert) |
size_t |
imageWidth |
Die Standard-Parameter einer Bitmap im DIB-format (DIB = geräteunabhängiges Bitmap Format) |
char* |
Data |
Komplette Bitmap im DIB-Format |
size_t |
imageLength |
Deren Länge in Bytes |
CibPDFshowPageSetupDialog
(ab CIB pdf toolbox Version 1.10.0)
BOOL EXPORTFUNC CibPdfShowPageSetupDialog(int *a_iButtonID);
Unter Windows startet diese Funktion mit dem Standard Druckertreiberdialog vom Betriebssystem. Hierüber können entsprechende Druckerkonfigurationen getroffen werden, die beim anschließenden Drucken berücksichtigt werden. Diese Funktion ist für Anwendungen interessant, die den Druck immer mit einem Benutzerdialog ausführen wollen.
Parameter:
Typ |
Variable |
Bedeutung |
int* |
a_iButtonId |
Rückgabe der ButtonId die innerhalb der Druckauswahl gedrückt wurde. 1 (COMOD_ID_OK) OK-Button (=> es sollte von Ihnen CibPrPrint im Anschluß aufgerufen werden) 3 (COMOD_ID_CLOSE) Schließen-Button (=> der Anwender hat den Drucker gewechselt möchte aber nicht sofort drucken) 2 (CIB_ID_CANCEL) Abbrechen-Button |
Die Funktion liefert TRUE zurück wenn kein Fehler aufgetreten ist.
CibPdfShowPrintDialog
BOOL EXPORTFUNC CibPdfShowPrintDialog(int *a_iButtonID);
Unter Windows startet diese Funktion mit dem Standard Seitenauswahl-/Druckertreiberdialog vom Betriebssystem. Hierüber können entsprechende Druckerkonfigurationen und Seitenauswahlen getroffen werden, die beim anschließenden Drucken berücksichtigt werden. Diese Funktion ist für Anwendungen interessant, die den Druck immer mit einem Benutzerdialog ausführen wollen.
Parameter:
Typ |
Variable |
Bedeutung |
int* |
a_iButtonId |
Rückgabe der ButtonId die innerhalb der Druckauswahl gedrückt wurde. CIB_ID_OK OK-Button (=> es sollte von Ihnen CibPrPrint im Anschluß aufgerufen werden) CIB_ID_CLOSE Schließen-Button (=> der Anwender hat den Drucker gewechselt möchte aber nicht sofort drucken) CIB_ID_CANCEL Abbrechen-Button |
Die Funktion liefert TRUE zurück wenn kein Fehler aufgetreten ist.
CibPdfShowPrintSetupDialog
(ab CIB pdf toolbox Version 1.10.0)
BOOL EXPORTFUNC CibPdfShowPrintSetupDialog(int *a_iButtonID);
Unter Windows startet diese Funktion mit dem Standard Seitenauswahl-/Druckertreiberdialog vom Betriebssystem. Hierüber können entsprechende Druckerkonfigurationen getroffen werden, die beim anschließenden Drucken berücksichtigt werden. Diese Funktion ist für Anwendungen interessant, die den Druck immer mit einem Benutzerdialog ausführen wollen.Parameter:
Typ |
Variable |
Bedeutung |
int* |
a_iButtonId |
Rückgabe der ButtonId die innerhalb der Druckauswahl gedrückt wurde. CIB_ID_OK OK-Button (=> es sollte von Ihnen CibPrPrint im Anschluß aufgerufen werden) CIB_ID_CLOSE Schließen-Button (=> der Anwender hat den Drucker gewechselt möchte aber nicht sofort drucken) CIB_ID_CANCEL Abbrechen-Button |
Die Funktion liefert TRUE zurück wenn kein Fehler aufgetreten ist.
MemoryOutputCallback
COMOD_CALLBACK_TYPE(COMOD_BOOL, MemoryOutputCallbackType) (const char* a_TextOutput, size_t a_Length, void*a_pUserdata, int a_Error)
Callback-Prototyp für Daten-Ausgabe im Speicher.
Parameter:
Typ |
Variable |
Bedeutung |
char* |
a_TextOutput |
Die Daten, die über die Callbackfunktion übergeben werden. |
size_t |
a_Length |
Die Byte-Anzahl der Daten. |
void* |
a_pUserdata |
Zeiger auf beliebige Nutzerdaten. |
Int* |
a_Error |
Fehlercode, der vom Aufrufer an die Callbackfunktion übergeben wird. |
Die Funktion liefert FALSE zurück wenn Fehler aufgetreten ist.
AbortDocCallback
(ab CIB pdf toolbox Version 1.10.0)
BOOL EXPORTFUNC AbortDocCallback(const ABORTDOCINFO* a_AbortDocInfo, void* a_pUserData)
typedef struct _abortdoc {unsigned long ulCurrentPage;unsigned long ulPageCount;} ABORTDOCINFO;
Callback-Prototyp für Daten-Ausgabe im Speicher. Die Callback wird nach jeder Seite des Dokumentes mit den Informationen zur aktuellen Seitenzahl und der Gesamtseitenzahl aufgerufen. Durch Rückgabe des Wertes „true“ wird die Konvertierung fortgesetzt, durch false erfolgt ein Abbruch der Konvertierung mit Rückgabewert 1000(userbreak).
Parameter:
Typ |
Variable |
Bedeutung |
ABORTDOCINFO* |
a_AbortDocInfo |
Die Daten, die über die Callbackfunktion übergeben werden. |
void* |
a_pUserdata |
Zeiger auf beliebige Nutzerdaten. |
Die Funktion liefert FALSE zurück wenn ein Abbruch gewünscht ist.
CibPdfJobCreate
COMOD_BOOL COMOD_API CibPdfJobCreate(CibPdfJobHandle*a_pJob, const char* a_pReserved)
Mit dieser Methode wird ein JobHandle erzeugt, welches dann mit Hilfe von CibPdfJobFree wieder freigegeben wird.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_pJob |
Handle des auszuführenden Auftrags |
char* |
a_pReserved |
|
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobFree
COMOD_BOOL COMOD_API CibPdfJobFree(CibPdfJobHandle*a_pJob);
Mit dieser Methode wird ein, mit Hilfe von CibPdfJobCreate erzeugtes JobHandle wieder freigegeben.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_pJob |
Handle des freizugebenden Auftrags |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobMerge
COMOD_BOOL COMOD_API CibPdfJobMerge(CibPdfJobHandle a_hJob);
Mit dieser Methode wird ein PDF-Merge Job ausgeführt. Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobJoin
COMOD_BOOL COMOD_API CibPdfJobJoin(CibPdfJobHandle a_hJob);
Mit dieser Methode wird ein PDF-Join Job ausgeführt. Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobShowPrintDialog
COMOD_BOOL COMOD_API CibPdfJobShowPrintDialog(CibPdfJobHandle a_hJob, int* a_pButtonID);
Unter Windows startet diese Funktion
mit dem Standard Seitenauswahl-/Druckertreiberdialog vom Betriebssystem.
Hierüber können entsprechende Druckerkonfigurationen und Seitenauswahlen getroffen
werden, die beim anschließenden Drucken berücksichtigt werden. Diese Funktion
ist für Anwendungen interessant, die den Druck immer mit einem Benutzerdialog
ausführen wollen.
Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
Int* |
a_pButtonID
|
Rückgabe der ButtonId die innerhalb der Druckauswahl gedrückt wurde. 1 (COMOD_ID_OK) OK-Button (=> es sollte von Ihnen CibPrPrint im Anschluß aufgerufen werden) 3 (COMOD_ID_CLOSE) Schließen-Button (=> der Anwender hat den Drucker gewechselt möchte aber nicht sofort drucken) 2 (CIB_ID_CANCEL) Abbrechen-Button |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobShowPrintSetupDialog
COMOD_BOOL COMOD_API CibPdfJobShowPrintSetupDialog(CibPdfJobHandle a_hJob, int* a_pButtonID);
Unter Windows startet diese Funktion
mit dem Druckereigenschaftendialog des jeweiligen Treiberherstellers des gerade
aktivierten Druckers. Hierüber können entsprechende Druckerkonfigurationen
getroffen werden, die beim anschließenden Drucken berücksichtigt werden. Diese
Funktion ist für Anwendungen interessant, die den Druck immer mit einem
Benutzerdialog ausführen wollen.
Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
Int* |
a_pButtonID
|
Rückgabe der ButtonId die innerhalb der Druckauswahl gedrückt wurde. 1 (COMOD_ID_OK) OK-Button (=> es sollte von Ihnen CibPrPrint im Anschluß aufgerufen werden) 3 (COMOD_ID_CLOSE) Schließen-Button (=> der Anwender hat den Drucker gewechselt möchte aber nicht sofort drucken) 2 (CIB_ID_CANCEL) Abbrechen-Button |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobShowPageSetupDialog
COMOD_BOOL COMOD_API CibPdfJobShowPageSetupDialog(CibPdfJobHandle a_hJob, int* a_pButtonID);
Unter Windows startet diese Funktion
mit dem Standard Druckertreiberdialog vom Betriebssystem. Hierüber können
entsprechende Druckerkonfigurationen (Seite einrichten) getroffen werden, die
beim anschließenden Drucken berücksichtigt werden. Diese Funktion ist für
Anwendungen interessant, die den Druck immer mit einem Benutzerdialog ausführen
wollen.
Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
Int* |
a_pButtonID
|
Rückgabe der ButtonId die innerhalb der Druckauswahl gedrückt wurde. 1 (COMOD_ID_OK) OK-Button (=> es sollte von Ihnen CibPrPrint im Anschluß aufgerufen werden) 3 (COMOD_ID_CLOSE) Schließen-Button (=> der Anwender hat den Drucker gewechselt möchte aber nicht sofort drucken) 2 (CIB_ID_CANCEL) Abbrechen-Button |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobGetProperty
COMOD_BOOL COMOD_API CibPdfJobGetProperty(CibPdfJobHandle a_hJob, const char* a_pName, void*a_pValue, size_t a_MaxLength);
Mit dieser Funktion können die aktuell
gesetzten Eigenschaften der CIB pdf toolbox Komponente abgefragt
werden.
Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
char* |
a_pName |
Name der gewünschten Property |
void* |
a_pValue |
Wert der gewünschten Property |
size_t |
a_MaxLength |
Länge des Puffers für den Optionsinhalt |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobSetProperty
COMOD_BOOL COMOD_API CibPdfJobSetProperty(CibPdfJobHandle a_hJob, const char* a_pName, void*a_pValue, size_t a_Length);
Mit dieser Funktion können die
Properties für die Ausführung der CIB pdf toolbox Komponente gesetzt
werden.
Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
char* |
a_pName |
Name der gewünschten Property |
void* |
a_pValue |
Wert der gewünschten Property |
size_t |
a_Length |
|
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobGetPropertyW
COMOD_BOOL COMOD_API CibPdfJobGetPropertyW(CibPdfJobHandle a_hJob, const wchar_t* a_pName, const wchar_t*a_pValue, size_t a_MaxLength);
Mit dieser Funktion können die aktuell
gesetzten Eigenschaften der CIB pdf toolbox Komponente abgefragt werden.
Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
wchar-t* |
a_pName |
Name der Property in wchar_t* (UNICODE) |
wchar-t* |
a_pValue |
Wert der Property in wchar_t* (UNICODE) |
size_t |
a_MaxLength |
Die Byte-Anzahl der Daten |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobSetPropertyW
COMOD_BOOL COMOD_API CibPdfJobSetPropertyW(CibPdfJobHandle a_hJob, const wchar_t* a_pName, const wchar_t*a_pValue/*, size_t a_Length*/);
Mit dieser Funktion können die
Properties für die Ausführung der CIB pdf toolbox Komponente gesetzt
werden.
Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
wchar-t* |
a_pName |
Name der Property in wchar_t* (UNICODE) |
wchar-t* |
a_pValue |
Wert der Property in wchar_t* (UNICODE) |
size_t |
a_MaxLength |
Die Byte-Anzahl der Daten |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobGetError
COMOD_BOOL COMOD_API CibPdfJobGetError(CibPdfJobHandle a_hJob, int*a_pErrorCode);
Mit dieser
Funktion kann der aktuelle Fehlerstatus der CIB pdf toolbox nach dem Ausführen verschiedener Funktionen abgefragt
werden.
Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
int* |
a_pErrorCode |
Platzhalter für die aktuelle Fehlernummer |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobGetErrorText
COMOD_BOOL COMOD_API CibPdfJobGetErrorText(CibPdfJobHandle a_hJob, char* a_pText, size_t a_MaxLength);
Mit dieser
Funktion kann der aktuelle Fehlertext zu einem Auftrag nach dem Ausführen einer
Funktion abgefragt werden.
Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
char* |
a_pText |
Textpuffer für den Fehlertext |
size_t |
a_MaxLength |
Länge des verfügbaren Textpuffers |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
CibPdfJobCancel
(ab CIB pdf toolbox Version 1.24.0)
COMOD_BOOL COMOD_API CibPdfJobCancel(CibPdfJobHandle a_hJob);
Mit dieser
Funktion kann der aktuelle Auftrag einer CIB ocr Texterkennung (CibOcrJobGetProgress)
abgebrochen werden.
Das JobHandle muss vorher mit CibPdfJobCreate erzeugt worden sein.
Parameter:
Typ |
Variable |
Bedeutung |
CibPdfJobHandle* |
a_hJob |
Handle des auszuführenden Auftrags |
Die Funktion liefert TRUE wenn kein Fehler
aufgetreten ist. Ansonsten wird FALSE zurückgegeben.
13. Allgemein gültige Properties
Die sogenannten „Properties“ oder Eigenschaften bilden ein wesentliches Kriterium vor dem Aufruf der eigentlich auszuführenden Methode. Alle unten im Klartext genannten Optionsnamen sind in den einzelnen Headerdateien der Komponenten auch als define deklariert und auch über diese defines in Ihrem Sourcecode ansprechbar. Die verschiedenen internen Module besitzen weitere spezielle Properties, die dort in den einzelnen Unterkapiteln beschrieben sind.
Zum Setzen der Optionen steht die Funktion CibPdfSetProperty und zum Abholen die Funktion CibPdfGetProperty zur Verfügung.
Propertybezeichnung |
Typ |
Funktionalität |
Art |
AnnotationsFilename (ab CIB pdf toolbox 1.4.105) |
String |
Eingabedatei bzw. Speicherbereich im XFDF-Format, die die Kommentare enthält, die ins PDF importiert werden sollen. Dies entspricht der Funktion „Kommentare importieren“ im Acrobat von Adobe. |
Set |
AnalysisFilename (ab CIB pdf toolbox 1.14.4) |
String |
Schreibt Informationen über die Eigenschaften einer PDF Seite in eine Logdatei. Syntax: Die Analysedatei enthält derzeit nur Informationen über die Seitengröße und Ausrichtung. Beispiel: Es liegen 2 Seiten vor, mit den angegebenen Abmessungen in mm und jeweils den Ausrichtungen Hochformat und Querformat. Diese Property kann mit der Property OutputFormat=FormatInfo kombiniert werden, so dass kein Ausgabedateiname angegeben werden muss. |
Set |
AntiAliasing |
String |
Einschalten der AntiAliasing-Funktionalität. 0 Kein AntiAliasing (default) 2 x2 AntiAliasing-Funktionalität für interne und Pango Rendering-Engine. 4 x4 AntiAliasing-Funktionalität für interne und Pango Rendering-Engine. (siehe auch RenderingEngine parameter) |
Set |
BookmarkAlignment (ab CIB pdf toolbox 1.4.84) |
String |
„0“ = Kein Einfügen von Leerseiten „1“ = Jede Ausfertigung wird durch Leerseiten auf eine gerade Seitenzahl erweitert. Nur sinnvoll bei PDF-Join ohne OutputFormat=FormatPrinter. |
Set |
CallbackPointer |
String |
Benutzerdaten des Callbacks für Rückmeldung nach jeder Seite |
Get/ |
ColorDithering (ab CIB pdf toolbox 1.4.86) |
String |
Ist diese Property gesetzt, werden bei der Ausgabe (als Bitmap oder beim Druck) alle Farbwerte in Schwarzweiß-Muster umgerechnet. Das Muster ergibt sich dann aus der Helligkeit des Farbwerts. Mögliche Werte:
|
Get/ |
Data |
String |
Angabe der Eingabedatenquelle. Syntax: Data=<Datentyp>:<Dateiname> <Datentyp>= leer (CSV wird angenommen) CSV TYP: weitere Datentypen (z.B. SQL), die über die DataAccess-Schnittstelle abgewickelt werden. <Dateiname>=datei.typ X:\datei.typ Datei.xml;//xpath Falls es sich bei der Datendatei (CSV, XML) um eine Multisteuerdatei handelt, muss MultiData=1 gesetzt werden. Beispiel: |
Get/ |
DataFileMemoryAddresses |
String |
Speicheradresse+Länge der Datendatei bei Speicherübergabe |
Get/ |
DataFileType |
String |
Datentyp für Datenquelle per Speicherübergabe |
Get/ |
DataXmlPath |
String |
Eingaberequest, z.B. „XML:data.xml;//root/...“ für Datenquelle per Speicherübergabe |
Get/ |
DataXslFilename |
String |
Name der Xsl-Transformationsdatei (für Transformation von Adobe-xfdf Formulardatenexport) |
Get/ |
DocumentUsedBookmarks (ab CIB pdf toolbox 1.4.105) |
String |
Ausgabe der in einem Dokument verwendeten Textmarken. Syntax: <Textmarke> ::= „{“ <Text> „;“ <Seitenliste> „}“ <Seitenliste> ::= <Seiten> | <Seiten> „,“ <Seitenliste> <Seiten> ::= <Zahl> | <Zahl> „-„ <Zahl> Beispiel: |
Get |
EmbeddedFileOutputFormat |
String |
„None“: Die Streams der eingebetteten Dateien werden nicht extrahiert (Default). „FormatEmbedded“: Die Streams der eingebetteten Dateien werden in das Metafile geschrieben. „FormatFile“: die eingebetteten Dateien werden in das aktuelle Arbeitsverzeichnis extrahiert. |
Set |
EmbeddedFilesExtract
|
String |
Ein JSON-Array von JSON-Objekten, die definieren, welche Dateien exportiert werden. Ein JSON-Objekt sieht wie folgt aus: - Datei: Dateiname wie im pdf angegeben - OutputFilename: Wo die Datei gespeichert werden soll. |
Set |
EnablePatternsShadings (ab CIB pdf toolbox 1.14.0) |
String |
Die Property steuert, ob PDF-Shadings und PDF-Patterns mit gerendert werden oder nicht. 1 PDF-Shadings und PDF-Patterns werden mit gerendert (Default) 0 PDF-Shadings und PDF-Patterns werden nicht mit gerendert. Erforderlich: CIB renderer |
Set |
ExtractEmbeddedFile (ab CIB pdf toolbox 1.8.0) |
String |
Über Belegung dieser Property kann gesteuert werden, dass die CIB pdf toolbox während eines Join-Laufs eine eingebettete Datei extrahiert. Mögliche Eingaben:
- „zugferd“: Die ZUGFeRD-XML-Datei wird extrahiert. Der Name, unter dem die eingebettete Datei herausgeschrieben wird, wird über die Property OutputFilename übergeben. |
Set |
ExtractEmbeddedFileInfo |
String |
„1“ = Die Informationen der eingebetteten Dateien werden in das Metafile geschrieben (Name, Dateigröße, Datum der Erstellung und letzten Änderung) (Default). „0“ = Es werden keine Informationen zu eingebetteten Dateien in das Metafile geschrieben. |
Set |
ExtractXmpMetadata |
String |
Ermöglicht das entpacken von XMP-Metadaten aus einer PDF-Datei. Die Property hat JSON Syntax. Beispiel: { „1“: „<filenameforfirstpage>“, // extrahiert xmp von Seite 1 } „<Zahl>“ Entpackt die XMP-Metadaten einer spezifischen Seite „Global“ entpackt die globalen XMP-Metadaten des PDF-Dokuments (aus dem Catalog Dictionary) „AllPages“ entpackt alle Seiten-XMP-Metadaten |
|
FieldCaptions. |
String |
dynamische Property, Beschriftung eines Formularfelds (z.B. FieldCaptions.Radio123) Der Wert der Property ist bei Pushbuttons: Eine durch „;“ getrennte Liste der Pushbuttonlabels. als Ansi-String oder als Utf8-String. (es kann mehrere Pushbuttons mit gleichem Namen geben, auch mit unterschiedlichen Labels) bei Radiobuttons und Checkboxen: Eine durch „;“ getrennte Liste, die den Stil für jeden Button der Gruppe angibt. Die Reihenfolge ist die gleiche wie bei FieldStates (außer „Off“). Mögliche Stile sind: „n“ = Quadrat (square) „u“ = Raute (diamond) „4“ = Haken (check) „8“ = Kreuz (cross) „H“ = Stern (star) „l“ = Kreis (bullet) |
Get |
FieldDimensions. |
String |
dynamische Property, Koordinaten eines Formularfelds (z.B. FieldDimensions.Feld123) |
Get |
FieldFlags. |
String |
Dynamische Property, Eigenschaften eines Formularfelds (z.B. FieldFlags.Feld123) Der Inhalt ist eine durch „;“ getrennte Liste der Eigenschaften, die für das Feld „Feld123“ gesetzt sind. Folgende Eigenschaften sind möglich: ReadOnly Schreibgeschützt Required Erforderlich NoExport Beim Exportieren des Formulars dieses Feld ignorieren Multiline mehrere Zeilen (nur bei Textfeldern) Password geschützte Eingabe (*****) (nur bei Textfeldern) NoToggleToOff Auswahl kann nicht auf leer gesetzt werden (Radiobutton) Radio redundant, siehe FieldType.<name> Pushbutton redundant, siehe FieldType.<name> Combo redundant, siehe FieldType.<name> Edit benutzerdefinierte Eingabe erlaubt (nur bei Comboboxen) Sort Auswahl sortieren (List- und Comboboxen) FileSelect Feld ist Auswahl für Dateiname MultiSelect Mehrfachselektion (nur bei Listbox) DoNotSpellCheck keine Rechtschreibprüfung DoNotScroll kein horizontales Scrolling (limitiert Textlänge) Comb Text in Kästchen RadiosInUnison Buttons mit demselben Exportwert synchron an- und abschalten CommitOnSelChange ausgewählten Wert sofort einsetzen (nicht erst beim Verlassen des Feldes) RichText Feld enthält „rich text“ (kein rtf, sondern Text mit ein paar html-tags wie <b>,<i>) |
Get |
FieldFont. |
String |
dynamische Property, Schriftart und -größe des Formularfeld-Textes |
Get |
FieldNames |
String |
Liste der Namen der Formularfelder im Dokument, durch „;“ getrennt |
Get |
FieldOptions. |
String |
dynamische Property, Optionen eines Formularfelds (z.B. FieldValue.Feld123) |
Get |
FieldOrder. |
String |
dynamische Property, Laufende Nummer des Formularfelds (unsortiert) |
Get |
FieldStates. |
String |
dynamische Property, Ausprägungen eines Formularfelds (z.B. FieldValue.Checkbox123) |
Get |
FieldType. |
String |
dynamische Property, Typ eines Formularfelds (z.B. FieldType.Textfeld123) |
Get |
FieldValue. |
String |
dynamische Property, zum Setzen oder Auslesen von Formularfeld-Inhalten (z.B. FieldValue.Textfeld123)
Durch Setzen dieser Property an den Modul PdfMerge können Inhalte von Formularfeldern übergeben und in das PDF eingemischt werden. (z.B. FieldValue.Textfeld123=Test)
|
Get/Set |
FillTextOutput (ab CIB pdf toolbox 1.27.0. ) |
String |
Diese Optionen wirken sich nur aus, wenn die Ausgabe Format-Option folgendermasen gesetzt ist: OutputFormat=FormatText (für die Ausgabe von reinem Text), oder OutputFormat=FormatHocr (für die Ausgabe von HOCR-Text). Wenn die Option FillTextOutput auf 0 gesetzt ist: Der extrahierte Text wird nur in die Ausgabedatei ausgegeben. Wenn der Ausgabedateiname nicht innerhalb der Option OutputFilename gesetzt ist, sollte ein Fehler erscheinen. Wenn die Option FillTextOutput auf 1 gesetzt ist: Der extrahierte Text wird in die Ausgabedatei ausgegeben und zusätzlich in die Ausgabeeigenschaft TextOutput in Utf8-Kodierung kopiert. Hinweis: Wenn FillTextOutput auf 1 gesetzt ist und OutputFilename nicht gesetzt ist, wird der extrahierte Text nur in der Property TextOutput gespeichert. |
Set |
FontsEmbedded (ab CIB pdf toolbox 1.10.0) |
String |
Wird dieser Wert gesetzt, so werden alle im PDF-Dokument verwendeten Fonts in das PDF Ausgabe-Dokument eingebettet. Mögliche Werte: „0“ kein Einbetten (default) „1“ Fonts werden einbettet. Hinweis: |
Set |
FontSubstitution (ab CIB pdf toolbox 1.10.0) |
String |
Die Property gilt wenn FontsEmbedded=1 oder PdfVersion=PDF/Axx. Alle im System nicht verfügbaren Fonts müssen ersetzt werden. Über diese Property kann gesteuert werden, welche Fonts für die Ersetzung verwendet werden. Syntax: Im Detail:
Beispiel: Hinweise:
|
Set |
FontWorkSpace |
String |
Pfad zum Verzeichnis, in dem die Fonts gespeichert sind, die beim Rendern des PDFs in Bildformat verwendet werden sollen. |
Set |
FormfieldNamePrefix |
String |
Präfix für alle Formularfelder eines Dokuments, bzw. eine durch „;“ getrennte Liste von Präfixen für die am Join beteiligten Dokumente. |
Set |
GeneratedDocumentCount (ab Version 1.4.83) |
String |
Liefert die Anzahl der erzeugten Ausgabedokumente. Im Normalfall wird „1“ zurückgeliefert, außer bei MultiOutput=1, wenn mehrere Ausgabe-PDFs erstellt werden. Im Fehlerfall, d.h. Abbruch und gar keine Ausgabe, wird „0“ zurückgegeben. |
Get |
GeneratedPageCount (ab Version 1.8.1) |
String |
Liefert die Anzahl der ausgegebenen Seiten. Beim Druck werden die erzeugten Kopien mitgezählt. Bei Ausgabe einer Datei ist die Anzahl identisch zu der aus PageCount. Im Fehlerfall, d.h. Abbruch und gar keine Ausgabe, wird „0“ zurückgegeben. |
Get |
GetFieldInfo |
String |
Über diese Property kann die Abfrage der Formularfelder ermöglicht werden. Mögliche Werte: „1“ Die Formularfelder können „0“ |
Get/ |
GetPageInfo |
String |
Über diese Property kann eine Versorgung der GET-Property „PageInfo.<seite>“ veranlasst werden. Mögliche Werte: „1“ Die Property „PageInfo.<seite>“ „0“ |
Get/ |
ImageInfo |
|
Abrufen einer Beschreibung über Bilder in einer PDF-Datei in JSON Format. |
Get |
ImagePdfCreation |
String |
Mögliche Werte: „0“ oder leer: Property hat keinen Effekt. „1“ CIB pdf toolbox verwendet CIB renderer um Inhalt von PDF Seiten als Grafik zu erzeugen. |
Set |
ImagePdfCreationPreserveText |
String |
Tritt der PdfAFallback Fall ein (siehe Kapitel 5.1.4.1.), können mit Setzen dieser Property Textinhalte aus der Eingabedatei über HOCR Export gesichert und in die Ausgabedatei übernommen werden. Mögliche Werte: „0“: Property hat keinen Effekt. „1“: Textinhalte der Eingabedatei werden in die Ausgabedatei übernommen |
Set |
IndDCAntiAliasing |
String |
Wird nicht mehr verwendet “2” – Einschalten x2 anti-aliasing Funktionalität für interne Rendering-Engine “4” – Einschalten x4 anti-aliasing Functionalität für interne Rendering-Engine (siehe Proprety RenderingEngine); Default: “0” oder leer (Es wird kein anti-aliasing durchgeführt) |
Set |
HiddenPages |
String |
CIB-interne Property, die derzeit nur vom CIB image unterstützt wird. Über diese Property gibt ein CIB-Viewer an, welche Seiten bei der Anzeige durch einen CIB viewer ausgeblendet werden sollen. Diese Information wird mit CIB-mitteln im PDF gespeichert. |
Set |
IgnoreTemporaryFontFailure (ab CIB pdf toolbox 1.8.0) |
String |
Über diese Property kann die Reaktion auf Fehler bei der temporären Installation von Schriften aus dem PDF gesteuert werden. Mögliche Werte: 1 Fehler werden ignoriert und die Verarbeitung fortgesetzt 0 Fehler werden mit einem Rückgabewert, z.B. 350, quittiert und die Verarbeitung beendet. (default) |
Set/ |
IncludeInvisibleText |
String |
Diese Property steuert, ob unsichtbarer PDF-Text (Rendering Mode = 3) von der CIB pdf toolbox ausgegeben wird oder nicht. Mögliche Werte: „1“ Unsichtbarer PDFdf-wird bei bestimmten Toolbox-Aufrufen genauso ausgegeben wie sichtbarer Pdf-Text. „0“ Unsichtbarer Pdf-Text wird bei diesen Toolbox-Aufrufen nicht ausgegeben. Diese Property ist nur bei folgenden Toolbox-Aufrufen wirksam: a) Bei der Toolbox-Textsuche mit PdfSearchText=“…“. b) Bei der Ausgabe des Pdf-Files in den OutputFormaten „FormatText“ oder „FormatCsv“. c) Bei der Ausgabe des Pdf-Files im OutputFormat „FormatXfdf“, wenn die Property „RegionTemplate“ nicht leer ist. d) Bei der Metafile-Ausgabe für CIB webview (OutputFormat ist „FormatWebview“). |
Set |
InputFilename |
String |
Eingabedatei bzw. eine durch „;“ getrennte Liste von Eingabedateien bzw. Paare {x};y von Seitenangabe(n)/Eingabedatei bzw. leere Seite(n) EMPTY[:Breite(mm), Höhe(mm)]. InputFilename= {Odd};Dokument1.pdf;EMPTY:210,297; {5,4,1-3};Dokument2.pdf;EMPTY heißt, dass alle ungeraden Seiten von Dokument1.pdf, eine leere Seite der Breite 210 mm und der Höhe 297mm, die Seiten 5, 4, 1, 2 und 3 von Dokument2.pdf und eine leere Seite mit der Breite und Höhe der aktuell letzten Seite (Seite 3 von Dokument2.pdf) in genau dieser Reihenfolge aneinandergefügt werden.
Syntax: InputFilename ::= <Eingabedatei> [“;“ <Eingabedatei>]... Eingabedatei ::= [<Seitenangaben> „;“] (<Filename> | <Speicherblöcke> | <Leerseite> | <Speicherblock-Delimiter>) Seitenangaben ::= „{“ <Seitenangabe> [“,“ <Seitenangabe>]... „}“ Seitenangabe ::= „All“ |“Even“ | „Odd“ | „First“ | „Last“ | <nummer> | (<startnummer> „-„ <endnummer>) Leerseite ::= „EMPTY“ [“:“ <Breite_in_mm> „,“ <Höhe_in_mm>] Speicherblöcke ::= <Speicherblock> [<Speicherblock-Delimiter> <Speicherblock>]... Speicherblock ::= <Adresse> <Speicherblock-Delimiter> <Länge>
Ein <Speicherblock-Delimiter> ist ein einzelnes Zeichen ungleich „;“, das möglichst nicht in einem Filenamen vorkommt, z.B. „#“, „?“. Adresse und Länge sind Dezimalzahlen |
Get/ |
InputMemoryAddress |
String |
Paare xxx?yyy von Speicheradresse/Länge Zu beachten: |
Get/ |
InsertEmptyPageInDuplex (ab CIB pdf toolbox 1.4.83) |
String |
„0“ = Keine DuplexLeerSeiten beim Druck einfügen(default) „1“ = Beim Duplexdruck von PDF-Dokumenten mit der CIB pdf toolbox werden bei ungerader Seitenanzahl zwischen den zusammengefügten PDF-Dokumenten automatisch Leerseiten eingesteuert. Die Identifizierung dieser Trennstellen erfolgt durch Auswertung der hinterlegten Markierungen. Diese Markierungen, werden über die Property JoinHistory gesetzt. (weitere Details, siehe Property JoinHistory) |
Get/ |
InsertEmptyPageBetweenRtfBookmarks (ab CIB pdf toolbox 1.4.83) |
String |
“0” = Keine DuplexLeerSeiten beim Druck einfügen(default) „1“ = Beim Duplexdruck von PDF-Dokumenten wird zwischen den Stellen, wo sich eine RtfBookmark ändert, bzw. wo ein Join gemacht wurde (siehe Property JoinHistory), eine Leerseite beim Druck eingefügt, wenn der darauffolgende Inhalt auf eine Rückseite gedruckt werden würde. |
Get/ |
JoinHistory (ab CIB pdf toolbox 1.4.83) |
String |
„0“ = Die CIB pdf toolbox setzt keine Markierung an den Seitenübergängen, an denen dieses aus mehreren Einzeldokumenten zusammengefügt wird. „1“ = Die Toolbox markiert diese Position(en).
Hinweis: Damit ist es möglich, einen späteren Ausdruck im Duplexmodus mit automatisch eingefügter Leerseite vorzunehmen. Siehe auch Property InsertEmptyPageInDuplex und InsertEmptyPageBetweenRtfBookmarks
Der Defaultwert ist 1 |
Get/ |
StartPage |
String |
In dieser Property kann die Seitennummer hinterlegt werden, bei der das PDF bei der Anzeige geöffnet wird. Die Nummer wird im PDF hinterlegt und bei der Anzeige durch den Adobe Reader, CIB jView oder CIB image ausgewertet. |
Set |
OpenSize (ab CIB pdf toolbox 1.13.5) |
String |
Gibt die Zoomstufe im Fenster des PDF-Anzeigeprogramms beim Öffnen der PDF-Datei vor. „Standard“ Standardeinstellung des PDF- „Fit“ An Fensterhöhe anpassen „FitH“ An Fensterbreite anpassen Kommt nur zur Anwendung, wenn auch StartPage gesetzt ist. |
Set |
PartialDocumentAlignment (ab CIB pdf toolbox 1.4.84) |
String |
„0“ = Kein Einfügen von Leerseiten „1“ = Jedes Teildokument wird durch Leerseiten auf eine gerade Seitenzahl erweitert. Nur sinnvoll bei PDF-Join ohne OutputFormat=Printer. |
Set |
PdfPrintFontCleanupInterval (ab CIB pdf toolbox 1.4.95) |
String |
Angabe eines Zeitintervalls, nach dem die CIB pdf toolbox Fonts aus der Fontliste entfernt. Damit kann verhindert werden, dass Fonts zu früh aus der Fontliste gelöscht werden. Einheit: Stunden
Bei jedem Aufruf prüft die CIB pdf toolbox die Fontliste. Diese enthält die noch nicht abgeräumten Fonts mit einem Zeitstempel. Alle Fonts älter als das FontCleanupInterval werden aus der Liste entfernt. Bei wiederholten Aufrufen von CibPdfMerge/ CibPdfJoin/CibPdfPrint im gleichen Prozeß wird die Fontliste nur geprüft, wenn seit dem letzten Aufruf mindestens 1 Stunde vergangen ist. |
Set |
LicenseKey |
String |
Lizenzschlüssel |
Set |
LicenseCompany |
String |
Lizenznehmer |
Set |
MaxResolution (ab CIB pdf toolbox 1.5.111) |
String |
Durch Angabe einer maximalen Auflösung (in dpi) kann die Größe von Grafiken im Metafile begrenzt werden. Das wirkt sich war auf die Qualität (etwa beim Zoomen) aus, die Metafiles werden jedoch kleiner. Default: Original-Auflösung wird beibehalten. Im Acrobat gibt es dieses Feature bei „Erweitert/Pdf-Optimierung“ und heißt „Bikubische Neuberechnung auf ... dpi für Bilder ab ... dpi“. Die CIB pdf toolbox führt die Neuberechnung (Resampling) nur beim Speichern als Metafile durch, nicht beim Speichern als PDF. Außerdem wird ein einfacherer (nicht bikubischer) Resampling-Algorithmus verwendet. |
Set |
ResolutionThreshold (ab CIB pdf toolbox 1.5.111) |
String |
Alle Bitmaps im Dokument, die eine höhere Auflösung haben als ResolutionThreshold (in dpi), werden auf MaxResolution herunterskaliert und dann ausgegeben. Das ist unabhängig von der Auflösung des Ausgabemediums (Bitmap, Drucker, Metafile). Setzt man nur MaxResolution, dann werden alle Bilder mit höherer Auflösung auf MaxResolution herunterskaliert. |
Set |
MemoryOutputCallback |
String |
Adresse der Callback-Funktion für Ausgabedokument per Speicherübergabe. |
Get/ |
MemoryOutputUserdata |
String |
Userdata der Callback-Funktion für Ausgabedokument per Speicherübergabe |
Get/ |
MetaFilename |
String |
Name des Metafiles, welches mit den CIB viewern angezeigt wird. |
Set |
MultiData |
String |
„1“ = Datendatei ist eine Multisteuerdatei |
Get/ |
MultiOutput |
String |
„1“ = Pro Datensatz eigene Ausgabedatei erzeugen |
Get/ |
NeedAppearances |
String |
„1“ = Acrobat baut die Formularfelder beim Öffnen neu auf. |
Get/ |
OutputFilename |
String |
Dateiname des Ausgabe-Dokuments |
Get/ |
OutputFormat |
String |
(keins): Dokument wird über OutputFilename gespeichert.
Auch für dieses Ausgabeformat wird ab CIB pdf toolbox 1.4.87 das Memory-Interface unterstützt. Wenn der Inhalt von Formularfeldern in den Textoutput übernommen werden soll, muss die Property FlattenFormfields=1 gesetzt werden.
(ab CIB pdf toolbox 1.4.90)
(ab CIB pdf toolbox 1.4.105) „FormatSearchablePdf“: In Grafiken enthaltener Text wird alsText extrahiert. (ab CIB pdf toolbox Version 1.6.116) „FormatBarcodeXml“: Die aus dem PDF über die Property „BarcodeInfo“ ausgelesenen Barcodeinformationen werden im XML-Format ausgegeben. (ab CIB pdf toolbox 1.8.0) „FormatBarcodeCsv“: Die aus dem PDF über die Property „BarcodeInfo“ ausgelesenen Barcodeinformationen werden im CSV-Format ausgegeben. (ab CIB pdf toolbox 1.8.0) „FormatInfo“: Es werden globale Dokumenten-Eigenschaften durch den PDF-Join aus dem PDF ausgelesen. (Ab CIB pdf toolbox 1.6.116f) “FormatPrinterCups”: Druckansteuerung über CUPS. Nur für Linux/Unix verfügbar. (siehe Kapitel 14.1.2 “Druck über CUPS” )
„FormatTiff“: Erzeugt Grafikdatei im Tiff-Format.
„FormatPng“: Erzeugt Grafikdatei im Png-Format.
„FormatWebview“: Ausgabeformat für die Anzeige in CIB doXiview.
“FormatWebP“: Erzeugt Grafikdatei im WebP-Format (verwendet verlustbehaftete und nicht verlustbehaftete Kompression). „FormatJpegXR“: Erzeugt Grafikdatei im JPEG extended range Format. „FormatBmp“: Erzeugt Grafikdatei im BMP-Format.
„FormatBmpLz4“: Erzeugt Grafikdatei im BMP-Format, wobei Daten nach lz4 Standard komprimiert sind. „FormatImage“: Bei einem Rendering-Vorgang werden mehrere Ausgabe-Grafikformate erzeugt. Dabei muss es sich um Raster-Grafikformate handeln. „FormatSvg“: Ausgabe einer Grafikdatei im SVG-Format (Scalable Vector Graphics=skalierbare Vektorgrafik).
”FormatAnalyse”: Der Prüf-Prozess zum Verifizieren der Signatur wird immer komplett durchgeführt und die SignedDocument.xxx-Properties für die Signatur gesetzt. Dadurch kann verfolgt werden, welche Verarbeitungsschritte erfolgreich
waren und welche nicht.
“FormatExtractImages”: Bei Angabe dieses Ausgabeformats werden alle Image-XObjects, die sich in den Eingabe-PDFs befinden, exportiert. Die Ausgabe erfolgt im TIFF-Format oder (bei bestimmten Pdf Bildobjekten) ins JPEG-Format unter
der bei OutputFilename angegebenen Dateibezeichnung.
„FormatCsv“: Aus dem PDF extrahierter Text wird als CSV-Datei ausgegeben. |
Get/ |
OutputRtfBookmarkNames |
|
Wenn die Option OutputRtfBookmarkNames=1 und PageSelection-Option unter Verwendung von CIB-Bookmark gesetzt ist, dann enthalten die Namen der Ausgabebilder Lesezeichennamen: Das Format ist OutputRtfBookmarkNames=0: <OutputFilename> - <Seitenzahl> Beispiel: out-000001.png Das Format ist OutputRtfBookmarkNames=1(erweiterte Ausgabe): <OutputFilename> - <RtfBookmarkName> - <CopyNumber> - <PageNumber> - <PageNumber>…. Beispiel: out-AUF1-0000-0000-00001.png |
|
PageCount |
String |
Anzahl Seiten im Dokument, Dezimalzahl als String. |
Get |
PageFieldNames.<seite> |
String |
Gibt die Formularfelder jeder Seite zurück. Z.B. PageFieldNames.0 enthält die Formularfelder der ersten Seite |
Get |
PageInfo.<seite> |
String |
Dynamische Property, in der Informationen zu einer Seite zurückgegeben werden (Breite, Höhe und Rotation). Z.B. PageInfo.1 enthält die Informationen zur zweiten Seite |
Get |
PdfDocPropertyEncoding |
String |
“” = kein Encoding(default) “Base64” = Base64 Encoding |
Get/ |
PdfDocProperties |
String |
Liefert die Namen, durch „;“ getrennt, aller benutzerdefinierten Dokumenteigenschaften. |
Get |
PdfDocProperties |
String |
Setzen neuer oder zu ändernder benutzerdefinierter Dokumenteigenschaften. |
Set |
PdfDocProperty.<name> (ab CIB pdf toolbox 1.4.78) |
String |
dynamische Property, Lesen oder Setzen des Wertes der benutzerdefinierten Dokumenteigenschaft, deren Namen über die Property PdfDocProperties geliefert werden. Das Encoding des Wertes erfolgt entsprechend der Property „PdfDocPropertyEncoding“. Achtung: neue Dokumenteigenschaften müssen über die Property „PdfDocProperties“ vorher bekannt gemacht werden. Bei Angabe von unbekannten Dokumenteigenschaften liefert die CIB pdf toolbox den Rückgabewert 99. |
Get/ |
PdfLinearized |
String |
Steuerung, ob das Ausgabe-PDF für die schnelle Anzeige im Web optimiert wird. Mögliche Werte:
|
Get/ |
PdfSearchIgnoreCase |
String |
Steuerung, ob bei der Suche im PDF die Groß-/Kleinschreibung berücksichtigt wird. Mögliche Werte:
|
Set |
PdfSearchFont |
String |
Setzen eines bestimmten Fonts. Bei einer nachfolgenden Textsuche werden als Ergebnis nur Texte geliefert, die mit diesem Font im Dokument vorkommen. Beispiel: PdfSearchFont=“CourierNewPS-ItalicMT“ bedeutet, dass im Dokument nur Textpassagen gesucht werden, die diesen Font verwenden.
Achtung: Die Fontbezeichnung muss mit der vom Acrobat-Reader aus den Dokument-Eigenschaften übereinstimmen. |
Set |
PdfSearchResult |
String |
Liefert die Fundstellen der Zeichenkette im Dokument. Jede Fundstelle wird durch eine Folge von Rechtecken beschrieben. Diese bezeichnen die genaue Position der gesuchten Zeichenkette im Seitentext. Eine Rechteck wird angegeben durch: <page>,<left>,<top>,<right>,<bottom>. Erstreckt sich eine Fundstelle über mehrere Zeilen, wird eine Folge von Rechtecken durch Semikolon voneinander getrennt zurückgeliefert.
„1,500,100,600,110;1,50,111,100,121“ heißt, dass sich der Suchtext auf Seite 1 über zwei Zeilen erstreckt. Einmal von (500,100) bis (600,110) und von (50,111) bis (100,121). „{1,500,100,600,110;1,50,111,100,121};{2,500,100,600,110;2,50,111,100,121}“ heißt dass der Suchtext auch noch auf Seite 2 von (500,100) bis (600,110) und von (50,111) bis (100,121) vorkommt. Eine Fundstelle kann sich auch über mehrere Seiten erstrecken. Ein Ergebnis wie „1,500,750,600,760;2,50,50,100,60“ bedeutet, dass die Fundstelle auf Seite 1 von (500,750) bis (600,760) geht und sich auf Seite 2 von (50,50) bis (100,60) fortsetzt. |
Get |
PdfSearchResultContext (ab CIB pdf toolbox 1.4.80)
|
String* |
Liefert die Fundstellen der Zeichenkette im Dokument mit ihrem Kontext.
={<Fundstelle1>};{<Fundstelle2>};... <Fundstelle> = {<Kontext>};<Rechteck1>;<Rechteck2>;... <Rechteck> = siehe PdfSearchResult <Kontext> = <Vor-Kontext> <Suchkette> <Nach-Kontext> Falls nicht genügend Zeichen im Dokument vorhanden sind um den definierten Vor- oder Nachkontext zu belegen (z.B. am Anfang oder Ende eines Dokuments), wird mit Leerzeichen aufgefüllt. Beispiel: Suchkette=Kinder, Vorkontext=3, Nachkontext=5 liefert das Ergebnis:
Die Property PdfSearchResult wird weiterhin zusätzlich belegt. |
Get |
PdfSearchText |
String |
Setzen der gesuchten Zeichenkette im Dokument. Hierbei kann es sich auch um eine längere Textpassage handeln. |
Set |
PdfSearchContext (ab CIB pdf toolbox 1.4.80) |
String |
Setzen eines Kontextes für die gesuchte Zeichenkette, der als Suchergebnis mitausgegeben wird. n= Anzahl Zeichen nach der gesuchten Zeichenkette Wird nur eine Zahl angegeben, so werden die Zeichen nach der gesuchten Zeichenkette verwendet. |
Set |
PdfVersionInfo (ab CIB pdf toolbox 1.18.0) |
String |
Diese Property liefert die PDF-Version und Spezial-Version des Dokuments zurück. Beispiel: {“Version“:“1.4“, „SpecialVersions“:[“PDF/A“, „PDF/X“]} Das PDF-Dokument hat die PDF-Version 1.4 und es erfüllt zusätzlich die Spezifikationen PDF/X und PDF/A. |
Get |
FirstPage LastPage |
String |
Einschränken der Textsuche (PdfSearchText) bzw. der Textausgabe (OutputFormat=FormatText) auf einen Seitenbereich. FirstPage=1 LastPage=3 Es wird nur Seite 1 bis 3 bearbeitet. Wenn die Angabe LastPage fehlt, geht der Bereich bis zum Ende des Dokuments. |
Set |
PdfSecurityMethod |
String |
Mögliche Werte sind: „“ = keine Methode „Standard“ = Methode ist „adobe standard security“ |
Get |
PngCompressLevel (ab CIB pdf toolbox 1.4.105) |
String |
Steuerung des Maßes der Kompression der Grafik beim Speichern. Mögliche Werte: 1 Standard-Wert für PNG Kompression 0 Keine Kompression 9 Maximale Kompression 2 Default |
Set |
PrefixDelimiter” (ab CIB pdf toolbox 1.3.62) |
String |
Der Parameter—prefix-delimiter definiert ein Trennzeichen zwischen Alias und Variablennamen und schaltet den Präfix-Mechanismus fest ein. Durch Setzen des Parameters—prefix-delimiter werden beim Einsatz von Multiknoten die Variablen eindeutig gehalten. Default=leer |
Set |
PrintCentered |
String |
Ist die Property auf „1“ gesetzt, wird die Seite(in x- und y-Richtung) bezüglich des bedruckbaren Bereichs(nicht des Papiers) zentriert. (default) Ist diese Property auf „0“ gesetzt, findet kein Zentrieren statt. |
Get/ |
PrintScaling |
String |
Skalieroptionen der Seiten auf den Druckbereich: PrintScaleNone – Die PDF-Seite wird nicht auf Druckerbegrenzungen skaliert. D.h. Texte und Grafiken werden abgeschnitten, wenn sie außerhalb der Druckseitengröße liegen. Die linke obere Ecke der PDF-Seite entspricht der linken oberen Ecke des bedruckbaren Bereichs - nicht des Papiers. Falls die PDF-Seite nicht im gleichen Seitenformat wie das Papier ist, bezieht sich die linke obere Ecke der PDF-Seite auf die gedrehte Druckseite.(default) PrintScaleDown – größeres Papier wird auf den bedruckbaren Bereich skaliert. PrintScaleFit – Das Papier wird passend auf den bedruckbaren Bereich skaliert, d.h. größere werden verkleinert und kleinere vergrößert |
Get/ |
Progress |
String |
Returning a JSON-description of current progress of the current running JOB. This property can be retrieved from a different thread as the thread in which the current execute is running. The JSON description consists of the Keys “AmountSteps” and “CurrentStep”. AmountSteps defines, how many internal bigger steps are done and the CurrentStep defines how many Steps were already done. |
Get |
RegenerateXMP (ab CIB pdf toolbox Version 1.6.116f) |
String |
„0“: Es wird nichts getan. (default) „1“: Aktualisiert XMP-Daten im PDF aus den DocInfo Werten. |
Set |
RenderingEngine (ab CIB pdf toolbox Version 1.7.0)
|
String |
“Internal” – Interne Rendering-Engine wird verwendet (Default für Unix-Systeme) “WinGDI” – Windows Rendering-Engine wird verwendet (Default für Windows-Systeme) “CIBRenderer” – Pango-Cairo Rendering-Engine wird verwendet; |
Set |
TraceFilename |
String |
Gibt an, wohin die Logmeldungen der Toolbox ausgegeben werden |
Get/ |
RegionTemplate |
String |
Über die Property wird der Name der XFDF-Datei übergeben, die die Bereiche (Rechtecke) enthält, aus denen Text extrahiert werden soll. Der extrahierte Text wird in eine XFDF- bzw. CSV-Datei geschrieben. Voraussetzung: RegionTemplate=<name>.xfdf |
Set |
RegionThreshold |
String |
Die Property gibt den prozentualen Anteil an, ab dem ein Zeichen zur Region gehört. Wenn also ein Zeichen zu einem geringeren Prozentsatz als hier angegeben in die Region hineinragt, zählt es nicht zur Region. RegionThreshold=<integer> Voraussetzung: |
Set |
SvgImageBounds (ab CIB pdf toolbox Version 1.20.0) |
String |
Über diese Property kann die maximale Auflösung (und damit die Größe der Ausgabe des Rendering-Prozesses) für SVG-Grafiken begrenzt werden. Möglicher Wert: Ein JSON-String mit folgenden Parametern/Werten: { „MinImageHeight“: 50, „MinImageWidth“: 50, „ResolutionThresholdJpeg“: 180, „ResolutionThresholdPng“: 180, „MaxResolutionJpeg“: 150, „MaxResolutionPng“: 150, } |
Set |
TempPath (ab CIB pdf toolbox Version 1.20.0) |
String |
Der in dieser Property angegebene Pfad wird verwendet für die Ablage von Andere Pfade wie z.B. zum Verzeichnis der Ausgabedatei, werden von dieser Property nicht beeinflusst. Der Pfad muss auf ein gültiges Verzeichnis verweisen. Es kann sich um einen relativen oder absoluten Pfad handeln. |
Set |
GraphicLayerInfo (ab CIB pdf toolbox Version 1.25.0) |
String |
In dieser Property wird zurückgemeldet, welche Grafiken beim Renderingvorgang im PDF gefunden werden. Erforderlich sind: OutputFormat=FormatText | FormatWebview | FormatJavaView RenderingEngine=CIBRenderer. Die Ausgabe hängt vom Inhalt der Property PageSelection ab: PageSelection leer: GraphicLayerInfo enthält die Information für das ganze PDF PageSelection gesetzt: GraphicLayerInfo enthält die Information für jede ausgewählte Seite Beispiele: PageSelection leer: {"stats": {"inlineImageCount":9,"externalImageCount":3,"externalImageIdents":[10,15,20]}} PageSelection gesetzt auf “1-2”: {"stats": [ {"inlineImageCount":0,"externalImageCount":1,"externalImageIdents":[10]}, {"inlineImageCount":3,"externalImageCount":2,"externalImageIdents":[15,20]}]} |
Get |
TextLayerInfo (ab CIB pdf toolbox Version 1.18.0) |
String |
In dieser Property wird zurückgemeldet, welche Textgruppen beim Renderingvorgang im PDF gefunden werden. Folgende Textgruppen sind möglich: any_visible – Jeder sichtbare Text simple_invisible – Unsichtbarer Text, nicht speziell gekennzeichnet cibocr_invisible – Unsichtbarer Text, von der CIB pdf toolbox als CIB_HOCR gekennzeichnet others_invisible – Unsichtbarer Text, von anderen PDF-Prozessoren gekennzeichnet Beispiel: {”groups”: [”any_visible”, “simple_invisible”, “cibocr_invisible”, “others_invisible”]}
Hinweise: OutputFormat muss auf Die PageSelection Property beeinflusst das Ausgabeformat der Property TextLayerInfo.
Beispiele: Keine PageSelection gesetzt: PageSelection ist gesetzt auf 1-3, |
Get |
TextMark (ab CIB pdf toolbox Version 1.37.0) |
String |
Die Eigenschaft funktioniert nur für das Ausgabeformat FormatText und arbeitet in Verbindung mit TextSelectionFilter. Wenn der Wert von TextSelectionFilter gesetzt ist als: TextSelectionFilter={"groups":["marked_invisible"]} Dann gibt die CIB pdf toolbox nur unsichtbaren Text aus, der mit einem speziellen Tag markiert ist, der durch die Eigenschaft TextMark angegeben wird. Für andere Gruppen im TextSelection-Filter wird die Eigenschaft TextMark ignoriert. Die CIB pdf toolbox extrahiert Text, der im pdf-Inhaltsstrom mit einem speziellen Tag markiert ist: CIB_HOCRerty. TextMark wird ignoriert. Beispiel: CibRsh.exe OutputFormat=FormatText TextSelectionFilter= {"Gruppen":["marked_invisible"]} TextMark=CIB_HOCR -fj Eingabe.pdf Ausgabe.txt |
Get |
TextOutput (ab CIB pdf toolbox Version 1.37.0) |
String |
Wenn wir FillTextOutput=1 setzen, dann wird die Ausgabeeigenschaft TextOutput mit Text in Utf8-Kodierung gefüllt. |
Get |
TextSelectionFilter (ab CIB pdf toolbox Version 1.18.0) |
String |
Über TextSelectionFilter kann die Property IncludeInvisibleText konfiguriert warden, d.h. sie steuert im Detail, welche Arten von sichtbaren und unsichtbaren Texten ausgegeben werden.
Als Auswahl können zusätzlich zu den einfachen Textgruppen any_visible, simple_invisible, cibocr_invisible, others_invisible (Details siehe Property TextLayerInfo) auch zusammengesetzte Textgruppen verwendet werden: any_invisible – jeder unsichtbare Text (simple_invisible + cibocr_invisible + others_invisible) any – jeder Text (any_visible + any_invisible) Hinweise: Die Property beeinflusst nur Ausgabe in Text- und Metafiles. Sie ist nur gültig für OutputFormat Beispiele: TextSelectionFilter={“groups“:[“cibocr_invisible“]}
TextSelectionFilter={”groups”:[”any_visible”, “any_invisible”]} |
Set |
UseColorProfileForCMYK (ab CIB pdf toolbox Version 1.4.98) |
String |
Mögliche Werte für Umwandlung in RGB: „1“ „US Web coated“ und „sRGB“ Profile werden benutzt (default) „0“ einfache Variante |
Set |
UseJbig2Compression (ab CIB pdf toolbox Version 1.10.0) |
String |
Achtung: Nur für Grafik-Overlay Über diese Property kann die für Overlay-Grafiken standardmäßig aktivierte Jbig2-Kompression deaktiviert werden. 0 Jbig2-Kompression wird deaktiviert, Der Standard ZLIB Kompression wird angewendet. 1 Jbig2-Kompression wird aktiviert (default) Hinweis: |
Set |
UseWinGDI |
String |
Wird nicht mehr verwendet, „1“ = Windows Rendering-Engine wird verwendet (Default für Windows-Systeme) „0“ = Interne Rendering-Engine wird verwendet (Default für Unix-Systeme) |
Set |
UseSvgExternalImages (ab CIB pdf toolbox Version 1.17.0) |
|
Ermöglicht es, alle internen Bilder, die zu SVG Grafiken zusammengefasst sind, separat vom SVG Inhalt als externe Resourcen zu speichern (JPEG oder PNG). Mögliche Werte: 0 deaktiviert 1 aktiviert |
|
ViewCallback |
String |
Adresse des Callbacks für Rückmeldung nach jeder Seite (interne Prop.) |
Get/ |
WorkSpace
(ab CIB pdf toolbox Version 1.4.81):
(ab CIB pdf toolbox Version 1.4.84): |
String |
Definitiert das Arbeitsverzeichnis für alle Dateinamensangaben, ausgenommen Ausgabedateien. Der Pfad wird als nullterminierte Zeichenkette angegeben. Der Pfad kann absolut angegeben werden oder relativ zum Arbeitsverzeichnis des aufrufenden Prozesses. Alle Dateiangaben (ohne absoluten Pfad) in Properties werden relativ zu diesem Workspace betrachtet. Es kann auch eine Liste von Arbeitsverzeichnissen angegeben werden. Die einzelnen Angaben werden durch Semikolon getrennt. Für jede verwendete Datei wird eine Suche gestartet und die erste Fundstelle genutzt. Ab dieser Version gilt die Property WorkSpace nicht mehr für Ausgabedateien. |
Get/ |
PageXmpMetadata (ab CIB pdf toolbox Version 1.14.0): |
String |
Diese Property dient dem Hinzufügen bzw. Überschreiben von Seiten-bezogenen Metadaten in einem PDF. Sie werden auf der jeweiligen Seite über “/Metadata“ referenziert. Syntax: Für jede Seite bzw. Seitenbereich des Ausgabe-PDFs können Metadaten (UTF-8 kodiert) spezifiziert werden. Die Metadaten können als XML-Datei oder Speicherblock übergeben werden. Wenn eine Seite bereits Metadaten enthält, so werden diese durch die neuen Daten ersetzt. Sind nur einige Seiten eines Dokuments angesprochen, bleiben Metadaten der restlichen Seiten unverändert erhalten. Beispiele: PageXmpMetadata= PageXmpMetadata= PageXmpMetadata= |
Set |
XMPMetadataExtension |
String |
Erlaubt die Angabe eines oder mehrerer XMP-Snippets vom Typ rdf:Description. Diese werden beim Konvertierungsvorgang (CibPdfSave()) der Metainfo des entstehenden PDFs hinzugefügt. Bitte beachten Sie dabei die offizielle XMP Spezifikation von Adobe. |
Set |
XfdfIgnorePageRotation (ab CIB pdf toolbox Version 1.17.0): |
String |
0 (default): Koordinaten werden im Seitenkoordinatensystem interpretiert und abhängig von Seitenausrichtung und cropping. (0,0) ist der Ursprung der MediaBox der Seite. 1: Koordinaten werden relativ zur sichtbaren Seite interpretiert. (0,0) ist die Koordinate Links Unten auf der sichtbaren seite (Nach zuschneiden und drehen) |
Set |
XfdfFlipPositionY ab CIB pdf toolbox Version 1.24.0): |
String |
Über diese Property wird der Ausgangspunkt / Anker der Koordinaten von links unten nach links oben geändert. 0 (default): Ausgangspunkt / Anker der Koordinaten links unten 1: Ausgangspunkt / Anker der Koordinaten links oben |
Set |
13.1. XMP Metadaten
AllgemeinBeispiel
Beispiel für XMP Metadaten
Allgemein
Bei Extensible Metadata Platform (XMP) handelt es sich um ein Format zum Einbetten von RDF in die Binärdaten. Damit sollen Metadaten in allen relevanten Adobe Systems -Applikationen nach einem einheitlichen Schema integriert werden.
Der Inhalt der Property XmpMetadataExtension ist beschrieben durch folgende Detailanforderungen, die sich insbesondere aus den Angaben in den XMP- und PDF/A-Spezifikationen ergeben:
- Das Attribut rdf:about muss auf „“ gesetzt werden.
- Der Inhalt der Description-Elemente und die notwendige Angabe eines eigenen Namespaces sind im Rahmen der XMP-Vorgaben beliebig.
- Der String muss UTF-8 encoded sein.
- Es können entprechend der XMP-Spezifikation nur Name-Wert-Paare (Properties) im XMP gespeichert werden.
- Ein Wert kann selbst kein XML sein. Strukturierte Werte (Unterschriftenbereich=Left,Top,Right,Bottom) und Listen von Werten (Author=Thiel, Eisenschmid, Wissenbach) werden von XMP aber unterstützt. Die verfügbaren atomaren Datentypen sind in der XMP-Spezifikation beschrieben.
- Für PDF/A-Konformität: Wenn der angegebene Namespace nicht einer der in der XMP Specification vordefinierten „XMP-Schemas“ ist, dann muss die Beschreibung des zugehörigen Schemas ebenfalls mitgegeben werden. Siehe hierzu die Angaben in der PDF/A-Spezifikation bezüglich Metadata. Das ist nicht erforderlich für normales PDF.
- Eine Überprüfung des Inhalts der XmpMetadataExtension auf Konformität findet nicht statt.
- Der Aufrufer sorgt dafür, daß der Propertywert ein XMP konformer String in UTF-8 Encoding ist. Das Voranstellen des XMP-Headers sowie des XMP Abschlusses ist nicht erlaubt.
- Im CIB documentServer muss diese Property als CDATA-Section oder mit entsprechenden Entities encoded werden, und natürlich auch UTF-8 enthalten.
Beispiel
XmpMetadataExtension=”
<rdf:Description rdf:about=\”\” xmlns:xmpTGp=\”http://ns.adobe.com/xap/1.0/t/pg/\”>
<xmpTGp:NPages>25<xmpTGp:NPages>
</rdf:Description>
“
Beispiel für XMP Metadaten
Die grüne Sektion beschreibt den Teil, der als Schema für den roten individuellen Inhalt (=eigene Property) gilt:
<rdf:Description rdf:about=”” xmlns:pdfaProperty=”http://www.aim.org/pdfa/ns/property/”>
<pdfaProperty:name>BackgroundFilename</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>internal</pdfaProperty:category>
</rdf:Description>
<rdf:Description rdf:about=”” xmlns:pdfaSchema=”http://www.aim.org/pdfa/ns/schema/”>
<pdfaSchema:namespaceURI>
http://www.cib.de/schemas/xmp/pdfprops/1.0/
</pdfaSchema:namespaceURI>
<pdfaSchema:prefix>cibpdf</pdfaSchema:prefix>
<pdfaSchema:property>
<rdf:Seq>
<rdf:li>BackgroundFilename</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:Description>
<rdf:Description rdf:about=”” xmlns:cibpdf=”http://www.cib.de/schemas/xmp/pdfprops/1.0/”>
<cibpdf:DefaultBackgroundFilename>wert1</cibpdf:DefaultBackgroundFilename>
</rdf:Description>
14. Interne Module im Detail
Die CIB pdf toolbox ist funktional in einzelne Module untergliedert, um dem Anwender ein Höchstmaß an Nutzen für seinen jeweiligen Einsatzzweck zu liefern. Jede spezielle Ausgabeform hat spezifische Eigenschaften, die durch zusätzliche Properties für diese jeweiligen Ausgabenarten unterstützt werden.
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. |
14.2. CIB pdf/join/split
Dieser Abschnitt gibt eine Einführung in die Funktionalität des PdfJoin der CIB pdf toolbox ab der Version 1.3.60.
Mit der Eigenschaft InputFilename ist zusätzlich zum Aneinanderfügen von ganzen PDF-Dokumenten (wie bisher) auch das Aneinanderfügen
bestimmter Seiten von einem oder mehreren PDF-Dokument(en) in Kombination mit leeren Seiten möglich.
Beispiele für die Seitenauswahl
Spezielle Properties zum Ändern der Dokument-Eigenschaften
Spezielle Properties für die Grafik-Erzeugung
Spezielle Properties für das ZUGFeRD-Datenmodell
Schwärzen Funktionalität
Spezielle Optionen für den PDF join
Bezeichnung | Wert | Wirkung |
---|---|---|
InputFilename | =“[{Seitenzahl(en)};]FileName |
Aus den in InputFilename angegebenen Dokumenten,
Seitenangaben etc. wird ein Ergebnisdokument zusammengestellt. |
Seitenzahl(en) | Keine Angabe oder “All“ | Alle Seiten auswählen |
“Odd” | Ungerade Seiten auswählen | |
“Even” | Gerade Seiten auswählen | |
“First” | Nur erste Seite auswählen | |
“Last” | Nur letzte Seite auswählen | |
“NoFirst” | Alle Seiten außer der ersten auswählen | |
“NoLast” | Alle Seiten außer der letzten auswählen | |
Zahl | Nur Seite Zahl auswählen | |
Zahl1-Zahl2 | Von Seite Zahl1 bis Zahl2 auswählen, wobei Zahl1<Zahl2 sein muss | |
Zahl1-Zahl2,Zahl3, ...,ZahlN-ZahlM | Mehrere Seiten oder Seitenbereiche auswählen (Komma als Trennzeichen) | |
FileName | Pfad zur Datei | Die Seiten dieser Datei werden ausgewählt |
EMPTY | “EMPTY” | Eine leere Seite mit Breite und Höhe der zuletzt eingefügten Seite einfügen |
Breite | Zahl (ganzzahlig, x, oder dezimal, x.y, zulässig) | Breite der leeren Seite in mm setzen |
Höhe | Zahl (ganzzahlig, x, oder dezimal, x.y, zulässig) | Höhe der leeren Seite in mm setzen |
PageRotation (ab Version 1.4.79) |
Seitenzahl(en);Winkel[; Seitenzahl(en);Winkel][;….] | Einzelne Seiten können gedreht werden. Mehrere Seitenangaben in unterschiedlichen Winkeln sind möglich. Zu den Prioritäten siehe unten. |
Seitenzahl(en) | Siehe bei InputFilename. | Die Seitenzahlen beziehen sich auf das Ergebnisdokument (nach join/split). |
Winkel | Möglich sind 90° 180° 270° |
Gradzahl für Drehung Die Drehung erfolgt im Uhrzeigersinn in Vielfachen von 90°. Beispiel:PageRotation={All};90;{3};180 |
PageSelection |
Die möglichen Werte sind im Kapitel CIB pdf/print beschrieben. Achtung:Alle hier gemachten Seitenangaben beziehen sich auf das vom CIB pdf/join erzeugte Ausgabedokument. |
Die Property PageSelection wird bei den folgenden Ausgabeformaten ausgewertet, OutputFormat= FormatPrinterFormatTiff FormatPng FormatJpeg FormatBmp FormatWebview FormatSvg FormatImage FormatText |
PdfVersion (ab Version 1.6.116b) |
Mögliche Werte: PDF/A-1b PDF/A-2b PDF/A-3b |
Set-Property Ein oder mehrere PDFs können in die hier angegebene PDF-Version überführt werden. Die Property „OutputFormat=FormatPdf“ oder „OutputFormat=FormatSearchablePdf“ muss gesetzt sein. |
SplitPages (ab Version 1.4.86) |
=0 (default) =1 |
Ergebnis ist ein Ausgabedokument
Das Ergebnisdokument wird in einseitige Ausgabedokumente aufgesplittet. Die Ausgabedokumente werden durch Anhängen einer fortlaufenden Nummer gekennzeichnet.
cibrsh SplitPages=1 -fj Dok1.pdf;Dok2.pdf Ausgabe.pdf ergibt:Ausgabe-1.pdf Ausgabe-2.pdf Ausgabe-3.pdf |
EmbeddedFiles ab Version 1.8.0) |
<EmbeddedFiles> ::= <EmbedFilename> | <EmbedFilename>;<EmbedFilename> <EmbedFilename> ::= „{“<Seitenangabe>;<EmbedFilename-ohneSeite>“}“|“{“<EmbedFilename-ohneSeite>“}“ <EmbedFilename-ohneSeite> ::= <Relationship>;<EmbedFilename-simple>|<Description>;<EmbedFilename-simple>|<Relationship>;<Description>;<EmbedFilename-simple>|<EmbedFilename-simple>
<Relationship> ::= “RELATIONSHIP=”<name> <Description> ::= “DESC=”<name> <EmbedFilename-simple> ::= Dateiname |
Set-Property Über diese Property kann eine Liste von Dateien angegeben werden, die bei der PDF-Generierung an das PDF bzw. an einzelne Seiten des PDFs angehängt werden. Konkret erfolgt ein Eintrag der Datei(en) in das jeweilige Catalog-/Page-Dictionary. Beispiel: EmbeddedFiles={1-3;Relationship=Source;Desc=”Description”;file1.pdf};{Relationship=Source;Desc=”Description for another file”;file2.pdf}; Zu beachten: - “Description” wird nur für bei PDF-Versionen >= 1.6 ausgewertet. Es kann beliebiger Text eingetragen werden. - “Relationship” wird nur bei PDF/A3-Konvertierung ausgewertet (PDF/A-3a, PDF/A-3b, PDF/A-3u).Es gibt vordefinierte Bezeichner (Source, Data, Alternative, Supplement, Unspecified), es können aber auch selbst definierte Werte verwendet werden. - Falls zu einem EmbedFilename eine Seitennummer (oder mehrere) angegeben werden, wird die Datei als Anhang dieser Seite(n) eingefügt. Ansonsten handelt es sich um einen Anhang des kompletten PDF-Dokuments.
- Die Seitenangabe kann sein: “\;” für “;” “\\” für “\”. |
DeleteEmbeddedFiles ab Version 1.8.0) |
<DeleteEmbeddedFiles> ::= All |. <EmbedFilename> | <Filenumber> | “{” <EmbedFilename> | <Filenumber “}” |
Set-Property Über diese Property kann eine Liste von Dateien angegeben werden, die aus dem Anhang des PDFs entfernt werden sollen. Konkret werden die zugehörigen Einträge aus dem jeweiligen Catalog/Page-Dictionary gelöscht. Beispiele: DeleteEmbeddedFiles={test.pdf};{22} DeleteEmbeddedFiles=test.pdf;13 Hinweise: - „All“: Es werden alle Attachments gelöscht. - Die zu löschende Datei kann über ihren Namen oder eine Nummer spezifiziert werden.
-
Name: Die Nummer entspricht dem Zähler im Dictionary. Nummer=13 heißt also, die 13. Datei wird gelöscht. |
UpdateEmbeddedFiles ab Version 1.8.0) |
Syntax ist identisch wie EmbeddedFiles |
Set-Property Über diese Property kann die Description der angehängten Dateien geändert werden. Hinweis: - Die zu ändernde Datei kann über ihren Namen oder eine Nummer oder beides spezifiziert werden. Siehe „DeleteEmbeddedFiles“ Beispiel: UpdateEmbeddedFiles={Desc=Desc;Relationship=Source;file.pdf;2};{Desc=Desc;Relationship=Source;file2.pdf} |
ExtractEmbeddedFiles (ab Version 1.8.0) |
Syntax ist identisch wie DeleteEmbeddedFiles |
Set-Property Über diese Property kann eine angehängte Datei aus dem PDF extrahiert werden.Die Ausgabe erfolgt in die in der Property „OutputFilename“ spezifizierte Datei. |
EmbeddedFilesInfo (ab Version 1.17.0) |
Der Inhalt hat folgenden Aufbau: [{“Relationship“:“Dateiart“,“ID“:IdNr,“Filename“: “Dateiname“,“Size“:Größe,“CompressedSize“: KomprimierteGröße} ] Dateiart=None | Source | CibEpdfSource | HybridPdfSource | jeder Standardwert für einen AFRelationship key IdNr=Laufende Nummer der eingebetteten Dateien(Bei LibreOffice-Hybrid-PDFs ist die Nummer negativ) |
Get-Property Es handelt sich um Get-Property, in der Informationen über in das PDF eingebettete Dateien im JSON-Format zurückgeliefert werden. Erforderlich ist: OutputFormat=FormatInfo Beispiele: Eingebettete Cib Epdf source Datei: [ {”Relationship”:”CibEpdfSource”,”ID”:1,”Filename”: ”Utf8FilenameWithoutBom.pdf”,”Size”:1024,”CompressedSize”:512} ] 2 Eingebettete Cib Standard source Dateien: [ {”Relationship”:”Source”,”ID”:1,”Filename”: ”FirstUtf8FilenameWithoutBom.anyext”,”Size”:1024, ”CompressedSize”:512},{”Relationship”:”Source”,”ID”=2;”Filename”: ”SecondUtf8FilenameWithoutBom2.anyext”,”Size”:2048,”CompressedSize”:1024} ] Eingebetteter Inhalt eines LibreOffice HybridPdfs: [ {”Relationship”:”HybridPdfSource”,”ID”:-1, “Filename”:”TheSameAsPdfDocName.odt”,”Size”:1024,”CompressedSize”:512} ] |
EmbeddedFilesInfoFilter (ab Version 1.17.0) |
EmbeddedFiles Epdf |
Set-Property Über diese Property kann der Typ der eingebetteten Datei eingeschränkt werden. Erforderlich ist:OutputFormat=FormatInfo und FilterInfo=EmbeddedFilesInfo |
FilterInfo (ab Version 1.8.0) |
RtfBookmarks |
Get-Property Informationen über die im PDF enthaltenen Dokument-Eigenschften und Textmarken werden in eine XML-Datei geschrieben. Erforderlich ist: Die Dokumenteneigen-schaften werden in die XML-Datei geschrieben Alle im PDF enthaltenen (RTF-) Textmarken werden in die XML-Datei geschrieben. Aufbau der XML-Datei: <pdfdocument><docinfo> <docinfoitem> <key></key> <valuestring></valuestring> oder <valuedatetime></valuedatetime> </docinfoitem> </docinfo> <pages> <page> <number></number> <rtfbookmarks></rtfbootmarks> </page> </pages> </pdfdocument> |
(Ab Version 1.17.0) | EmbeddedFilesInfo | Informationen über die im PDF eingebetteten Dateien werden in der Property EmbeddedFilesInfo zurückgeliefert. |
(Ab Version 1.20.0) |
FontsInfo ImagesInfo |
Informationen über die im PDF Dokument enthaltenen Schriftarten und Bilder werden in den Properties FontsInfo und ImagesInfo zurückgeliefert. |
Region (ab Version 1.4.86) |
=[[<page>:]<x1_mm>;<y1_mm>;<x2_mm>;<y2_mm>]... Werte in eckigen Klammern sind optional |
Mit Region spezifiziert man ein oder mehrere Rechtecke, und die Seiten auf denen die Rechtecke stehen. Die Vereinigungsmenge all dieser Rechtecke (geschnitten mit der Seitenfläche) gibt den Bereich an, aus dem der Text extrahiert wird, d.h. alle Zeichen, die nicht wenigstens teilweise in einem dieser Rechtecke liegen, werden ignoriert als ob sie nicht vorhanden wären. Mit Angabe von OutputFormat=FormatText wird ins outputfile.txt der extrahierte Text geschrieben, als unicode und mit Zeilenumbrüchen formatiert. |
<page>: | Keine Angabe oder “All“ “Odd” “Even” “First” “Last” “NoFirst” “NoLast” Zahl Zahl1-Zahl |
Beschreibung siehe oben |
<x1_mm>;<y1_mm> …… |
Zahlen, durch Semikolon getrennt. Die Einheit ist mm. |
Zur Beschreibung eines Rechteckes sind 2 Wertepaare erforderlich. Jedes Paar beschreibt die Koordinaten eines Eckpunktes des Rechteckes. Bezugspunkt für die Koordinaten ist die linke obere Ecke der Seite.
Beispiel: cibrsh OutputFormat=FormatText Region=NoLast:10;20;80;40;1:85;120;190;145 -fj Test.pdf output.txt |
PageCropping (ab Version 1.25.0) |
JSON Syntax PageCropping= [<*PageBoxInfo*>, <*PageBoxInfo*>] PageBoxInfo = {”PageNumber”:<PageNum>, “ClipBox”:[<X0>, <Y0>, <Width>, <Height>]} PageNumber = Seitenummer im PDF ClipBox ist ein Bereich mit den Parametern : X0(links), Y0(unten), Breite, Höhe In Einheit: pt Die X0 und Y0 Werte sind relative zur linken, oberen Ecke einer sichtbaren Seite (bzw. Bildes). |
Über diese Property kann ein Rechteck definiert werden, das einen Maskenrahmen festlegt. Dieser Rahmen beschneidet das PDF-Dokument für die Anzeige im PDF-Viewer bzw. im Ausdruck. Das Beschneiden verursacht nur ein Ausblenden der Informationen außerhalb des Maskenrahmens und kein Löschen, d.h. wenn der Rahmen nachträglich modifiziert wird, ist die ausgeblendete Information wieder zu sehen. Die Property-Einträge beziehen sich immer auf eine Seite des PDF-Dokuments. Beispiel: Beschneiden der ersten und dritten Seite des PDF-Dokuments: PageCropping=[{’PageNumber’:1, ‘ClipBox’:[10,20,300,400]}, {’PageNumber’:3, ‘ClipBox’:[20,20,100,200]}] |
TableMode (ab Version 1.4.100 |
=0 (default) =1 |
Extrahierter Text wird fortlaufend ausgegeben.
|
TextFormattingOptions (ab Version 1.20.0)
(ab Version 1.25.0)
|
={
“SeparateTextBlocks”: true | false } |
Bei EnableTextFormatting=true (default=false) wird ein spezielles Textverarbeitung-Modul aktiviert mit zusätzlichen Funktionen zur Verbesserung der Textqualität wie - Eliminieren von Bindestrichen aus der Worttrennung - Auflösen von Ligaturen - Umwandeln von Initialen in Normaltext - Eliminieren von Duplikaten (identische Texte an gleicher Stelle) Nur für OutputFormat=FormatText Beispiel: cibrsh.exe OutputFormat=FormatText TextFormattingOptions={”EnableTextFormatting”:true,”OutputFormats”:[”hocr”]} -fj input.pdf out.txt Bei SeparateTextBlocks=true (default=false) wird nach Textblöcken gesucht, die dann in der Textausgabe durch eine Leerzeile getrennt werden. Das verbessert die Lesbarkeit des Ausgabetextes. Textblöcke werden dadurch identifiziert, dass sie einen größeren Abstand voneinander haben. |
API (ab Version 1.20.0) |
=1 =2 |
Default: Die CIB pdf toolbox führt den Job aus.
Die CIB pdf toolbox wird zum Wrapper für die neue CIB pdfModule. Das bedeutet, dass die CIB pdf toolbox die Aufgabe nicht selbst ausführt, sondern die Bibliothek der CIB pdfModule geladen wird und diese die Ausführung übernimmt. Details siehe Kapitel „CIB pdfModule“ |
Die Seitenangaben besitzen unterschiedliche Prioritäten, so dass niedrigere Prioritäten von höheren überschrieben werden können. Die Prioritäten sind wie folgt verteilt:
Keine Priorität: All, Odd, Even, NoLast, NoFirst
Priorität RANGE: Zahl1 – Zahl2
Priorität DIRECT: Last, First, Zahl
Dabei gilt folgende Rangfolge: Keine Priorität < RANGE < DIRECT
Besitzen zwei Angaben gleiche Priorität, so gelten beide, ansonsten gilt die mit der höheren Priorität.
Beispiele für die Seitenauswahl
Folgende Beispiele zeigen mögliche Belegungen der Property InputFilename.
1) InputFilename=Dokument1.pdf;{4,7-9};Dokument2.pdf;Dokument3.pdf
Hier werden alle Seiten von Dokument1.pdf, die Seiten vier, sieben, acht und neun von Dokument2.pdf und alle Seiten von Dokument3.pdf in genau dieser Reihenfolge aneinandergefügt.
2) InputFilename={5,4,3,2};Dokument1.pdf;{All};Dokument2.pdf;Dokument3.pdf;{Even};Dokument4..pdf
Hier werden die Seiten fünf, vier, drei und zwei von Dokument1.pdf, alle Seiten von Dokument2.pdf, alle Seiten von Dokument3.pdf und alle geraden Seiten von Dokument4.pdf in genau dieser Reihenfolge aneinandergefügt.
3) InputFilename={First,Last};Dokument1.pdf;EMPTY;EMPTY:210,297;{7,10};Dokument2.pdf
Hier werden die erste und letzte Seite von Dokument1.pdf, eine leere Seite mit der Breite und der Höhe der letzten Seite von Dokument1.pdf, eine leere Seite mit der Breite 210 mm und der Höhe 297 mm und die Seiten sieben und zehn von Dokument2.pdf in genau dieser Reihenfolge aneinandergefügt.
4) InputFilename={};Dokument1.pdf;{Odd};Dokument2.pdf;EMPTY:210,297
Hier werden alle Seiten von Dokument1.pdf, alle ungeraden Seiten von Dokument2.pdf und eine leere Seite mit der Breite 210 mm und der Höhe 297 mm in genau dieser Reihenfolge aneinandergefügt.
5) InputFilename={NoFirst};Dokument1.pdf;EMPTY:210,297;{8,6,5,2-4};Dokument2.pdf;EMPTY
Hier werden alle Seiten außer der ersten von Dokument1.pdf, eine leere Seite mit der Breite 210 mm und der Höhe 297 mm, die Seiten acht, sechs, fünf, zwei, drei und vier von Dokument2.pdf und eine leere Seite mit der Breite und Höhe der vierten Seite von Dokument2.pdf in genau dieser Reihenfolge aneinandergefügt.
Spezielle Properties zum Ändern der Dokument-Eigenschaften
(ab CIB pdf toolbox 1.4.84) Nur im PDF-Join
Propertybezeichnung |
Typ |
Funktionalität |
Art |
DocInfo.Author |
String |
Eingabe des Verfassers. Überschreibt die im PDF hinterlegte Information. |
Get/ |
DocInfo.Title |
String |
Eingabe des Titels. Überschreibt die im PDF hinterlegte Information. |
Get/ |
DocInfo.Subject |
String |
Eingabe des Betreffs/Themas. Überschreibt die im PDF hinterlegte Information. |
Get/ |
DocInfo.Keywords |
String |
Eingabe der Stichwörter. Überschreibt die im PDF hinterlegte Information. |
Get/ |
DocInfo.CreationDate |
String |
Eingabe des Erstellungs-Datums Format: JJJJMMTThhmmss+01‘00‘ |
Get/ |
DocInfo.ModDate |
String |
Eingabe des Änderungs-Datums Format: JJJJMMTThhmmss+01‘00‘ |
Get/ |
ModuleName |
String |
Eingabe des Programms, mit dem das PDF erstellt wurde. |
Get/ |
CallerApplicationname |
String |
Anwendung, die das PDF geändert hat. |
Get/ |
Spezielle Properties für die Grafik-Erzeugung
(ab CIB pdf toolbox Version 1.4.102)
Über den Modul CIB pdf join ist neben der PDF-Ausgabe auch das Erzeugen von Grafikdateien möglich.
Property |
Funktionalität |
Typ |
|
OutputFormat |
Format der Ausgabedatei Unterstützt werden die Grafikformate: FormatTiff FormatBmp
FormatWebview |
String |
|
OutputFormat (ab Version 1.5.113) |
FormatExtractImages Bei Angabe dieses Ausgabeformats werden alle Image-XObjects, die sich in den Eingabe-PDFs befinden, exportiert. Die Ausgabe erfolgt im TIFF-Format oder im JPEG-Format unter der bei OutputFilename angegebenen Dateibezeichnung. Achtung: - Es wird kein PDF geschrieben - OutputFilename ist ein Mussfeld - Eine Ausgabe in den Speicher ist nicht möglich - Es wird kein dpi Wert in die TIFF-Bilddatei(en) geschrieben
1.) TiffSinglePage=“0“ (default): 2.) TiffSinglePage=“1“: „Output“ ist der Wert von OutputFilename, aber ohne Endung „000pp“ ist die Nummer der Seite, auf der das Bildobjekt das erste Mal auftritt. „000oo“ ist die Nummer des Bildobjekts.
Die Erzeugung der TIFF-Bilder kann direkt erfolgen oder die Pdf Bildobjekte werden zuerst in das DIB-Format (Windows Bitmap) und von dort in das TIFF-Format konvertiert. - Das Pdf Bildobjekt hat keinen der Filter JBIG2Decode, DCTDecode oder JPXDecode. - Es hat keine Maske und ist keine Maske. - Der Farbraum ist „DeviceGray“, „DeviceRGB“ oder „DeviceCMYK“ (mit BitsPerComponent 8). - Der Eintrag „Decode“ fehlt oder ist der Standardeintrag für den jeweiligen Farbraum ([0 1] für „DeviceGray“, [0 1 0 1 0 1] für „DeviceRGB“, [0 1 0 1 0 1 0 1] für „DeviceCMYK“).
Für alle anderen Pdf Bildobjekte erfolgt die TIFF-Ausgabe über den Zwischenschritt als DIB-Format. In diesem Fall bleiben nicht alle Bild-Eigenschaften erhalten: Erhalten bleiben auch bei dem DIB-Zwischenschritt:
Verändert können werden bei dem DIB-Zwischenschritt:
- Es hat keine Maske und ist keine Maske. - Der Farbraum ist „DeviceRGB“. Die Bildung des JPEG-Dateinamens erfolgt nach der gleichen Regel wie der Dateiname für die einzelnen TIFF-Dateien (siehe oben). |
String |
|
ExtractImagesCallback (ab Version 1.17.0) |
Adresse der Callback-Funktion, die von der CIB pdf toolbox beim Parsen des PDF-Dokuments jedesmal beim Extrahieren eines Bild-Objektes aufgerufen wird.
|
String |
|
ExtractImagesUserdata (ab Version 1.17.0) |
Adresse des Speicherbereiches, in dem die extrahierten Bilddaten und ihr Hash-Wert übergeben werden. |
String |
|
OutputFormat (ab Version 1.14.0) |
FormatImage Bei diesem Ausgabeformat erzeugt die CIB pdf toolbox bei einem Rendering-Vorgang mehrere Ausgabe-Grafikformate. Dabei muss es sich um Raster-Grafikformate handeln. Erforderlich ist: Welche Grafikformate erstellt werden sollen, wird über die Property „ImageType“ definiert. |
String |
|
OutputFormat (ab Version 1.14.0) |
FormatSvg Die CIB pdf toolbox gibt eine Grafikdatei im SVG-Format aus (Scalable Vector Graphics=skalierbare Vektorgrafik). Name der erzeugten Ausgabe: Erforderlich ist: |
String |
|
OutputFilename |
Name der Ausgabedatei, mit der entsprechenden Extension. PNG und JPEG: Pro Seite im PDF wird eine Datei ausgegeben. Der Name wird durch Anhängen einer laufenden Nummer eindeutig gemacht. |
String |
|
InputFilename |
Name des Eingabe-PDFs Es können auch mehrere PDFs, getrennt durch Semikolon, eingegeben werden. |
String |
|
AbortDocCallback (ab Version 1.10.0) |
Adresse der Callback-Funktion für Ausgabedokument per Speicherübergabe.
|
String |
|
AbortDocCallbackPointer (ab Version 1.10.0) |
Benutzerdaten des Callbacks für Rückmeldung nach jeder Seite |
String |
|
EventNotifier (ab Version 1.24.0) |
Der Pointer zu der Instanz der Callback-Klasse CibPdfEventNotifier wird dieser Property zugeordnet. Damit kann die Ausgabe von RGB565-Daten in den Speicher ermöglicht werden. Erforderlich für diese Funktionalität ist OutputFormat=FormatBmp und RenderingEngine=CIBRenderer |
String |
|
ImageAlign (ab Version 1.8.6c) |
Über die Property kann die Ausrichtung von Grafiken im PDF verbessert werden, wenn die Grafiken aneinander-hängen und nicht gedreht sind. Bedingung: 0 Optimierung ist ausgeschaltet 1 Optimierung wird durchgeführt (default) |
String |
|
ImageScaling (ab Version 1.9.7)
(ab Version 1.14.0) |
Über die Property kann die maximale Größe der Grafik spezifiziert werden. Gültige Werte:
Achtung: Beispiele: ImageScaling=100px;200px ImageScaling=;200px ImageScaling=200px ImageScaling=100dpi oder ImageScaling=100 Erweiterung für den Einsatz der Property „ImageType“: Bei Erzeugung mehrerer Grafikformate in einem Rendering-Vorgang können hier Grafikproportionen für jedes erzeugte Grafikformat spezifiziert werden. Die Werte sind in der gleichen Reihenfolge aufgelistet, wie die Grafikformate in der Property
„ImageType“ definiert wurden. Zur besseren Lesbarkeit können die Wertepaare mit geschweiften Klammern gruppiert werden. Beispiele: ImageType=“png;tiff;bmp“ ImageType=“jpg;bmp“ |
String |
|
ImageType (ab Version 1.14.0) |
Über diese Property kann angegeben werden, welche Grafikformate die CIB pdf toolbox in einem Rendering-Vorgang erzeugen soll. Derzeit sind hier nur Raster-Imageformate möglich. Erforderlich ist OutputFormat= FormatImage und RenderingEngine=“CIBRenderer“ Mögliche Werte
sind: Beispiel: Name der erzeugten Grafikdateien: Um für die diversen Ausgabeformate einer Grafikdatei eindeutige Dateinamen zu erreichen, wird von der CIB pdf toolbox der Dateiname folgendermaßen aufgebaut: Beispiel: OutputFormat=“FormatImage“ Ergibt die folgenden Dateien: Hinweis: |
String |
|
Threads (ab Version 1.15.0) |
Über diese Property kann beim Renderingvorgang die Konvertierung in mehrere Grafikformate und das anschließende Schreiben der Dateien parallelisiert werden, was zu einer besseren Performance führt. Erforderlich sind die Properties ImageType und RenderingEngine=“CIBRenderer“ Mögliche Werte: N Für die Erstellung der Grafikdateien werden maximal N Threads verwendet. 0 Keine Verwendung von Threads |
String |
|
TiffResolution |
Auflösung der Grafik-Ausgabe. |
String |
|
TiffStripSize |
StripSize als Vielfaches von 8kB. 0 für keine, Default ist 4, also 32kB-Strips |
String |
|
TiffJpegQuality |
Nur bei TIFF: Jpeg-Komprimierungsfaktor, Default ist 75% |
String |
|
TiffSinglePage |
Nur bei TIFF: Es kann pro PDF-Seite eine TIFF-Datei erzeugt werden. 0 Pro PDF eine TIFF-Datei (default) 1 Pro PDF-Seite eine TIFF-Datei |
String |
|
TiffColorDepth |
Optionen für die Farbtiefe Nur bei JPG und PNG: 2Colors 256Colors 256Grayscale TrueColor (24Bit, Default) Nur bei BMP: HighColor |
String |
|
WebviewOutputConfiguration (ab CIB pdf toolbox Version 1.10.0)
ab CIB pdf toolbox Version 1.17.0)
|
Mit dieser Property kann die generierte Ausgabe für den CIB doxiView konfiguriert werden, sodass nur ein Ausgabeformat, statt standardmäßig Png und Metafile, erfolgt. Mögliche Werte: „Image“: „Metafile“: „MetafileAsSingleFile“: „MetafileNoPageContent“: „MetafileNoOutlines“: Die Werte „MetafileNoOutlines“, MetafileNoPageContent“ und „MetafileAsSingleFile“ können kumulativ verwendet werden. Sie sind nur dann gültig, wenn „WebviewOutputConfiguration“ so eingestellt ist, dass nur Metafiles erzeugt werden. Bei der Erzeugung von Bildern muss immer das gesamte PDF Dokument verarbeitet werden.
Beispiele: Standardwert = „Image;Metafile“ Ab CIB pdf toolbox 1.20: Zusätzlich kann die Option „ImageSkipAnnotations“ verwendet werden, um festzulegen dass für das CIB doXiview Rendering bestimmte Typen von Annotationen nicht in die Ausgabebilder gerendert werden. Die Option „ImageSkipAnnotations“ hat dabei keine Auswirkungen auf die Ausgabe in ein Metafile. Beispiel: WebviewOutputConfiguration=“Image;ImageSkipAnnotations:[Redact,Line];Metafile“ Es sind folgende Werte für Annotationstypen möglich: “Text”, “Link”, “FreeText”, “Line”, “Square”, “Circle”, “Polygon”, “PolyLine”, “Highlight”, “Underline”, “Squiggly”, “StrikeOut”, “Stamp”, “Caret”, “Ink”, “Popup”, “FileAttachment”, “Sound”, “Movie”, “Widget”, “Screen”, “PrinterMark”, “TrapNet”, “Watermark”, “3D”, “Redact”.
“MetafileWithGlyph” :
|
String |
|
SkipFormfieldContent (ab CIB pdf toolbox Version 1.16.0)
|
Ermöglicht es, bei der Anzeige den Inhalt von Formularelementen (Textfelder, Checkboxen, Listenfelder) auszublenden. Mögliche Werte: 0: Formularinhalte werden angezeigt 1: Formularinhalte werden nicht angezeigt In Verbindung mit OutputFormat=FormatWebview zu verwenden. |
|
Spezielle Properties für das ZUGFeRD-Datenmodell
(ab CIB pdf toolbox Version 1.9.0)
Das „Forum elektronische Rechnung Deutschland“ (FeRD) ist die nationale Plattform von Ministerien, Verbänden und Unternehmen zur Förderung der elektronischen Rechnung in Deutschland. ZUGFeRD ist die Abkürzung für „Zentraler User Guide des Forums elektronische Rechnung Deutschland“.
Jede auf dem ZUGFeRD-Datenmodell basierende Rechnung muss eine vollständige, gültige Rechnung sein (sowohl die PDF- als auch die XML-Darstellung). Die XML-Datei wird stets mit dem Namen „ZUGFeRD-invoice.xml“ eingebettet.
Die Eingabedatei muss bei der Einbettung entweder im PDF/A3 Standard vorliegen oder es muss beim CIB pdf toolbox-Join eine Konvertierung in diesen Standard durchgeführt werden.
Property |
Funktionalität |
Typ |
ZUGFeRDXml |
Angabe einer ZUGFeRD kompatiblen XML-Datei, die dann ZUGFeRD-kompatibel in das PDF eingebettet wird. Bei OutputFormat=FormatInfo wird die Property ZUGFeRDXml mit dem Namen des Zugferd XMLs belegt, falls im Eingabe-PDF bereits eines eingebettet ist. |
String |
ZUGFeRDSchema |
Angabe einer Schema-Datei, gegen die die ZUGFeRD-XML-Datei beim Importieren oder Extrahieren überprüft werden kann. |
String |
ZUGFeRDDoCheck |
Eingabe, ob beim Extrahieren oder Importieren einer ZUGFeRD XML Datei ein Schema-Check durchgeführt werden soll. Mögliche Werte: Ist in Property ZUGFeRDSchema keine Schema Datei angegeben, wird für den Schema-Check die in der ZUGFeRD-XML-Datei enthaltene Schema Datei verwendet. Wenn die Schema-Überprüfung fehlschlägt, wird ein Error 355 ausgegeben. |
String |
ZUGFeRDDescription |
In dieser Property kann eine Beschreibung der ZUGFeRD-XML-Datei hinterlegt werden. Diese Beschreibung wird bei Einbetten der XML-Datei mit in das PDF übernommen. Eingabe: Beliebiger Text |
String |
Über die Property „ExtractEmbeddedFile=zugferd“ kann die ZUGFeRD-XML-Datei in einem normalen CIB pdf toolbox-Join extrahiert werden.
Schwärzen Funktionalität
Mit Hilfe des „Schwärzen“ Funktionalität kann man die angegebenen Bereiche entfernen. Sie sind in der entstehenden PDF Ausgabe nicht mehr enthalten.
Bezeichnung |
Wert |
Auswirkung |
ApplyRedactAnnotations
|
= 0 (default)
= 1 Schwärzung wird durchgeführt |
Bei gesetzter Property schwärzt die CIB pdf toolbox die in den Annotations angegebenen Bereiche.
Redaction (Schwärzen) geschieht in folgenden Schritten: 1. XFDF-Datei wird mit den Redaction-Annotations erstellt.
2.
CIB pdf toolbox importiert diese Annotations ins PDF-Dokument über „AnnotationsFilename=abc.xfdf“
Beispiel zu XFDF-Datei <?xml version="1.0" encoding="utf-8"?> <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve"> <annots> <redact page="0" rect="66.0,474.0,152.0,393.0" interior-color="#000000"> </annots> </xfdf>
Hinweis: -> Die Seitennummern werden in zerobased angegeben. -> Die gewünschten Koordinaten setzt man mit der Vorgabe eines Rechtecks(rectangle) rect="66.0,474.0,152.0,393.0" -> wobei als Einheit PDF Koordinaten verwendet werden (1 cm entspricht 28,333... PDF Koordinaten). Das Rectangle wird angegeben als x,y linke untere Ecke und x,y rechte obere Ecke. Der Ursprung (Koordinate 0,0) der Seite befindet sich links unten. |
14.3. CIB pdfmodule
AllgemeinBeispiel für Jobsteps zur Ansteuerung der CIB pdfModule
Allgemein
(ab CIB pdf toolbox Version 1.20.0, CIB pdfModule Version 1.3.0)
Bei dem CIB pdfModule handelt es sich um die Neuentwicklung eines PDF-Moduls, der im Vergleich zur CIB pdf toolbox ein wesentlich verbessertes Laufzeitverhalten (im Durchschnitt unter 2% der Laufzeit von CIB pdf toolbox) und einen wesentlich reduzierten Speicherverbrauch besitzt.
Die Größe der Ausgabedateien kann wesentlich reduziert werden und auch ein Zusammenführen von mehreren 1000 PDF Dateien ist kein Problem.
In Zukunft werden alle größeren neuen Features in diesem Modul entwickelt.
Die Ansteuerung des CIB pdfModules kann über das Interface der CIB pdf toolbox erfolgen, wobei aber die Binaries des CIB pdfModules erforderlich sind. Zur Nutzung dieses Moduls muss man die Properties zusätzlich zur API=2 nutzen. Diese sind im Technischen Leitfaden des CIB pdfModule beschrieben.
Es besteht außerdem die Möglichkeit, CIB pdfModule eigenständig ohne die Ansteuerung mittels der CIB pdf toolbox zu nutzen. Auch dies wird im Technischen Leitfaden des CIB pdfModule beschrieben.
Property |
Funktionalität |
Typ |
API
|
Über diese Property kann gesteuert werden, ob die Bibliothek des CIB pdfModules geladen wird.
1 Default: Die CIB pdf toolbox führt den Job aus.
2 Die
CIB pdf toolbox wird zum Wrapper für das neue CIB pdfModule. Das bedeutet,
dass die CIB pdf toolbox die Aufgabe nicht selbst ausführt, sondern die Bibliothek
des CIB pdfModules geladen wird und diese die Ausführung übernimmt. |
String |
Beispiel für Jobsteps zur Ansteuerung der CIB pdfModule
Join von 2 PDF-Dokumenten, Ausgabe eines kompimierten PDFs im PDF/A-Format……..
<job expected-result-code=”0” id=”” name=”TestJob” timeout=”0”>
<properties>
<property name=”OutputMode”>XML</property>
</properties>
<outputs/>
<steps>
<step command=”pdfjoin” expected-result-code=”0” name=”join” timeout=”0”>
<properties>
<property name=”InputFilename”>input1.pdf;input2.pdf</property>
<property name=”LicenseCompany”>testlizenz</property>
<property name=”LicenseKey”>dddd-3333-9999aaaa</property>
<property name=”API”>2</property>
<property name=”WritingMode”>XrefStream</property>
<property name=”MergePdfAConform”>1</property>
<property name=”GenericFormfieldNamePrefix”>1</property>
<property name=”RegenerateFormFieldAppearences”>1</property>
<property name=”DetectDuplicateStreams”>1</property>
</properties>
</step>
<step command=”save” expected-result-code=”0” name=”save” timeout=”0”>
<properties>
<property name=”OutputFilename”>./out.pdf</property>
</properties>
</step>
</steps>
</job>
………
15. Briefpapierfunktion, Overlay von Texten, Grafiken und Barcodes
Dieser Abschnitt gibt eine Einführung in die Briefpapier- und Overlay-Funktionalität der CIB pdf toolbox. Mithilfe der Briefpapierfunktion ist es möglich, PDF-Dokumente mit anderen PDF-Dokumenten zu hinterlegen. Die Overlay-Funktion ermöglicht es, verschiedene Grafiken und Texte an beliebiger Stelle in PDF-Dokumenten zu positionieren.
15.1. Briefpapierfunktion
Allgemein
Zusätzlich geltende Anweisungen
Beispiele
Anmerkungen zu Seiten in verschiedenen Formaten
Beispiele mit verschiedenen Formaten
Allgemein
Durch Angabe der Eigenschaft „BackgroundFilename“ beim PdfJoin wird das Ergebnisdokument des Joins mit den in dieser Property spezifizierten PDF-Dateien hinterlegt. Hierbei sind verschiedene Angaben möglich, um das Hintergrunddokument auf die Seiten des Hauptdokuments beliebig zu verteilen.
Über die Property „BackgroundFilenameAsForeground” kann veranlasst werden, dass das Ergebnis-Dokument nicht hinterlegt wird, sondern die hier spezifizierte Datei in den Vordergrund gesetzt wird.
BackgroundFilenameAsForeground:
Mögliche Werte:
0 Dokument liegt im Hintergrund
(default)
1 Dokument liegt im Vordergrund
Die Property „BackgroundFilename“ wird wie folgt belegt:
BackgroundFilename=“{Seitenzahl(en)};FileName;{Seitenzahl(en)};FileName;...“
Bezeichnung |
Wert |
Wirkung |
BackgroundFilename |
||
Seitenzahl(en) |
keine Angabe oder “All” |
Auf allen Seiten verteilen |
“Odd” |
Auf ungeraden Seiten verteilen |
|
“Even” |
Auf geraden Seiten verteilen |
|
“First” |
Nur auf der ersten Seite |
|
“Last” |
Nur auf der letzten Seite |
|
“NoFirst” |
Alle Seiten bis auf die erste |
|
“NoLast” |
Alle Seiten bis auf der letzte |
|
Zahl |
Nur auf Seite Zahl |
|
Zahl1-Zahl2 |
Von Seite Zahl1 bis Zahl2 |
|
Zahl1-Zahl2,Zahl3, ...,ZahlN-ZahlM |
Auf mehreren Seiten oder Seitenbereichen verteilen (Komma als Trennzeichen) |
|
FileName |
Pfad zur Datei |
Die Seiten dieser Datei werden hinterlegt |
BackgroundAdjustment (ab Version 1.16.1)
|
AllExactMatches FirstExactMatch BestMatch |
|
Die Seitenangaben besitzen unterschiedliche Prioritäten, so dass niedrigere Prioritäten von höheren überschrieben werden können. Die Prioritäten sind wie folgt verteilt:
Priorität keine: All, Odd, Even, NoLast, NoFirst
Priorität DIRECT: Last, First, Zahl
Priorität RANGE: Zahl1 – Zahl2
Dabei gilt folgende Rangfolge: Keine Priorität < RANGE < DIRECT
Besitzen zwei Angaben gleiche Priorität, so gelten beide, ansonsten gilt die mit der höheren Priorität und niedriger priorisierte Angabe wird nicht angewendet.
Soll eine Seite eines Hintergrunddokuments durch mehrere Seitenangaben auf verschiedenen Seiten verteilt werden, sind diese durch Kommata zu trennen. Beispielsweise bedeutet First,Last, dass die Seite hinter die erste und letzte Seite des Eingabedokuments gelegt werden soll.
Ein Hintergrunddokument kann aus mehreren Seiten bestehen. In diesem Fall, können pro Datei mehrere Seitenangaben, durch Semikolon getrennt, gemacht werden (z.B. {First,Last;Even} So wird die erste Seite des Briefpapiers auf der ersten und letzten Seite des Hauptdokuments hinterlegt und die zweite Seite auf allen restlichen geraden Seiten). Die erste Angabe bezieht sich somit auf die erste Seite des Hintergrunddokuments, die zweite Angabe auf die zweite Seite usw. Zu beachten ist, dass die Seitenangaben in geschweifte Klammern zu setzen sind, sobald sie sich auf mehrere Seiten beziehen. Dies ermöglicht eine große Flexibilität in der Angabe auf welchen Seiten des Hauptdokuments, welche Seite der Hintergrunddokumente hinterlegt werden soll. In der Property „BackgroundFilename“ lassen sich auch mehrere Briefpapier-Anweisungen hintereinander angeben.
Zusätzlich geltende Anweisungen
Um auszudrücken, dass bestimmte Anweisungen zusätzlich gelten sollen, sind die Angaben durch geschweifte Klammern zu trennen.
Alles, was innerhalb der geschweiften Klammern steht ist durch oben genannte Prioritäten geregelt, zwischen den geschweiften Klammern gilt jedoch keine Priorisierung.
Soll eine Seite des Briefpapiers nicht verwendet werden, ist einfach eine 0 anzugeben.
{1;0;2} bedeutet also, dass die erste Seite hinter die erste Seite das Hauptdokuments gelegt wird, die 2. Seite hinter keine und die 3. Seite hinter die 2. Seite.
Folgende Beispiele sollen die Anwendung der Briefpapier-Funktionalität veranschaulichen:
Beispiele
Die Beispiele zeigen mögliche Aufrufe über die CIB runshell.
Die Kommandozeile der Beispiele liest sich wie folgt:
1. Property Backgroundfilename setzen
2. Runshellkommando PDF-Join = cibrsh.exe –fj
3. input output
A.
cibrsh.exe BackgroundFilename=“{First;All};backgrounds.pdf“
–fj inhalt.pdf output.pdf
Hier wird die erste Seite von backgrounds.pdf hinter die erste Seite von
inhalt.pdf gelegt, und die zweite Seite von backgrounds.pdf hinter die
restlichen Seiten von inhalt.pdf. Das Ergebnis wird in output.pdf gespeichert.
B.
cibrsh.exe BackgroundFilename=“First;firstbackground.pdf;All;normalbackground.pdf“
–fj inhalt.pdf output.pdf
Hier wird die erste Seite von firstbackground.pdf hinter die erste Seite von
inhalt.pdf gelegt, und die erste Seite von normalbackground.pdf hinter die
restlichen Seiten. B. macht das gleiche wie A., nur dass die zwei Seiten des
Hintergunds nun auf zwei Dateien verteilt sind.
C.
cibrsh.exe BackgroundFilename=“{Odd;Even};background.pdf;1-2;mainbackground.pdf“
–fj inhalt.pdf output.pdf
Hier wird die erste Seite von mainbackground.pdf hinter die erste und zweite
Seite von inhalt.pdf (wegen höherer Priorität von „1-2“ gegenüber „Odd“ und
„Even“) gelegt, die erste Seite von background.pdf hinter alle restlichen
ungeraden Seiten von inhalt.pdf und die zweite Seite von background.pdf hinter
alle restlichen geraden Seiten von inhalt.pdf.
D.
cibrsh.exe BackgroundFilename=“{1;2;3;4;5;6;7;8};background_8Seiten.pdf“
–fj inhalt.pdf output.pdf
Hier wird die erste Seite von background_8Seiten.pdf hinter die erste von
inhalt.pdf, die zweite hinter die zweite, die dritte hinter die dritte usw.
gelegt.
E.
cibrsh.exe BackgroundFilename=“{First;All};backgrounds.pdf“
–fj inhalt1.pdf;inhalt2.pdf;inhalt3.pdf output.pdf
Hier wird zunächst ein regulärer Join der drei Eingabedokumente (inhalt1.pdf …
inhalt3.pdf) durchgeführt und anschließend das Briefpapier wie unter A.
beschrieben hinterlegt.
Anmerkungen zu Seiten in verschiedenen Formaten
Eine Seite kann nur dann mit einer anderen Seite hinterlegt werden, wenn die Höhen und Breiten bis auf eine Toleranz von 3 pt gleich sind. Das bedeutet, dass die zu hinterlegende Seite höchstens 3 pt (entspricht 0,35 mm) höher oder breiter sein darf als die andere.
Zwei Seiten können nur miteinander vermischt werden, wenn ihre Höhen und Breiten (bis auf eine Toleranz von 3 pt) gleich sind. Wenn kein Briefpapier passt, wird eine Warnung im Trace ausgegeben aber kein Programmabbruch erzeugt.
Ab Version 1.16.1 der CIB pdf toolbox kann die Auswahl
der Hintergrundseite über die Property BackgroundAdjustment gesteuert werden:
Auswahl der ersten genau passenden Hintergrundseite oder Auswahl der am besten
passenden Hintergrundseite.
Wir eine dieser beiden Möglichkeiten gesetzt und das Hinterlegen scheitert,
erfolgt ein Programmabbruch mit Ausgabe einer Fehlermeldung (366). (
Möchte man ein Dokument, das gemischt aus Querformat-Seiten und Hochformat-Seiten besteht, mit einem Hintergrund unterlegen, ist dies möglich, wenn im Hintergrunddokument für beide Formate entsprechende Seiten enthalten sind.
Die Seiten für die unterschiedlichen Formate dürfen jedoch nicht auf mehrere Dateien verteilt sein.
Beispiele mit verschiedenen Formaten
cibrsh.exe BackgroundFilename=“{All;All};backgrounds.pdf“ –fj WechselndeFormate.pdf output.pdf
Die erste Seite von backgrounds.pdf ist eine Seite im Querformat, die zweite Seite eine Seite im Hochformat. Die Eingabedatei besteht sowohl aus Querformat-Seiten, als auch aus Hochformat-Seiten.Hier werden nun alle Seiten im Querformat mit der ersten Seite von backgrounds.pdf hinterlegt und alle Hochformat-Seiten mit der zweiten Seite von backgrounds.pdf
Natürlich kann man auch hier verschiedene Seitenangaben machen, wie etwa BackgroundFilename=“{Odd;Even;Odd;Even};backgrounds.pdf“
Hier besteht die Datei backgrounds.pdf aus 4 Seiten, die ersten beiden im Querformat, von denen die erste auf allen ungeraden Querformat-Seiten hinterlegt wird und die zweite auf allen geraden Querformat-Seiten. Die dritte und vierte Seite haben Hochformat und sind entsprechend auf ungeraden, bzw. geraden Hochformat-Seiten zu verteilen.
15.2. Overlayfunktion
AllgemeinText
Grafik
Barcode
Releaseplan
Allgemein
Die Overlayfunktion für die CIB pdf toolbox ermöglicht das Einfügen von Grafiken und Text an beliebigen Positionen in PDF-Dateien. Im Folgenden wird der gesamte Funktionsumfang genauer spezifiziert.
Durch Angabe der Property „Overlay“ beim Aufruf von PDF-Join, können Anweisungen für die Overlay-Funktion festgelegt werden. Die Property „Overlay“ enthält folgende Informationen:
- eine Ebenen- und Positionsangabe mit optionaler Größenangabe. Bei Grafiken ist es möglich deren Höhe und Breite anzugeben, bei Texten entfällt diese Angabe.
- eine Fontangabe (bei Texten) mit optionaler Rotation.
- eine Seitenauswahl mit und ohne Prioritäten
- zusätzliche Daten, alternativ bestehend aus:
- einem Dateinamen
- einem Textstring, der optional mittendrin {PAGE}, {NUMPAGES} oder {DATE} enthalten kann.
- einer Barcode-Angabe, beginnend mit „BARCODE:“
<Overlay>:= <TextOverlay>*;<GrafikOverlay>*;<BarcodeOverlay>*
<TextOverlay>:=
POS:Ebene|X-Position;Y-Position;Seitenangaben;FONT:Font;Font-Size;Font-Style;Font-Color;[Orientierung] ( ab Toolbox 1.2.56);Text
<GrafikOverlay>:= (ab Toolbox 1.2.56) :=
POS:Ebene|X-Position,Breite;Y-Position,Höhe;Seitenangaben;Grafik
<BarcodeOverlay>:= (ab Toolbox 1.4.84):=
POS:Ebene;X-Position;Y-Position;Seitenangaben;BARCODE:Typ;Wert;Orientierung;Breite;Höhe;Prüfziffer
Diese Property-Angaben werden im Folgenden näher spezifiziertText
Die in der Property„Overlay“ spezifizierten Texte werden an gewünschter Stelle im Ergebnisdokument des Joins platziert.
Die Prioritäten sind hier genauso geregelt, wie im Abschnitt Briefpapier beschrieben.
Das Keyword POS: kennzeichnet den Positionsteil der Angabe und das Keyword FONT: den Teil, der die Schriftinformationen enthält.
Bezeichnung |
Wert |
Wirkung |
Ebene |
Negative Zahl |
Anordnung hinter allen Elementen, die sich bereits im Dokument befinden. Je kleiner die Zahl, desto weiter hinten wird der Text eingefügt. (Zur Anordnung mehrerer Texte im Hintergrund) |
Positive Zahl (einschließlich 0) |
0 bezeichnet den Text, der als erstes eingefügt wird. Je größer die Zahl, desto weiter vorn wird der Text eingefügt. Eine positive Zahl bedeutet, dass der entsprechende Text, vor allen Elementen angeordnet wird, die sich bereits im Dokument befinden. |
|
“Top” |
Ganz vorn. Wenn mehrere Texte durch „Top“ gekennzeichnet sind, werden sie in der Aufrufreihenfolge eingefügt, das heißt, der als letztes genannte Text kommt ganz vorne auf das Dokument. |
|
keine Angabe (Das Trennzeichen muss trotzdem angegeben werden.) |
Entspricht „-1“
Achtung: Als Trennzeichen sind „|“ oder „/“ möglich. |
|
X-Position |
„Center“ |
In horizontaler Richtung auf Seite zentrieren. |
0 oder keine Angabe |
Linker Rand |
|
Zahl > 0 |
Abstand von links in mm |
|
Y-Position |
„Center“ |
In vertikaler Richtung auf Seite zentrieren. |
0 oder keine Angabe |
Oberer Rand |
|
Zahl > 0 |
Abstand von oben in mm |
|
Font |
Helvetica Courier Times |
Hier kann die Schriftart angegeben werden. Möglich sind die Type1 Standard Fonts von Pdf. |
Font-Size |
Positive Zahl Auch halbe Schritte möglich
Alternativ ist durch die Angabe von <width>,<height> |
Schriftgröße in pt
Der Text wird proportional vergrößert bis er den kleineren Wert von Breite oder Höhe erreicht. Eventuelle Rotationen finden erst nach dem Skalieren statt. |
Font-Style |
bold |
Text wird fett gedruckt |
italic |
Text wird kursiv gedruckt |
|
Font-Color |
RGB-Code, Komponenten durch Punkte getrennt. (R.G.B) Beispiele 0.0.0 = schwarz 255.0.0 = rot 0.128.0 = grün 0.0.255 = blau Default: schwarz (das Trennzeichen „;“ muss trotzdem angegeben werden) |
Der Text wird in der angegebenen Farbe dargestellt. Die Farbanteile sind durch Punkte getrennt anzugeben. |
Orientierung (ab CIB pdf toolbox 1.2.56) |
Winkel > 0 |
Der Text wird um diesen Winkel im Uhrzeigersinn rotiert |
Seitenzahl(en) |
keine Angabe oder “All” |
Auf allen Seiten verteilen |
“Odd” |
Auf ungeraden Seiten verteilen |
|
“Even” |
Auf geraden Seiten verteilen |
|
“First” |
Nur auf der ersten Seite |
|
“Last” |
Nur auf der letzten Seite |
|
“NoFirst” |
Alle Seiten bis auf die erste |
|
“NoLast” |
Alle Seiten bis auf der letzte |
|
Zahl1-Zahl2 |
Von Seite Zahl1 bis Zahl2 |
|
Zahl1-Zahl2,Zahl3, ...,ZahlN-ZahlM |
Auf mehren Seiten oder Seitenbereichen verteilen (Komma als Trennzeichen) |
|
Text (zum jetzigen Zeitpunkt wird beliebiger Text und {PAGE},{DATE},{NUMPAGES} unterstützt (ohne Startnummer und Nummernart), ab CIB pdf toolbox 1.2.56)
|
Beliebiger Text (kann auch die folgenden Word-Felder enthalten) |
Der angegebene Text wird ins Dokument eingefügt. Wenn mehrere Word-Felder nacheinander eingegeben werden, sind sie durch mindestens ein Leerzeichen zu trennen. |
{PAGE \* startnummer \* nummernart} Für „nummernart“ sind folgende Werte möglich: Arabic = 1,2,3.... ArabicDash = -1-,-2-,-3-... alphabetic = a,b,c.... ALPHABETIC = A,B,C… roman = i,ii,iii…. ROMAN = I,II,III.... |
Fügt die aktuelle Seitenzahl ein, über die Optionen lassen sich Startnummer und Art der Nummerierung angeben. |
|
{NUMPAGES \*nummernart} |
Fügt die Anzahl der Seiten im Dokument ein. |
|
{DATE \@ dd.MM.yyyy hh:mm:ss} |
Fügt aktuelles Datum in gewünschtem Format ein. |
Die Seitenangaben besitzen unterschiedliche Prioritäten, so dass niedrigere Prioritäten von höheren überschrieben werden können. Die Prioritäten sind wie folgt verteilt:
Priorität keine: All, Odd, Even, NoLast, NoFirst
Priorität DIRECT: Last, First, Zahl
Priorität RANGE: Zahl1 – Zahl2
Dabei gilt folgende Rangfolge: Keine Priorität < RANGE < DIRECT
Besitzen zwei Angaben, die eine bestimmte Seite betreffen,, gleiche Priorität, so gelten beide, ansonsten gilt die mit der höheren Priorität und die niedriger priorisierte Angabe wird nicht angewendet.
Die Beispiele zeigen mögliche Aufrufe über die CIB runshell.
Die Kommandozeile der Beispiele liest sich wie folgt:
- Property Overlay
- Runshellkommando PDF-Join = cibrsh.exe –fj
- input output
- cibrsh.exe Overlay=“POS:-1|Center;20;All;FONT:Helvetica;12;bold;0.0.0;;Infoblatt” –fj inhalt.pdf output.pdf
Hier wird auf hinterster Ebene (-1), zentriert in horizontaler
Richtung (Center), 2 cm vom oberen Rand entfernt (20), in Schriftart Helvetica
und Schriftgröße 12, fettgedruckt, auf allen Seiten (All) des Dokuments
inhalt.pdf der Text „Infoblatt“ mit Schriftfarbe schwarz eingefügt. Das
Ergebnis wird in output.pdf zurückgeliefert.
- cibrsh.exe Overlay=“POS:Top|180;280;All;FONT:Helvetica;10;italic;255.0.0;;{PAGE}“–fj inhalt.pdf output.pdf
Hier wird auf vorderster Ebene (Top) 18 cm von links und 28 cm von oben in Schriftart Helvetica und Schriftgröße 10 kursiv auf jeder Seite des Dokuments input.pdf die aktuelle Seitennummer in Arabic mit Schriftfarbe rot eingefügt (1,2,3...). Das Ergebnis wird in output.pdf zurückgeliefert.
- cibrsh.exe Overlay=“
POS:2|20;20;First,Last;FONT:Helvetica;24;;0.0.255;;TextVorn;
POS:1|30;30;First,Last;FONT:Helvetica;24;;255.0.0;;TextMitte;
POS:0|40;40;First,Last;FONT:Helvetica;24;;0.128.0;;TextHinten;
“ –fj inhalt.pdf output.pdf
Hier wird zunächst 4cm links und rechts vom Rand entfernt, in Schriftart Helvetica und Schriftgröße 24 auf der ersten und der letzen Seite des Dokuments input.pdf der Text „TextHinten“ mit Schriftfarbe grün eingefügt. Davor (1) wird 3cm von beiden Rändern entfernt „TextMitte“ mit Schriftfarbe rot und wiederum davor (2) 2 cm vom Rand entfernt „TextVorn“ “ mit Schriftfarbe blau eingefügt. Dadurch lässt sich der Effekt erzielen, dass mehrere Texte versetzt übereinander geschrieben werden. Das Ergebnis wird in output.pdf zurückgeliefert.
Grafik
Diese Funktionalität wird ab Toolbox 1.2.56 unterstützt. Die bisher erlaubten Formate sind bmp, jpg, gif und png.
Die in der Property „Overlay“ spezifizierten Grafiken werden an gewünschter Stelle im Ergebnisdokument des Joins platziert.
Die Prioritäten sind hier genauso geregelt, wie im Abschnitt Briefpapier beschrieben.
Die Property „Overlay“ wird wie folgt belegt:
[POS:Ebene|X-Position,Breite;Y-Position,Höhe;]Seitenangaben;Grafik
Bezeichnung |
Wert |
Wirkung |
Ebene wie Text |
|
|
X-Position wie Text |
|
|
Breite |
“ScaleToPage” |
Auf Seitenbreite anpassen |
0 oder keine Angabe |
Original-Breite der Grafik(1 pixel=1 pt=1/72in) |
|
Zahl > 0 |
Breite der Grafik in mm |
|
Y-Position wie Text |
|
|
Höhe |
“ScaleToPage” |
Auf Seitenhöhe anpassen |
0 oder keine Angabe |
Original-Höhe der Grafik(1 pixel=1 pt=1/72in) |
|
Zahl > 0 |
Höhe der Grafik in mm |
|
Seitenzahl(en) wie Text |
|
|
Grafik |
Pfad zur Grafikdatei |
Die Grafik aus dieser Datei wird eingefügt |
(ab Version 1.4.83) MEMORYBLOCK: <Speicherblock-Delimiter>;<Speicherblöcke> <Speicherblöcke> ::= Speicherblock ::= |
Die Übergabe der Grafik kann auch im Speicher erfolgen. Dazu werden die Speicheradressen an die CIB pdf toolbox übergeben. Ein <Speicherblock-Delimiter> ist ein einzelnes Zeichen ungleich „;“, das möglichst nicht in einem Filenamen vorkommt, z.B. „#“, „?“. Adresse und Länge sind Dezimalzahlen. |
Anstelle eines Dateinamens kann angegeben werden, dass ein farbiges Rechteck, eine Linie oder eine Bezier-Kurve an der spezifizierten Stelle platziert werden soll. Der Dateiname muss dann wie folgt ersetzt werden:
RECT:Color[;Orientierung;Transparenz]
LINETO:Color;X2,Y2
BEZIERTO:Color;SX1,SY1,SX2,SY2,X2,Y2
Linien und Bezier-Kurven haben keine Breiten- und Höhenangabe. Sie können nicht über den Wert „Center“ für X- und Y-Position zentriert werden. Die Angabe dieses Wertes wird als „-1“ interpretiert.
Bezeichnung |
Wert |
Wirkung |
RECT: Color (ab CIB pdf toolbox 1.2.56) LINETO: Color BEZIERTO: Color (ab CIB pdf toolbox 1.4.75) |
RGB-Code, Komponenten durch Punkte getrennt. (R.G.B) Beispiele 0.0.0 = schwarz 255.0.0 = rot 0.128.0 = grün 0.0.255 = blau |
Das Rechteck bzw. die Linie oder Bezier-Kurve wird in der angegebenen Farbe dargestellt. Die Farbanteile sind durch Punkte getrennt anzugeben. |
Orientierung |
> 0 |
Rechteck wird um den angegebenenWinkel im Uhrzeigersinn gedreht. |
Transparenz |
> 0 |
Grad der Transparenz für das Rechteck Beispiel: 75 bedeutet, dass das Rechteck 75% transparent dargestellt wird. Eine Transparenz von 100% bedeutet, dass das Rechteck unsichtbar wird. |
X2 (X-Koordinate für den Endpunkt der Linie bzw. Bezier-Kurve) |
0 |
Linker Rand. |
|
Zahl > 0 |
Abstand von links in mm. |
Y2 (Y-Koordinate für den Endpunkt der Linie bzw. Bezier-Kurve) |
0 |
Oberer Rand. |
|
Zahl > 0 |
Abstand von oben in mm. |
SX1, SX2 (X-Koordinaten für den ersten und zweiten Stützpunkt der Bezier-Kurve) |
0 |
Linker Rand. |
|
Zahl > 0 |
Abstand von links in mm. |
SY1, SY2 (Y-Koordinaten für den ersten und zweiten Stützpunkt der Bezier-Kurve) |
0 |
Oberer Rand. |
|
Zahl > 0 |
Abstand von oben in mm. |
Die Beispiele zeigen mögliche Aufrufe über die CIB runshell.
Die Kommandozeile der Beispiele liest sich wie folgt:
- Property Overlay
- Runshellkommando PDF-Join = cibrsh.exe –fj
- input output
1) cibrsh.exe Overlay=“POS:-1|Center,100;Center,100;Odd;Grafik.jpg“ –fj inhalt.pdf output.pdf
Hier wird auf hinterster Ebene (-1), zentriert in X-Richtung und Y-Richtung (Center), auf allen ungeraden Seiten (Odd) des Dokuments inhalt.pdf das Bild Grafik.pdf eingefügt. Dieses wird auf die Maße 10x10 cm skaliert. Das Ergebnis wird in output.pdf zurückgeliefert.
2) cibrsh.exe Overlay=“POS:Top|20,0;Center,0;2-8;Grafik.jpg“ –fj inhalt.pdf output.pdf
Hier wird auf vorderster Ebene (Top) 2 cm von links und zentriert in Y-Richtung auf den Seiten 2-8 des Dokuments input.pdf das Bild Grafik.jpg in Originalgröße eingefügt. Das Ergebnis wird in output.pdf zurückgeliefert.
3) cibrsh.exe Overlay=“POS:Top|Center,ScaleToPage;Center,ScaleToPage;First;Grafik.jpg“ –fj inhalt.pdf output.pdf
Hier wird auf vorderster Ebene (Top) seitenzentriert sowohl in X- als auch in Y-Richtung, auf die erste Seite des Dokuments input.pdf das Bild Grafik.jpg eingefügt. Das Bild wird auf die Maße der Seite skaliert. Das Ergebnis wird in output.pdf zurückgeliefert.
4) cibrsh.exe Overlay=“POS: Top|180,10;280,10;All;RECT: 255.255.255;POS:Top|180;280;All;FONT:Helvetica;10;italic;0.0.0;;{PAGE}“ –fj inhalt.pdf output.pdf
Hier wird zunächst auf vorderster Ebene (Top) 18 cm von links und 28 cm von oben ein 1cm x 1cm großes weißes Rechteck eingefügt und dann in Schriftart Helvetica und Schriftgröße 10 kursiv auf jeder Seite des Dokuments input.pdf die aktuelle Seitennummer in Arabic an dieser Stelle eingefügt (1,2,3...). Das Ergebnis wird in output.pdf zurückgeliefert.
5) cibrsh.exe Overlay=“POS:Top|0;0;All;LINETO: 255.0.0;210,297;“ –fj inhalt.pdf output.pdf
Hier wird auf vorderster Ebene (Top) eine rote Linie vom linken oberen Rand (0,0) zum rechten unteren Rand (210,297) eingefügt. Das Ergebnis wird in output.pdf zurückgeliefert.
6) cibrsh.exe Overlay=“ POS:Top|0;150;All;BEZIERTO: 255.255.255;100,60,150,110,210,150“ –fj inhalt.pdf output.pdf
Hier wird auf vorderster Ebene (Top) eine rote Bezier-Kurve mit Anfangspunkt (0,150), Endpunkt (210,150) und den Stützpunkten (100,60) und (150,110) eingefügt. Das Ergebnis wird in output.pdf zurückgeliefert.
Barcode
(ab Release 1.4.84)
Die in der Property „Overlay“ spezifizierten Barcodes werden an gewünschter Stelle im Ergebnisdokument des Joins platziert.
Die Prioritäten sind hier genauso geregelt, wie im Abschnitt Briefpapier beschrieben.
Die Property „Overlay“ wird wie folgt belegt:
[POS:Ebene|X-Position;Y-Position;] Seitenangaben;BARCODE:Typ;Wert;Orientierung;Breite;Höhe;Prüfziffer;Codepage
QR [POS:Ebene|X-Position;Y-Position;] Seitenangaben;BARCODE:QR;Wert;Orientierung;Breite;Höhe;Größe;CodePage;KorrekturLevel
Bezeichnung |
Wert |
Wirkung |
Ebene wie Text |
|
|
X-Position wie Text |
|
|
Y-Position wie Text |
|
|
Seitenzahl(en) wie Text |
|
|
Typ |
Ein Barcodetyp aus der von CIB format unterstützten Menge von Typen: Code ITF Code 2/5 Industrie Code 2/5 Matrix Code 39 Code 39 erweitert Code 128 (A, B, C) EAN 8 EAN 13 EAN 128 DataMatrix PDF417 Code 93 Code 93 Extended OMR Strichcodes QR |
Diese Barcodetyp wird verwendet |
Wert |
Zahlen |
Der individuelle Wert, den der Barcode darstellen soll. |
Orientierung |
horizontalleft |
vertikale Striche nebeneinander, erstes Zeichen links |
horizontalright |
vertikale Striche nebeneinander, erstes Zeichen rechts |
|
verticalleft |
horizontale Striche untereinander, erstes Zeichen oben |
|
verticalright |
horizontale Striche übereinander, erstes Zeichen unten |
|
Breite |
Strichbreite in mm (x.xmm; oder x,xmm beides zulässig) |
Setzt die Strichbreite des Barcodes |
Höhe |
Höhe der Barcode-Balken in mm (x.xmm; oder x,xmm beides zulässig) |
Setzt die Höhe der Barcode-Balken |
Prüfziffer / KorrekturLevel
(ab Version 1.26.0) |
default |
Barcode wird mit Prüfziffer generiert |
nochecksum |
Barcode wird ohne Prüfziffer generiert |
|
Die Prüfziffer gibt es bei 2D-Barcodes (QR) nicht. Default ist daher immer nochecksum. Hier kann aber das Korrekturlevel (ECL) angegeben werden. Das Level geht von 0 (geringe Korrektur) bis 3 (maximale Korrektur = default). |
|
|
Codepage |
Gibt Codepage für QR Barcode-Daten an. Mögliche Werte:
|
Bemerkung: |
Größe (ab Version 1.26.0) |
QR-Code: Die Größe wurde bisher nicht benutzt. |
Die Größe des QR-Codes wird durch die Version bestimmt. Beispiel: |
Für die Belegung der Parameter nach „Wert“ wird auf entsprechende Dokumentationen bezüglich der Barcode-Realisierung im CIB format verwiesen. Welche Parameter mit welchem Wert belegt werden müssen, hängt stark vom Barcode-Typ ab.
Releaseplan
Die Overlayfunktion wird in mehreren Stufen realisiert. Die Realisierung der Funktionalität hat nach folgendem Stufenplan zu erfolgen:
- Angabe des Word-Seriendruck-Felds {PAGE} mit Default-Option Arabic, Möglichkeit, Schriftart, -größe, -farbe und die Position des Textes selbst festzulegen.
- Logos ohne Rotation
- beliebiger Text mit Rotation
- Unterstützung von anderen Feldern (wie {NUMPAGES} oder {DATE} mit Optionen an beliebigen Stellen im Text
- Unterstützung von Barcodes
Es muss geprüft werden, inwieweit die Ebenen-Funktion ausgenutzt oder unterstützt werden kann. Es ist zu beachten, dass diese nicht im PDF 1.3 enthalten ist und von älteren Viewern nicht unterstützt wird.
Ab Toolbox 1.2.56 wird Overlay von Text (inklusive Rotation), Grafik und Rechtecken unterstützt.
15.3. Implementierungshinweise
Im Folgenden wird auf Besonderheiten bei der Implementierung hingewiesen.
Overlayfunktion
Briefpapierfunktion
Allgemeiner Ablauf:
- Der String der Property BackgroundFilename wird geparst. Für jede angegebene Seite wird ein PropertyInfo-Objekt erzeugt und einem PointerArray hinzugefügt. Jede PropertyInfo enthält folgende Informationen:
- Ein Array mit PageSettings. Dieses enthält die Informationen, hinter welche Seite die Seite des Briefpapiers kommt. Der Index in diesem Array entspricht der Seite Hauptdokuments. Steht hier eine -1 drin, bedeutet das, dass die Seite nicht hinter die entsprechende Seite des Hauptdokuments kommt. Alle anderen Angaben bedeuten, dass sie dahinter kommt.
- Einen Index (sagt aus um die wievielte Seite des Briefpapier-Dokuments es sich handelt)
- Einen Filename (zugehörige Briefpapier-Datei)
- Das Parsen läuft folgendermaßen ab:
- Die durch geschweifte Klammern getrennten Angaben (wenn es mehrere sind) werden zerlegt (Trenner= „}{„)
- Positionsdaten werden ausgelesen und abgelegt
- Die Seitenangaben (die optional in geschweiften Klammern stehen), die durch „;“ getrennt mehrere Seiten des Briefpapiers angeben können, werden aufgesplittet.
- Der Dateiname wird ermittelt
- Die Seitenangaben werden verwendet um das Array der PageSettings zu belegen.
- Die Angaben innerhalb einer geschweiften Klammer sind durch Prios geregelt.
- In die einzelnen PageSettings der InfoObjekte werden zunächst je nach Prio die Zahlen 0,1,2 eingetragen (-1 default)
- Sind die Arrays der InfoObjekte einer Klammer belegt, müssen diese noch miteinander abgeglichen werden. Höhere Prios überschreiben die niedrigeren, so dass immer wenn in 2 PageSetting-Arrays die gleiche Position belegt ist, die höhere Zahl gewinnt und die Position der niedrigeren mit -1 belegt wird.
- Es wird zunächst ein normaler PdfJoin mit den Eingabedateien durchgeführt, anschließend werden die Backgrounddateien abgearbeitet. Hier werden die gleichen Prozeduren durchlaufen, wie beim normalen Join, nur dass anstelle der Methode, die einen neuen PageTree aufbaut, eine Methode aufgerufen wird, die die Inhalte mischt.
- In dieser Methode werden die Property-Infos durchlaufen und überprüft, ob aufgrund der Pagesettings die Seite hinterlegt werden soll oder nicht.
- Wurde die richtige BackgroundPage gefunden, wird ein neues Xobject aus der Hintergrundseite erzeugt:
- Über GetContentstreamAsString() wird der Inhalt der Seite geholt und ein neues Dictionary erzeugt.
- Daraus wird ein neuer Stream erzeugt und als neues Objekt in das Hauptdokument eingefügt.
- Dieses Objekt wird zu einem Form Xobject verwandelt, indem in dessen Dictionary die entsprechenden Einträge gesetzt werden:
- Type /XObject
- Subtype /Form
- BBox entspricht der MediaBox der Seite
- Name muss ein Name sein, der das Objekt eindeutig innerhalb der Seite identifiziert, deshalb muss überprüft werden, ob der Name bereits vorhanden ist und evtl ein anderer vergeben werden
- Das Resources-Dictionary entspricht dem der Hintergrundseite
- Nun muss noch ein neues ContentStream-Objekt erzeugt werden, das auf das neues XObject referenziert und dem Dokument hinzugefügt werden: q XObjectName Do Q
- Die Referenz auf dieses Objekt wird dann noch in das ContentArray der Hauptseite hinzugefügt (vorne dran, damit es im Hintergrund ist)
- Die Xobjects werden in einem Array verwaltet, damit für jede Hintergrundseite nur eines erzeugt wird, und wenn es wieder gebraucht wird, aus dem Array geholt werden kann.
- Die Annotations der beiden Seiten werden gemischt, indem die Referenzen auf Annotations der Hintergrundseite dem Annotations-Array der Hauptseite hinzugefügt. Werden. Evtl. /P – Einträge werden entfernt.
Auch die AcroForms der zweiten Seite müssen zur ersten hinzu gemischt werden.
Overlayfunktion
Allgemeiner Ablauf:
- Der Inhalt der Property Overlay wird geparst. Bei fehlenden Positionsangaben werden die Default-Werte verwendet. Auch hier wird der gleiche Parser verwendet und PropertyInfo Objekte erzeugt.
- Diese Objekte enthalten Angaben zu Position, Breite/Höhe (Grafik), Dateiname (bzw. Text)
- Die erzeugten Informationen werden in einem Array von verwaltet. Nach dem Join wird das Hauptdokument mit den entsprechenden Overlay-Informationen gemischt.
- Hier wird für jede Seite des Hauptdokuments das PropertyInfo-Array nach Elementen durchsucht, deren PageSettings mit der aktuellen Seite vereinbar ist. Ist ein solches gefunden, muss entweder die entsprechende Grafik, oder der entsprechende Text in das Hauptdokument eingefügt werden.
- Für jede passende Angabe muss im Falle eines Textes wie folgt vorgegangen werden:
- Man holt sich über GetContentstreamAsString() den Inhalt der Seite, je nachdem, ob der Text vor oder hinter den Inhalt der Seite soll, muss ein neuer Contentstream aufgebaut werden, in dem der neue Teil entweder vor oder hinter den alten Teil gesetzt wird:
- q <alter contentstream> Q q <contentstream für einzufügenden text> Q“
- Der ContentStream für den einzufügenden Text muss wie folgt aussehen:
BT
/F13 12 Tf
288 720 Td
(ABC) Tj
ET
- BT kennzeichnet den Beginn, ET das Ende.
- /F13 ist der Name des Fonts der verwendet werden soll
- 12 die Schriftgröße
- 288 720 sind die Positionsdaten
- ABC der einzufügende Text
- Hier wird also auf einen Font mit Namen F13 verwiesen. Dieser muss im Resources-Dictionary der Seite referenziert werden:
/Resources
<< /Font << /F13 23 0 R >>
>>
23 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
- Daraus ergibt sich, dass für jeden Font, der in der Property Overlay angegeben wird, ein Font-Objekt wie oben beschrieben erzeugt werden muss.
- Auch hier muss darauf geachtet werden, dass die Namen innerhalb der Seite eindeutig sind.
- Ausführungen für Grafiken und Barcodes werden in Zukunft ergänzt.
16. CIB ocr
OCR (optical character recognition) wird verwendet, um Text aus Bilder zu Entziehen.
Es können mit der CIB pdf toolbox hierfür alle properties der CIB ocr deepER genutzt werden.
Die einzelnen Properties werden im Leitfaden CIB ocr beschrieben.
17. Prüfschablonen verwenden
Mit Prüfschablonen ist es möglich zu prüfen, ob eine PDF Seite Inhalt enthält, an welcher Stelle und ob der Inhalt an dieser Stelle erlaubt bzw. zwingend erforderlich oder aber unerwünscht ist.
Die zu setzenden, speziellen Properties werden im Folgenden näher beschrieben.
Propertybezeichnung |
Typ |
Funktionalität |
CheckMask (ab CIB pdf toolbox |
String |
Beschreibt den Aufbau der konkreten Prüfschablonen. Die einzelnen Komponenten werden im Weiteren genauer beschrieben. Aufbau: <Checkmasklist> ::= <Checkmask> | <Checkmask> „;“ <Checkmasklist> Es können mehrere Definitionen für Prüfschablonen aneinandergereiht werden. Sie werden durch Semikolon getrennt. Beispiel: CheckMask=“{{1,3-40}; {forbidden;2cm;2cm;5cm;4cm}}; {{2,5,6};{allowed;2cm;2cm;5cm;4cm};{mandatory;1cm;1cm;6cm;7cm}};“ |
<Checkmask>
|
String |
Beschreibung einer Schablone. Aufbau: Für die Seiten, für die eine Prüfschablone angewendet werden soll, werden die Schablonen-Bereiche beschrieben. Pro <Checkmask> können wahlweise „allowed“, „forbidden“ oder „mandatory“ Bereiche oder auch Kombinationen dieser Bereiche beschrieben werden. |
<mask area> |
|
Beschreibung des Prüfschablonen-Bereichs (Rechteck). Aufbau: Forbidden In diesem Rechteck darf kein Text stehen Allowed In diesem Rechteck darf Text stehen Mandatory In diesem Rechteck muss Text stehen
left;top Koordinaten des linken, oberen Eckpunktes des Rechteckes (siehe in Grafik der Punkt A) right;bottom Koordinaten des rechten, unteren Eckpunktes des Rechteckes (siehe in Grafik der Punkt B) ID Angabe eines Bezeichners(ID) der in den CheckMaskViolations mit ausgegeben wird Bezugspunkt für die Koordinaten ist die linke, obere Ecke der Seite. Durch Eingabe von negativen Werten kann der Bezugspunkt auf die rechte untere Ecke der Seite geändert werden. Unterstützt werden die Einheiten: mm, cm, in, ft; Default: mm |
<Pages> |
|
Angabe der Seiten oder Seitenbereiche, auf denen die folgende Prüfschablone angebracht werden soll.
Aufbau: First (nur erste Seite), NoFirst (nicht erste Seite), Last (nur letzte Seite), NoLast (nicht letzte Seite), Even (gerade Seiten) Odd (ungerade Seiten) All (alle Seiten) Wert (diese Seite) Wert1-Wert2 (diesem Seitenbereich) Wert1-Wert2[,]Wert3 (diesen Seiten/Seitenbereich)
|
CheckMaskViolations |
String |
Property liefert die Verletzungen der Prüfschablonen zurück. Es wird ausgegeben: Position der Checkmask, die verletzt wird (masks).
Beispiel: …{forbidden;50mm,50mm,150mm,100mm;myid1}. Violations={{content;49.31;52.84;61.66;50.08;};{masks;{50;50;150;100;myid1}}} Ausgabe im Trace: Beispiel: CheckMask: Content is placed on the forbidden area [forbidden;0mm;0mm;150cm;100mm;myid01]. |
CheckMaskThreshold |
String |
Ermöglicht das Einstellen einer Fehlertoleranz. Der Wert gibt an wieviele Pixel in einem „verbotenen“ Checkmaskbereich toleriert werden, ohne eine Verletzung auszulösen. Angegeben werden können Ganzzahlen: Default: 1 |
StopOnFirstCheckmaskViolation |
String |
Gibt an, ob bei der ersten auftretenden Verletzung abgebrochen werden soll. Die Verletzung wird in der Property CheckmaskViolations gespeichert. Mögliche Werte: 0: Es wird nicht abgebrochen (default) 1: Es wird abgebrochen |
StopAfterCheckmaskViolation |
String |
Prüft das gesamte Dokument und speichert alle Verletzungen in der Property und gibt eine Fehlermeldung zurück. Mögliche Werte: 0: Keine Fehlermeldung 1: Fehlermeldung und Speichern aller Verletzungen |
18. Schneller Einstieg
Dieses Kapitel zeigt Ihnen in einem Kurzüberblick eine mögliche Nutzung der CIB pdf toolbox aus einer Kundenapplikation. Die Beispiele nutzen keineswegs den vollen Funktionsumfang, sondern demonstrieren das grundsätzliche Prinzip beim Umgang mit der CIB pdf toolbox.
Für Ihren konkreten Anwendungsfall können Sie auch gerne beim CIB Support rückfragen.
Hinweis:
Zur schnellen Benutzung der CIB pdf toolbox über die CIB runshell aus der Kommandozeile, befinden sich im Übergabe-Paket fertige Beispiele. Die Aufrufe der CIB runshell sind in Batch-Dateien fertig vorgegeben.
18.1. Einbindung der CIB pdf toolbox als C++ Codebeispiel
AllgemeinStatisches Anbinden der CIB pdf toolbox
Beschreibung des Codebeispiels
Allgemein
Nachfolgendes Beispiel demonstriert die Ansteuerung der CIB pdf toolbox unter C++.
Die im Codebeispiel verwendeten Dateien sind auf die im Lieferumfang enthaltenen Beispiele abgestimmt, damit ist eine sofortige Funktionalität zu Testzwecken gewährleistet.
Die Übersetzung des Codebeispiels erfolgte in Microsoft Visual Studio C++ 6.0. Für diese Entwicklungsumgebung ist auch das Projektfile beigefügt.
Für eine Integration in das eigene Projekt ist zu beachten:
- Soll die Dll statisch oder dynamisch angezogen werden? Das Codebeispiel benutzt die statische Einbindung.
- Anbindung an die eigene Fehlerbehandlung. Das Codebeispiel enthält eine minimale textbasierte Fehlerausgabe. Der Umgang mit Fehlercodes wird hier demonstriert.
- Anbindung an die eigenen Dokumentanforderungen. Das Codebeispiel enthält hart codierte Dateinamen und dient nur zu Demonstrationszwecken. Die Verwaltung gilt es komplett den eigenen Anforderungen anzupassen
Hinweis:
Dieses Beispiel stellt einen funktionierenden Gesamtablauf dar. Zur Recherche einzelner Funktionen und deren mögliche Ausprägungen wird auf die Dokumentation, Hilfe und den CIB Support verwiesen.
Statisches Anbinden der CIB pdf toolbox
// CibPdfDll.cpp : Lädt die CIB pdf toolbox statisch aus einem gezielten Pfad
#include “stdafx.h”
#include <stdio.h>
#include <windows.h>
#include “CibPdfDll.h”
// Samplepdftoolbox.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//
#include “stdafx.h”
#include <stdio.h>
#include <windows.h>
#include “..\bin\cibpdf.h”
int main(int argc, char* argv[])
{
printf(„Durchfuehren des pdfmerge XML samples:\r\n\r\n“);
//Generiere für jeden Datensatz eine eigene Ausgabedatei (wahr)
BOOL t_bRet = CibPdfSetProperty(“MultiOutput”, “1”);
//Angabe des PdfMerge-Eingaberequest, etwa XML:data.xml;<xpath>
t_bRet &= CibPdfSetProperty(“Data”, “XML:..\\merge xml\\data.xml;//Testdaten//Person”);
//Angabe der Eingabedatei
t_bRet &= CibPdfSetProperty(„InputFilename“,“““..\\merge xml\\test.pdf“““);
//Angabe des Ausgabedateinamens
t_bRet &= CibPdfSetProperty(„OutputFilename“,“..\\tempoutput\\mergeXMLoutput.pdf“);
if(!t_bRet)
{
printf(„Fehler beim Setzen der Properties fuer CIB pdf merge\r\n\r\n“);
getchar();
return 0;
}
//Den merge-Lauf durchführen
t_bRet = CibPdfMerge();
if(t_bRet)
{
printf(„Status:\r\nCIB pdf merge erfolgreich in mergeXMLoutput.pdf durchgefuehrt\r\n“);
printf(„Zum weiteren Ablauf der Demo bitte [Return] druecken\r\n\r\n“);
getchar();
}
else
{
int t_FehlerNr;
if(!CibPdfGetLastError(&t_FehlerNr))
{
printf(„Fehler aufgetreten. Die Fehlernummer kann nicht ausgelesen werden“);
getchar();
return 0;
}
printf(„Fehler %d beim Durchfuehren von CIB pdf merge\r\n“, t_FehlerNr);
const int t_BufferLength = 1024;
char t_Fehlertext[t_BufferLength];
if( !CibPdfGetErrorText(t_FehlerNr, t_Fehlertext, t_BufferLength))
{
printf(„Fehler aufgetreten. Der Fehlertext kann nicht ausgelesen werden“);
getchar();
return 0;
}
printf(„Fehler: %s“, t_Fehlertext);
getchar();
return 0;
}
printf(„Durchfuehren des CIB pdfjoin samples:\r\n“);
//Von den 3 Eingabedateien ist die erste verschlüsselt. Daher ein Paßwort übergeben
t_bRet = CibPdfSetProperty(„EncryptOwnerPassword“, „test1o;;“);
//Die Ausgabedatei soll verschlüsselt werden (Userpasswort),
// d.h. es wird beim Öffnen vom Reader abgefragt)
t_bRet &= CibPdfSetProperty(“OutputUserPassword”, “outputu”);
//Angabe der 3 Eingabedateien
t_bRet &= CibPdfSetProperty(„InputFilename“,
„..\\join\\test1.pdf;..\\join\\funktionstest1.pdf;..\\join\\funktionstest2.pdf“);
//Angabe des Ausgabedateinamens
t_bRet &= CibPdfSetProperty(„OutputFilename“,“..\\tempoutput\\joinoutput.pdf“);
if(!t_bRet)
{
printf(„Fehler beim Setzen der Properties fuer CIB pdf join\r\n\r\n“);
getchar();
return 0;
}
//Den Join durchführen
t_bRet = CibPdfJoin();
if(t_bRet)
{
printf(„\r\nStatus:\r\nCIB pdf join erfolgreich in joinoutput.pdf durchgefuehrt\r\n“);
printf(„Zum weiteren Ablauf der Demo bitte [Return] druecken\r\n\r\n\r\n“);
getchar();
}
else
{
int t_FehlerNr;
if(!CibPdfGetLastError(&t_FehlerNr))
{
printf(„Fehler aufgetreten. Die Fehlernummer kann nicht ausgelesen werden“);
getchar();
return 0;
}
printf(„Fehler %d beim Durchfuehren von CIB pdf join\r\n“, t_FehlerNr);
const int t_BufferLength = 1024;
char t_Fehlertext[t_BufferLength];
if( !CibPdfGetErrorText(t_FehlerNr, t_Fehlertext, t_BufferLength))
{
printf(„Fehler aufgetreten. Der Fehlertext kann nicht ausgelesen werden“);
getchar();
return 0;
}
printf(„Fehler: %s“, t_Fehlertext);
getchar();
return 0;
}
printf(„Ende der Demo.\r\n“);
getchar();
return 0;
}
Beschreibung des Codebeispiels
Das Codebeispiel steuert als Erstes das im Übergabe-Paket hinterlegte Beispiel ‚merge xml’ an. Dabei werden die in der XML Datei ‚data.xml’ enthaltenen Daten in das Formular ‚test.pdf’ eingemischt. Für jeden enthaltenen Datensatz wird ein Ergebnisdokument mergeXMLoutput00001.pdf erzeugt. Wobei die angehängt Nummer pro Datensatz aufsteigt. Wird die Property ‚MultiOutput’ auf FALSE gesetzt, wird nur eine Ausgabedatei erzeugt und keine Nummer angehängt.
Im Anschluss wird das Beispiel ‚join’ angesteuert. Dabei werden die 3 Dateien ‚test1.pdf’, Funktionstest1.pdf’ und Funktionstest2.pdf aneinandergehängt. Für die verschlüsselte Eingabedatei test1.pdf wird das Passwort mit angegeben und die entstehende Ausgabedatei ‚ joinoutput.pdf’ wird ebenfalls mit einem Passwort verschlüsselt.
Die bei beiden Läufen entstehenden Ausgabedateien werden im Verzeichnis ‚ tempoutput’ abgelegt.
18.2. Einbindung der CIB pdf toolbox (PRINT) als VB Codebeispiel
Nachfolgendes Beispiel demonstriert die Ansteuerung der CIB pdf toolbox unter Visual Basic.
Das im Codebeispiel verwendete Test.pdf kann durch ein beliebiges PDF ersetzt werden.
Module Print ‚Der nachfolgende Programmcode zeigt den Druck über die CIB pdf toolbox als VB Codebeispiel. Ausgangssituation ist ein fertiges PDF-Dokument. ‚Fehlermeldungen und Fehlerentwicklungen werden hier nur eingeschränkt berücksichtigt. ‚Dieses Beispiel wurde mit Visual Studio 2008, Visual Basic .NET Framework 3.5 erstellt. ‚Deklaration der Methoden, die über die „CibPdf32.dll“ geöffnet werden und als Long ausgegeben werden Private Declare Function CibPdfJoin Lib “CibPdf32.dll” () As Integer Private Declare Function CibPdfSetProperty Lib “CibPdf32.dll” (ByVal a_PropName As String, ByVal a_pPropValue As String) As Integer Private Declare Function CibPdfGetProperty Lib “CibPdf32.dll” (ByVal a_PropName As String, ByVal a_pProbValue As String) As Integer Private Declare Function CibPdfShowPrintDialog Lib “CibPdf32.dll” (ByVal a_ButtonID As Integer) As Intege Private Declare Function CibPdfGetLastError Lib “CibPdf32.dll” (ByRef a_iError As Integer) As Integer Sub Main() ‚ Die Variable t_Return besitzt den Datentyp Long, hier werden die Rückgabewerte abgelegt Dim t_Return As Integer
‚1. Festlegen der notwendigen Properties ‚Das Eingabe-Dokument wird angegeben. Diese Datei wird gedruckt t_Return = CibPdfSetProperty(„InputFilename“, „C:\test.pdf“) ‚3. Optional einen Druckdialog einblenden, der dem Anwender Änderungen ermöglicht CibPdfShowPrintDialog(0) ‚Ausgabeformat festlegen. Über den Befehl „FormatPrinter“ wird das Dokument auf dem Drucker ausgegeben. t_Return = CibPdfSetProperty(“OutputFormat”, “FormatPrinter”) ‚2. Optional mögliche Funktionalitäten angeben (nur exemplarisch in diesem Besipiel) ‚Mit den Standardeinstellungen des Druckers wird der Duplex Druck vorgenommen. t_Return = CibPdfSetProperty(“DuplexPrint2”, “DuplexPrintLong”) ‚Der Drucker druckt die Seiten 1,2,3,4,5. t_Return = CibPdfSetProperty(„PageSelection“, „1-5“) ‚Es wird zusätzlich 1 Kopie ausgegeben t_Return = CibPdfSetProperty(“PrintCopies2”, “1”) ‘Ausgabe anstoßen t_Return = CibPdfJoin() If (t_Return = 0) Then ‚Fehlernummer abholen
Dim t_Fehlernummer As Integer CibPdfGetLastError(t_Fehlernummer) End If End Sub End Module
18.3. Einbindung der CIB pdf toolbox - Java Codebeispiele
Nachfolgende Beispiele demonstrieren die Ansteuerung der CIB pdf toolbox unter JAVA.
Beispiel für PDF Integration aus RTF über CIB pdf/joinBeispiel mit CIB pdf/merge und CIB pdf/join
JAVA-Beispiel: Direkter Druck eines PDF-Dokuments über die CIB runshell und CIB pdf toolbox
Beispiel CIB pdf toolbox direkter Druck eines PDF-Dokuments über den Java Wrapper (JCoMod)
Beispiel für PDF Integration aus RTF über CIB pdf/join
Wenn Sie ein dynamisches RTF-Dokumentprojekt im Einsatz haben, daß auch PDF Dateien in das Zieldokument mit integriert, dann ist dafür in der Regel folgender Ablauf vorgesehen:
- Über CIB merge wird zunächst das dynamische Dokumentprojekt unter Beteiligung von CSV und/oder XML Datenversorgung zu einer RTF Ergebnisdatei aufbereitet.
- Über die CIB format/pdf Komponente entsteht aus der RTF Ergebnisdatei eine PDF Zwischenergebnisdatei. Dort sind nun XMP Metadaten enthalten, die weitere Anweisungen für den Verarbeitungsschritt mit der CIB pdf toolbox enthalten.
- Über die CIB pdf toolbox wird nun aus der PDF Zwischenergebnisdatei eine PDF Ergebnisdatei erzeugt.
Das nachfolgende JAVA Beispiel beschreibt nur diesen letzten Schritt.
package com.cib.comod.test;
import com.cib.comod.jobs.ICibPdfJoinJob;
/**
• Beispielimplementation für eine Benutzung des JCoMod Wrappers mit
CIB pdf toolbox
• Beispiel:
• 1) Nimmt eine PDF Zwischenergebnisdatei und gibt sie als PDF Ergebnisdatei aus.
• 2) Intern im PDF enthaltene XMP Metadaten werden dabei verarbeitet
*
*/
public boolean doPdfJoinJob(String a_Input, String a_Output, String a_Workspace)
{
JCibPdfJoinJob t_PdfJob = new JCibPdfJoinJob();
t_PdfJob.initialize();
if (!t_PdfJob.isInitialized())
{
System.out.println(„Fehler beim Initialisieren des JCibPdfJoinJob“);
t_PdfJob.dispose(); // Resourcen d. Jobs freigeben
return false;
}
//t_PdfJob.setProperty(ICibPdfJoinJob.PROPERTY_LICENSEKEY, “...”);
//t_PdfJob.setProperty(ICibPdfJoinJob.PROPERTY_LICENSECOMPANY, “...”);
//PDF Zwischenergebnis aus CIB format/pdf Konvertierung
//muss die anzuhängende PDF Datei als XMP Metainfo enthalten
t_PdfJob.setProperty(ICibPdfJoinJob.PROPERTY_INPUTFILE, „input.pdf“);
//zu erzeugendes PDF Ergebnisdokument
t_PdfJob.setProperty(ICibPdfJoinJob.PROPERTY_OUTPUTFILE, „output.pdf“);
//Job ausführen t_PdfJob.execute();
//Fehlerbehandlung
int t_Error =
((Integer)t_PdfJob.getProperty(ICibPdfJoinJob.PROPERTY_ERROR)).intValue();
if (t_Error != 0)
{
// Fehler beim Ausführen des Jobs
String t_Errortext = (String)
t_PdfJob.getProperty(ICibPdfJoinJob.PROPERTY_ERRORTEXT);
System.out.println(„Fehler beim Ausführen: „+t_Error+“ „+t_Errortext);
t_PdfJob.dispose(); // Resourcen d. Jobs freigeben
return false;
}
t_PdfJob.dispose(); // Resourcen d. Jobs freigeben
return true;
}
Beispiel mit CIB pdf/merge und CIB pdf/join
Der nachfolgende Java Code muss in eine Java-Klasse „PdfToolboxSample“ eingefügt werden. Zusätzlich ist der Java JCoMod Wrapper (mindestens Version 2.0.20) erforderlich, der die CIB pdf toolbox native Library für Java über JNI kapselt und so eine einfache Steuerung aus Java möglich macht.
Der Wrapper besteht aus diesen Dateien:
- CoModJobs.jar
- JCoMod.dll
Damit das Beispiel kompiliert, muss die CoModJobs.jar im Classpath angegeben werden. Zum Zeitpunkt der Entwicklung war ein JDK 1.4.1 installiert.
Die im Codebeispiel verwendeten Dateien sind auf die im Lieferumfang enthaltenen Samples abgestimmt, damit ist eine sofortige Funktionalität zu Testzwecken gewährleistet.
import java.awt.Color; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTextField; import com.cib.comod.jobs.ICibPdfJoinJob; import com.cib.comod.jobs.ICibPdfMergeJob; import com.cib.comod.jobs.IComodJob; import com.cib.comod.jobs.JCibPdfJoinJob; import com.cib.comod.jobs.JCibPdfMergeJob; public class PdfToolboxSample extends JFrame { JTextField TextPdf1; JTextField TextPdf2; JTextField TextOut; JTextField TextData; JList FieldList; JRadioButton RadioJoin; JRadioButton RadioMerge; public PdfToolboxSample() { makeFrame(); } public void makeFrame() { //Fenster erstellen setTitle(“PdfToolboxSample”); setSize(400,400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Controls erstellen RadioMerge = new JRadioButton(new RadioMergeAction()); RadioJoin = new JRadioButton(new RadioJoinAction()); TextPdf1 = new JTextField(“..\\merge xml\\test.pdf”); TextPdf2 = new JTextField(“..\\join\\test1.pdf;..\\join\\funktionstest1.pdf;..\\join\\funktionstest2.pdf”); TextData = new JTextField(“XML:..\\merge xml\\data.xml;//Testdaten//Person”); TextOut = new JTextField(“..\\tempoutput\\Output.pdf”); //Labels erstellen JLabel LabelPdf1=new JLabel(„Pdf file 1:“); JLabel LabelPdf2=new JLabel(“Pdf file 2:”); JLabel LabelData=new JLabel(“Data file:”); JLabel LabelOut=new JLabel(“Output file:”); JLabel LabelFields=new JLabel(“Pdf Fields:”); //die richtigen Größen setzen RadioJoin.setSize(70,25); RadioMerge.setSize(70,25); LabelPdf1.setSize(70,25); TextPdf1.setSize(280,25); LabelPdf2.setSize(70,25); TextPdf2.setSize(280,25); LabelData.setSize(50,25); TextData.setSize(280,25); LabelOut.setSize(70,25); TextOut.setSize(280,25); LabelFields.setSize(70,25); //die richtigen Positionen setzen RadioJoin.setLocation(100,30); RadioMerge.setLocation(180,30); LabelPdf1.setLocation(20,60); TextPdf1.setLocation(100,60); LabelPdf2.setLocation(20,90); TextPdf2.setLocation(100,90); LabelData.setLocation(20,120); TextData.setLocation(100,120); LabelOut.setLocation(20,150); TextOut.setLocation(100,150); LabelFields.setLocation(20,180); FieldList = new JList(); JScrollPane FieldsPane = new JScrollPane(FieldList); FieldsPane.setVerticalScrollBarPolicy (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); FieldsPane.setSize(280,100); FieldsPane.setLocation(100,180); //einen Button zum Ausführen von Join und Merge erstellen JButton ButtonExecute = new JButton(new ExecuteAction()); ButtonExecute.setSize(100,25); ButtonExecute.setLocation(100,320); //alles aufs Fenster setzen getContentPane().setLayout(null); getContentPane().add(RadioMerge); getContentPane().add(RadioJoin); getContentPane().add(ButtonExecute); getContentPane().add(LabelPdf1); getContentPane().add(TextPdf1); getContentPane().add(LabelPdf2); getContentPane().add(TextPdf2); getContentPane().add(LabelData); getContentPane().add(TextData); getContentPane().add(LabelOut); getContentPane().add(TextOut); getContentPane().add(LabelFields); getContentPane().add(FieldsPane); //Voreinstellung und anzeigen RadioJoin.setSelected(true); enableFields(); setVisible(true); } public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); new PdfToolboxSample(); } class ExecuteAction extends AbstractAction { public ExecuteAction() { putValue(Action.NAME, “Execute”);} public void actionPerformed(ActionEvent e) { execute();} } class RadioJoinAction extends AbstractAction { public RadioJoinAction() { putValue(Action.NAME, “Join”);} public void actionPerformed(ActionEvent e) { RadioMerge.setSelected(false); enableFields();} } class RadioMergeAction extends AbstractAction { public RadioMergeAction() { putValue(Action.NAME, “Merge”);} public void actionPerformed(ActionEvent e) { RadioJoin.setSelected(false); enableFields();} } //Plausibilisierung der GUI public void enableFields() { if(RadioJoin == null) return; if(RadioJoin.isSelected()) { TextPdf2.setEnabled(true); TextPdf2.setBackground(Color.white); TextData.setEnabled(false); TextData.setBackground(PdfToolboxSample.this.getBackground()); } else { TextPdf2.setEnabled(false); TextPdf2.setBackground(PdfToolboxSample.this.getBackground()); TextData.setEnabled(true); TextData.setBackground(Color.white); } } //Job ausführen public void execute() { //sich für einen Job entscheiden if(RadioJoin.isEnabled()) doJoin(); if(RadioMerge.isEnabled()) doMerge(); } public void doMerge() { //erzeuge einen JCibPdfMerge-Job JCibPdfMergeJob t_Job = new JCibPdfMergeJob(); // Der Job muss initialisiert werden, sonst läuft gar nichts if (!t_Job.initialize()) { System.out.println(„Fehler beim Initialisieren des Jobs“); return; } // setze die Properties t_Job.setProperty(ICibPdfMergeJob.PROPERTY_INPUTFILE, TextPdf1.getText()); t_Job.setProperty(“Data”, TextData.getText()); t_Job.setProperty(ICibPdfMergeJob.PROPERTY_OUTPUTFILE, TextOut.getText()); t_Job.setProperty(“GetFieldInfo”, “1”); // Merge Job ausführen t_Job.execute(); //FieldInfos auswerten String t_FieldNames = (String) t_Job.getProperty(“FieldNames”); //FieldNames sind ;-separiert if (t_FieldNames != null) { String t_FieldNamesArray[] = t_FieldNames.split(“;”); FieldList.setListData(t_FieldNamesArray); } //Fehlerbehandlung System.out.println(“execute() beendet: “); if (((Integer)t_Job.getProperty(IComodJob.PROPERTY_ERROR)).intValue()>0) System.out.println(“Fehler beim Ausführen: “+t_Job.getProperty(IComodJob.PROPERTY_ERROR)+” “+t_Job.getProperty(IComodJob.PROPERTY_ERRORTEXT)); else System.out.println(„Erfolg\n“); System.out.println(„Merge Job geschlossen\n“); } public void doJoin() { //erzeuge einen JCibPdfJoin-Job JCibPdfJoinJob t_Job = new JCibPdfJoinJob(); // Der Job muss initialisiert werden, sonst läuft gar nichts if (!t_Job.initialize()) { System.out.println(„Fehler beim Initialisieren des Jobs“); return; } // die zu joinenden PDFs als ;-separierte Liste zusammenbauen String t_String = TextPdf1.getText(); if (TextPdf2.getText().toString().length()>0) t_String += „;“; t_String += TextPdf2.getText(); // setze die Properties t_Job.setProperty(ICibPdfJoinJob.PROPERTY_INPUTFILE, t_String); t_Job.setProperty(ICibPdfJoinJob.PROPERTY_OUTPUTFILE, TextOut.getText()); t_Job.setProperty(“GetFieldInfo”, “1”); // Join Job ausführen t_Job.execute(); //FieldInfos auswerten String t_FieldNames = (String) t_Job.getProperty(“FieldNames”); //FieldNames sind ;-separiert if (t_FieldNames != null) { String t_FieldNamesArray[] = t_FieldNames.split(“;”); FieldList.setListData(t_FieldNamesArray); } //Fehlerbehandlung System.out.println(“execute() beendet: “); if (((Integer)t_Job.getProperty(IComodJob.PROPERTY_ERROR)).intValue()>0) System.out.println(“Fehler beim Ausführen: “+t_Job.getProperty(IComodJob.PROPERTY_ERROR)+” “+t_Job.getProperty(IComodJob.PROPERTY_ERRORTEXT)); else System.out.println(„Erfolg\n“); System.out.println(„Join Job geschlossen\n“); } }
JAVA-Beispiel: Direkter Druck eines PDF-Dokuments über die CIB runshell und CIB pdf toolbox
Um diese Beispiel auszuführen werden zwei weitere Klassen benötigt: RunshellProcess.java und Process.java .Diese erhalten Sie gerne beim CIB Support.
import java.io.*; import de.cib.comod.RunshellProcess; public class DirectPrintPdf { public static void main(String[] args) { //PDF-Datei festlegen z.B. ein Test.pdf String inputFileName = new String(“..\\Test.pdf”); // neuen Runshell-Prozess starten RunshellProcess cibRunShell = new RunshellProcess(“cibrsh.exe”); //Druckernamen festlegen z.B. HP LaserJet 4100 Series PS cibRunShell.addArgument(„PrinterName = \\\““ + „HP LaserJet 4100 Series PS“ + „\\\““); //Ausgabeformat festlegen cibRunShell.addProperty(„OutputFormat“, „FormatPrinter“); //Eingabedatei festlegen cibRunShell.addCommand(RunshellProcess.COMMAND_PDFJOIN, inputFileName); try { //Pfad zu den Libraries angeben und Prozess starten runshell.executeAndWait(new File(“.”)); } catch(IOException io) { io.printStackTrace(); } catch(InterruptedException inter) { inter.printStackTrace(); } }
Beispiel CIB pdf toolbox direkter Druck eines PDF-Dokuments über den Java Wrapper (JCoMod)
import java.io.*; import com.cib.comod.jobs.*; public class DirectPrintPdf { public static void main(String[] args) { JCibPdfJoinJob t_PDFJob = new JCibPdfJoinJob(); t_PDFJob.initialize(); if (!t_PDFJob.isInitialized()) { System.out.println(„Fehler beim Initialisieren der Dll“); return; } //PDF-Datei festlegen z.B. ein Test.pdf t_PDFJob.setProperty(ICibPdfJoinJob.PROPERTY_INPUTFILE, “Test.pdf”); //Druckernamen festlegen z.B. HP LaserJet 4100 Series PS t_PDFJob.setProperty(„PrinterName“, „HP LaserJet 4100 Series PS“ ); //Ausgabeformat festlegen t_PDFJob.setProperty(ICibPdfJoinJob.PROPERTY_OUTPUTFORMAT, “FormatPrinter”); //Prozess starten t_PDFJob.execute(); int t_ReturnValue =(Integer)t_PDFJob.getProperty(ICibPdfJoinJob.PROPERTY_ERROR)).intValue(); if (t_ReturnValue != 0) { System.out.println(“Fehler! CIB pdf toolbox returns “ + t_ReturnValue); } t_PDFJob.dispose(); }
19. Programmrückgabewerte
Nachfolgende Aufstellung gibt eine Übersicht über mögliche Fehlerrückgaben durch CIB pdf toolbox. Es gibt für Anwendungsentwickler CoMod Schnittstellen um zu einer Fehlernummer direkt den Text abzufragen und dem Endanwender mit konkreten Hinweisen weiterzuhelfen. Funktionen mit welchen die Fehlertexte abgeholt werden sind CibPdfGetLastError(int a_iError) und CibPdfGetLastErrorText(char a_pTextBuffer, long a_lBufferLength).
Rückgabewert |
Bedeutung / Mögliche Ursache |
0 |
Alles in Ordnung |
2 |
Property kann nicht gelesen werden |
3 |
Property kann nicht veraendert werden |
9 |
Keine Eingabedatei oder Eingabedatei ist fehlerhaft |
10 |
Zu wenig Arbeitsspeicher zum Anlegen notwendiger Resourcen |
11 |
Diese Methode ist nicht implementiert |
13 |
Drucker nicht gefunden |
14 |
Fehlerhafte Buchstaben-, Font- oder Grafikgroeße |
25 |
Zeile zu lang in der Parameterdatei |
26 |
Lizenzdaten unvollstaendig |
28 |
Interner Programmfehler. RTF-Text bitte an CIB Support uebermitteln |
29 |
Ungueltiges Funktionsargument |
31 |
Windows Standard Druckdialog kann nicht angezeigt werden |
34 |
Fehler beim Pdf Fontembedding mit System-Routine SelectObject |
35 |
Fehler beim Pdf Fontembedding mit System-Routine GetFontData |
39 |
Ungueltiges Tabellenformat |
47 |
Uebergebener Rueckgabepuffer ist zu klein |
48 |
Systemfehler bei Fontauswahl für Drucker aufgetreten |
52 |
Es ist kein Fontverzeichnis gesetzt |
58 |
Fehler beim Umwandeln einer Grafik in PDF |
64 |
Verwendetes Grafikformat wird nicht unterstuetzt |
66 |
Buchstabenbreite kann nicht aus den Fontdaten ermittelt werden |
78 |
OS/2 2.x Bitmapformat wird derzeit nicht unterstuetzt |
92 |
Fehler bei der korrekten Fontaufbereitung |
96 |
OS/2 Treiberstruktur enthaelt keine Laengenangabe |
99 |
Ungueltiger Propertyname |
100 |
Ungueltiger Propertywert |
102 |
Heap konnte nicht angelegt oder aktiviert werden |
103 |
Fehler bei der Zlib Kompression oder Dekompression |
109 |
Keine Ausgabedatei angegeben |
117 |
Internetfunktionen (wininet.dll) nicht gefunden |
118 |
Verzeichnisfehler |
120 |
Kann Datei nicht loeschen |
121 |
Dateifehler |
122 |
Ungueltiger Lizenzschluessel |
128 |
Socket Fehler |
181 |
Allgemeiner Tiff Fehler |
182 |
Ungueltige Farbtiefe bei Tiff Konvertierung |
185 |
Group3/4 und RLE Kompression nur gueltig bei 2 Farben |
195 |
Allgemeiner Type1 Fehler |
198 |
Unerwarteter Ausnahmefehler aufgetreten und abgefangen |
199 |
In der Barcodeanweisung steht ein leerer Barcodewert |
255 |
Der Dokumentinhalt passt nicht in die definierte Checkmask |
256 |
Der Dokumentinhalt passt nicht in die definierte Fontmask |
267 |
Ausgabeformat unterstützt keine Ausgabe in Speicher |
270 |
Die OpenSSL Bibliothek konnte nicht gefunden werden |
271 |
Die Zertifikatsdatei konnte nicht gefunden werden |
272 |
Die Zertifikatsdatei hat ein nicht unterstütztes Format |
273 |
Das Passwort für die Zertifikatsdatei ist inkorrekt |
274 |
Das Zertifikat ist noch nicht gültig oder abgelaufen |
279 |
Generierung des DataMatrix-Barcodes fehlgeschlagen ( möglicherweise zu große Datenmenge) |
297 |
Ausgabeformat unterstützt keine Ausgabe in Speicher |
300 |
Allgemeiner Pdf-Fehler |
301 |
Interner Pdf-Fehler (Assertion) |
302 |
Fehler in PdfMerge |
303 |
Fehler in PdfConcat |
304 |
Fehler beim PdfPrint |
305 |
Allgemeiner Fehler beim Erzeugen der Pdf Signatur |
306 |
Die OpenSSL Bibliothek konnte nicht gefunden werden |
307 |
Die Zertifikatsdatei konnte nicht gefunden werden |
308 |
Die Zertifikatsdatei hat ein nicht unterstütztes Format |
309 |
Das Passwort für die Zertifikatsdatei ist inkorrekt |
310 |
Fehler beim Zugriff auf Daten (csv,xml,xfdf) |
311 |
Dokument konnte nicht weboptimiert werden |
312 |
Dokument konnte nicht geparst werden |
313 |
Fehler beim Zugriff auf eine dll |
314 |
Fehler in der CibDataXml oder CibDataCsv |
315 |
Daten-Zugriffstyp wird nicht unterstützt |
316 |
Inkompatible Datenzugriffs-dll |
317 |
Datensatz konnte nicht gelesen werden |
318 |
Datensatz konnte nicht gelesen werden: syntax error |
319 |
xml-Abfrage liefert keine Daten |
320 |
Fehler beim Zugriff auf cibcache.dll |
321 |
Formularfeld ist nicht im Pdf enthalten |
322 |
Formularfeldwert kann nicht gesetzt werden |
323 |
Pdf-Objekt kann nicht aktualisiert werden |
324 |
Pdf ist verschlüsselt und das übergebene Passwort ist nicht in Ordnung oder leer |
325 |
Feldwert-Properties passen nicht zur Eingabedatei |
326 |
Owner-Paßwort (Hauptkennwort) benötigt |
327 |
Unzureichende Rechte |
328 |
Ownerpaßwort (Hauptkennwort) ungültig |
329 |
Inkompatible Acroformen |
330 |
Signatur konnte nicht verifiziert werden |
331 |
Das Zertifikat ist noch nicht gültig oder abgelaufen |
332 |
Die Zertifikatskette ist ungültig |
333 |
Das Zertifikat ist nicht vertrauenswürdig |
334 |
Allgemeiner Fehler beim Validieren der Pdf Signaturen |
335 |
Die Signatur hat ein inkorrektes oder nicht unterstütztes Format |
336 |
Die CIB ocr Bibliothek konnte nicht gefunden werden |
337 |
Allgemeiner Fehler in der CIB ocr Bibliothek |
338 |
Notwendige Daten für die CIB ocr Bibliothek konnten nicht gefunden werden |
|
|
340 |
Allgemeiner JBIG2 Fehler |
341 |
Unerwartete Ausnahme im JBIG2 Modul |
342 |
JBIG2-Modul konnte nicht geladen werden |
343 |
Fehler beim Auslesen der JBIG2-Daten |
344 |
Fehler beim Dekomprimieren eines JBIG2 Bilds |
345 |
Fehler beim Komprimieren eines JBIG2 Bilds |
346 |
Kann nicht in PDF/A konvertiert werden (aus unterschiedlichen Gründen) |
347 |
In PDF wurde Transparenz verwendet, kann nicht in PDF/A konvertiert werden |
348 |
Es wurden sowohl RGB- als auch CMYK-Farbräume verwendet, kann nicht in PDF/A konvertiert werden |
349 |
Die Eigenschaft ‚OutlinesAdd‘ hat ein inkorrektes Format |
350 |
Systemfehler: Eine temporäre Schriftartdatei konnte nicht installiert werden |
351 |
In PDF wurde Optional Content Group (OCG) verwendet, kann nicht in PDF/A konvertiert werden |
352 |
Problem mit eingebetteter Schriftart in PDF, kann nicht in PDF/A konvertiert werden |
353 |
Wörterbuch hat mehr als 4095 Einträge, kann nicht in PDF/A konvertiert werden |
354 |
Die angegebene PDF/A Profil wird in dieser Version nicht unterstützt, kann nicht in PDF/A konvertiert werden |
355 |
Das Zugferd Xml entspricht nicht dem angegebenem Schema |
356 |
Die Seitenauswahl ergab keine passenden Seiten |
357 |
Das Zugferd Xml hat ein inkorrektes Format |
358 |
Das PDF entspricht nicht PDF/A3 Standard, aber ein PDF/A3 ist notwendig um ein Zugferd Xml korrekt einzubetten |
359 |
Ein Zugferd XML ist bereits eingebettet |
|
|
361 |
Es wurde keine CIB renderer Bibliothek gefunden |
362 |
Fehler beim Laden des CIB renderers, es wurde eine falsche Version des CIB renderes gefunden |
363 |
DocMDP Signatur erst ab PDF-1.5 möglich |
364 |
Rendern des Dokuments fehlgeschlagen |
365 |
Diese Betriebssystemversion wird beim CIB renderer nicht unterstützt |
366 |
Eine Seite, die in property BackgroundFilename angegeben wurde, wurde nicht hinzugefügt |
367 |
Fehler bei der PDF/A Konvertierung: Embedded-Dateien sind nicht erlaubt |
368 |
Fehler bei der PDF/A Konvertierung: Passwort ist nicht erlaubt |
369 |
Rendering von Dokumenten mit XFA-Formularen wird nicht unterstuetzt |
370 |
Temporärer Pfad existiert nicht |
371 |
Fehler während der Ausführung des CIB pdfModule |
953 |
Die Bilddatei kann nicht aus der Speicheradresse geladen werden. |
1000 |
Userbreak2 |
20. Trace
Für unklare Fehlersituationen haben Sie 2 Möglichkeiten eine zusätzliche Protokolldatei zu erzeugen:
- Sie setzen die Umgebungsvariable CIB_PDFTRACE auf einen Dateinamen und führen den Vorgang aus
- Sie setzen die Property „Tracefilename“ und vollziehen den Vorgang