CIB barcode technischer Leitfaden
7. Schneller Einstieg
Dieses Kapitel zeigt Ihnen in einem Kurzüberblick eine mögliche Nutzung des dynamischen Barcodes mit CIB format/output in einer Kundenapplikation.
Hinweis:
Mit CIB output ist es möglich eine MultiRTF Eingabedatei in verschiedene Ausgabeformate überzuführen. Eine MultiRTF Datei ist EINE physikalische Datei, die intern aber mehrere RTF-Dokumente beinhaltet.
Sie kann z.B. über CIB merge unter Verwendung des –o+ Parameters über mehrere Mischläufe aneinandergehängt werden.
Herkömmliche RTF-Verarbeitungsprogramme (z.B. MS-Office) können MultiRTFs i.d.R. zwar einlesen, zeigen aber dann nur den Inhalt der allerersten RTF Datei.
CIB view/output sind in der Lage den kompletten Inhalt auszugeben.
Bei einer MultiRTF-Umsetzung in andere Zielformate kann man unterscheiden ob die Ausgabe in lauter einzelne Zieldateien erfolgen soll, oder ob eine Zieldatei den gesamten Inhalt wiedergeben soll.
Ein C- Beispiel mit MultiRTF und dynamischen Barcodes
Nachfolgendes Beispiel konvertiert eine MultiRTF Datei nach PDF und setzt auf jede Dokumentseite einen Barcode eigenen Inhalts.
#include "cibprt.h" BOOL DoMultiRTFToPdfWithBarcode()
{
BOOL t_fSingleOutput = TRUE; /*Es soll nur eine Zieldatei entstehen*/
CibPrSetProperty(COMOD_PROP_MULTIRTF_SINGLEOUTPUT, &t_fSingleOutput, sizeof(BOOL));
BOOL t_MultirtfPropertiesSupported = FALSE; /*Abwärtskompatibilität*/
BOOL t_MultiRtfPending = FALSE; /*default ist kein MultiRTF*/
/*Eingabedatei setzen "InputFilename"*/
CibPrSetProperty(COMOD_PROP_INPUT_FILENAME, "MultiTest.rtf");
/*Ausgabedatei setzen "OutputFilename"*/
CibPrSetProperty(COMOD_PROP_OUTPUT_FILENAME, "BarcodeAusgabe.pdf");
/*Ausgabeformat setzen "OutputFormat" "FormatPdf"*/
CibPrSetProperty(COMOD_PROP_OUTPUT_FORMAT, COMOD_OPT_FORMAT_PDF);
do {
if(!CibPrLoad())
{
/*Fehlerbehandlung einbauen*/
return FALSE;
}
char* t_PageCount[15]; /*StringProperty*/
memset(t_PageCount,0,15); /*initialisieren*/
/*Anzahl Seiten des aktiven Einzeldokumentes abholen "PageCount"*/
CibPrGetProperty(COMOD_PROP_PAGECOUNT,&t_PageCount,14);
/*abhängig von der Seitenzahl jetzt einen beliebigen String*/
long t_nPageCount = atol(t_PageCount,10); /*mit mehreren Bacrodeinfo's zusammenbauen*/
char t_MultiBarcodeString[4096];
memset(t_MultiBarcodeString,0,4096);
for(int i=0; i < t_nPageCount; i++)
{
char t_PageBarcode;
/*hier kann jetzt dynamisch abhängig von der Seitenangabe etc.*/
/*eine Barcodevorgabe generiert werden*/
strcpy(t_PageBarcode,"POS:x;y;<PageNr>;BARCODE:Code39;1234567890; horizontalleft;0.5mm;7.5mm;nochecksum");
if(i > 0)
strcat(t_MultiBarcodeString,";"); /*Trenner dazwischen*/
strcat(t_MultiBarcodeString,t_PageBarcode);
}
/*Barcodeinfo für dieses Dokument absetzen "BarcodeFilename"*/
CibPrSetProperty(COMOD_PROP_BARCODE_FILENAME,&t_MultiBarcodeString);
if(!CibPrSave())
{
/*Fehlerbehandlung einbauen*/
return FALSE;
}
/* ACHTUNG: Ältere CIB Dlls können das nicht*/
t_MultirtfPropertiesSupported = CibPrGetProperty(COMOD_PROP_MULTIRTF_PENDING, &t_MultiRtfPending, sizeof(BOOL));
}
while (t_MultirtfPropertiesSupported && t_MultiRtfPending);
/* Anzahl der enthaltenen Dokumente ausgeben*/
long t_MultiRtfIndex = 0;
CibPrGetProperty(COMOD_PROP_MULTIRTF_INDEX, &t_MultiRtfIndex, sizeof(long));
if (t_MultirtfPropertiesSupported && (t_MultiRtfIndex > 1))
printf("%ld Dokumente.\n", t_MultiRtfIndex);
}/* DoMultiRTFToPdfWithBarcode*/