CIB pdf toolbox technischer Leitfaden (DE)
18. Schneller Einstieg
18.1. Einbindung der CIB pdf toolbox als C++ Codebeispiel
Statisches 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.