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 Antworten
@Th.Eichele
vielen Dank für den Hinweis. Das haben wir auch gesehen. In der Hilfe für die CONZEPT 16-Version 5.6.05 wird das korrigiert sein.
Gut zu wissen
In der Hilfe sind nur PrtText, PrtRtf, PrtMetaPicture und PrtLine aufgeführt.
@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.
d.h. bei Objekten die transparenten Hintergrund nicht unterstützen, wie z.B. PrtDivider, PrtBarcode hat man weiße Rechtecke im Hintergrundbild ?