Programmierung

PDF-Verarbeitung in CONZEPT 16

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 Dokumentes
  • spPdfCompany – Firma, die das Dokument erstellt hat
  • spPdfCreator – Eigenschaft „Erstellt mit“
  • spPdfKeywords – Sichwörter
  • spPdfPageCount – Anzahl der Seiten im Dokument
  • spPdfPageHeight – Höhe einer Seite in Millimetern
  • spPdfPageRotation – Rotation einer Seite
  • spPdfPageWidth – Breite einer Seite in Millimetern
  • spPdfProducer – Hersteller des PDFs
  • spPdfResolution – Auflösung des Dokuments in DPI
  • spPdfSubject – Thema des Dokumentes
  • spPdfTitle – Titel
  • spPdfUserRights – Berechtigungen
  • spPdfVersion – 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 Kommentare

4 Kommentare “PDF-Verarbeitung in CONZEPT 16”

  1. @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.

  2. 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?

  3. 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.

Kommentar abgeben