Programmierung

Drucken mit Wasserzeichen

Bei einem Wasserzeichen handelt es sich um Text- oder Grafikelemente, die im Hintergrund des eigentlichen Dokumentinhalts gedruckt werden.


Um mit CONZEPT 16 eine Druckaufbereitung mit Wasserzeichen zu realisieren, sind folgende Punkte zu berücksichtigen:

  • Neben dem Druckobjekt, welches den Dokumentinhalt ausgibt, wird ein weiteres Objekt für die Ausgabe des Wasserzeichens benötigt
  • Bei der Druckausgabe wird die Reihenfolge der Druck-Objekte umgekehrt. Das bedeutet, die zu einem Druckjob zuletzt hinzugefügten Objekte werden von den zuvor gedruckten Objekten überdeckt. Aus diesem Grund wird die Ausgabe des Wasserzeichens unmittelbar vor einem Seitenwechsel vorgenommen
  • Damit das Wasserzeichen "durchscheinen" kann, muss die Hintergrundfarbe der Objekte, die auf das Wasserzeichen gedruckt werden, auf den Wert _WinColTransparent gesetzt werden

Im nachfolgenden Beispiel wird eine Liste mit einem Hintergrundbild ausgegeben:

try
{
  ErrTryIgnore(_rLocked,_rNoRec);

  // Druckjob öffnen
  tJob # PrtJobOpen(_PrtDocDinA4,'',_PrtJobOpenWrite |_PrtJobOpenTemp)

  // Druckobjekte laden
  tAddresses # PrtFormOpen(_PrtTypePrintForm,'Adressen');
  tWatermark # PrtFormOpen(_PrtTypePrintForm,'Wasserzeichen');

  // Erste Seite ankündigen
  tPage # tJob->PrtJobWrite(_PrtJobPageStart);

  // Alle Adressen der Datei lesen
  for   tResult # RecRead(10,1,_RecFirst)
  loop  tResult # RecRead(10,1,_RecNext)
  while (tResult != _rNorec)
  {
    // Bereits verbrauchter Platz auf Seite
    tAddSize # tPage->ppBoundAdd;

    // Maximal zu Verfügung stehender Platz auf Seite
    tMaxSize # tPage->ppBoundMax;

    // Passt die PrintForm noch auf die Seite?
    if (tAddSize:y + tAddresses ->ppFormHeight > tMaxSize:y)
    {
      // Wasserzeichen hinzufügen
      tPage->PrtAdd(tWatermark,0,0,0);

      // Seitenwechsel durchführen
      tPage # tJob->PrtJobWrite(_PrtJobPageBreak);
    }
    // Drucken Adresse
    tPage->PrtAdd(tAddresses);
  }

  // Letzte Seite geschrieben / Wasserzeichen hinzufügen
  tPage->PrtAdd(tWatermark,0,0,0);
  tJob->PrtJobWrite(_PrtJobPageEnd);

  // Druckobjekte schließen
  tAddresses->PrtFormClose();
  tWatermark->PrtFormClose();

  // Druckjob schließen und Preview anzeigen
  tJob->PrtJobClose(_PrtJobPreview);
}
4 Kommentare

4 Kommentare “Drucken mit Wasserzeichen”

  1. @Th.Eichele
    Das PrtBarcode-Objekt unterstützt ebenfalls _WinColTransparent.
    Bei dem PrtDivider gibt es keinen nicht verwendeten Bereich. Ein weißes Rechteck erscheint demnach nicht.

Kommentar abgeben