Vielen ist sicherlich bekannt, dass mit PrtJobClose(..., _PrtJobPdf)
und dem Druckertreiber PDF-Dateien erstellt werden können. Doch die Möglichkeiten der PDF-Verarbeitung mit CONZEPT 16 reichen um einiges weiter.
PDF anlegen / bearbeiten
Mit den Befehlen PdfNew()
und PdfOpen()
können neue PDF-Dateien angelegt, oder bestehende zur Bearbeitung geöffnet werden. Als Resultat wird von beiden Funktionen der Deskriptor des PDF-Objektes zurückgegeben. Wurde beim Anlegen des PDF-Dokumentes ein Passwort angegeben, können die Berechtigungen des PDFs mit der Eigenschaft spPdfUserRights
modifiziert werden.
// Drucken des Dokumentes unterbinden
tPdf->spPdfUserRights # _PdfRightDenyPrint;
Text einfügen
Damit eine PDF-Seite bearbeitet werden kann, muss diese mit PdfPageOpen()
geöffnet werden. Da immer nur eine Seite zur Bearbeitung geöffnet werden kann, ist diese anschließend mit PdfPageClose()
wieder zu schließen.
Zunächst muss die Farbe mit der Funktion PdfTextColor()
ausgewählt werden. Hier können sowohl Farbkonstanten, als auch RGB-Werte (ColorRgbMake
) angegeben werden. Zusätzlich zur Farbe wird mit PdfTextFont()
der Font ausgewählt. Anschließend kann mit PdfTextWrite()
der Text geschrieben werden.
if (tPdf->PdfPageOpen(1) = _ErrOK)
{
tPdf->PdfTextColor(_WinColBlack);
tPdf->PdfTextFont('Arial', 14.0, _WinFontAttrBold, true);
tPdf->PdfTextWrite(20.0, 20.0, 'PDF-Verarbeitung in');
tPdf->PdfTextWrite(20.0, 36.0, 'CONZEPT 16');
tPdf->PdfTextColor(ColorRgbMake(0,150,0));
tPdf->PdfTextFont('Times New Roman', 12.0, _WinFontAttrNormal, true);
tPdf->PdfTextWrite(20.0, 52.0, 'Text erstellt mit PdfTextWrite');
tPdf->PdfPageClose();
}
Bilder einfügen
Bilder werden mit dem Befehl PdfInsertImage()
und Vektorgrafiken mit
PdfInsertMeta()
eingefügt. Auch hierzu muss die Seite mit PdfPageOpen()
geöffnet werden.
// Bild in Originalgröße einfügen
if (tPdf->PdfPageOpen(1) = _ErrOK)
{
tPdf->PdfInsertImage('C:\Bild.png', 20.0, 70.0, 0.0, 0.0, 1, _PdfInsertNormal);
tPdf->PdfPageClose();
}
// PDF-Seite an Bildgröße anpassen
if (tPdf->PdfPageOpen(2) = _ErrOK)
{
tPdf->PdfInsertImage('C:\Bild.png', 0.0, 0.0, -1.0, -1.0, 1, _PdfInsertFitPdf);
tPdf->PdfPageClose();
}
PDF-Inhalt extrahieren
Mit der Funktion PdfTextExtractMem()
kann der Textinhalt einer mit PdfPageOpen()
geöffneten Seite in ein Memory-Objekt übertragen werden.
Durch PdfSavePage()
kann eine Seite eines PDF-Dokumentes als Bild gespeichert werden. Für diesen Befehl muss das Dokument nicht geöffnet sein.
PDF speichern
Das PDF-Dokument wird erst beim Schließen mit PdfClose()
gespeichert. Dabei können die Änderungen mit _PdfModeCancel
verworfen werden. Andernfalls wird mit _PdfModePdfNormal
ein normales und mit _PdfModePdfA
ein PDF/A erzeugt.
Der PDF/A-Modus ist für die Langzeitarchivierung elektronischer Dokumente gedacht. Daher müssen alle Schriften eingebettet sein. Zudem dürfen keine Restriktionen mit spPdfUserRights
gesetzt sein.
Das Resultat sieht wie folgt aus:
Eigenschaften
Zusätzlich zu den Funktionen gibt es noch die folgenden Eigenschaften, die gelesen und teilweise auch gesetzt werden können:
spPdfAuthor
– Verfasser des DokumentesspPdfCompany
– Firma, die das Dokument erstellt hatspPdfCreator
– Eigenschaft „Erstellt mit“spPdfKeywords
– SichwörterspPdfPageCount
– Anzahl der Seiten im DokumentspPdfPageHeight
– Höhe einer Seite in MillimeternspPdfPageRotation
– Rotation einer SeitespPdfPageWidth
– Breite einer Seite in MillimeternspPdfProducer
– Hersteller des PDFsspPdfResolution
– Auflösung des Dokuments in DPIspPdfSubject
– Thema des DokumentesspPdfTitle
– TitelspPdfUserRights
– BerechtigungenspPdfVersion
– Version des Dokumentes
Anzeige
PDF-Dokumente können in CONZEPT 16 mit dem DocView und dem CtxAdobeReader angezeigt werden. Um den CtxAdobeReader zur Anzeige zu verwenden, muss der Adobe Reader installiert sein.
4 Antworten
@Kilian:
a) Die Erstellung von Formularen in PDF ist derzeit mit CONZEPT 16 nicht möglich. Dies werden wir jedoch als Vorschlag aufnehmen.
b) Zur Erstellung und Bearbeitung von PDF-Dokumenten wird eine Enterpreise-Lizenz vorausgesetzt. Bei den Lizenztypen Standard und Advanced kann das Dokument zwar erstellt werden, es wird jedoch ein Aufdruck "Draft" aufgedruckt.
Ich habe zwei Fragen zu diesem Thema:
a) Ist es möglich, in Conzept16 PDF-Formulare zu erzeugen?
b) Ist die Verwendung dieser PDF-Funktionen an irgendwelche Restriktionen gebunden – ich denke da vor allem an die verwendete C16 Lizenz – oder kann ich diese Funktionen bedenkenlos benutzen und dann auch sicher sein, dass sie in jeder beliebigen C16-Umgebung laufen?
@Klaus:
Wir nehmen Ihren Vorschlag Seiten mitten im PDF hinzuzufügen oder einzelne Seiten in andere Dokumente zu kopieren gerne auf.
die pdf-Funktionen in C16 sind eine tolle Sache und sehr nützlich. Hilfreich wäre, wenn man auch einzelne pdf-Seiten aus einem Dokument entnehmen oder einfügen könnte. Ähnlich wie dies mit Tools, z.B. PdfTKBuilder, Acrobat Vollversion, usw. geht.
Damit könnte man z.B. einzelne Seiten eines Dokument per mail direkt aus der Datenbak heraus senden.