In den neuesten Versionen von FastReport VCL wurde eine Funktion zum Hinzufügen von Wasserzeichen implementiert. Ein Wasserzeichen ist eine Kennzeichnung, die in ein elektronisches Dokument, Bild, Video, Audio oder andere digitale Inhalte eingebettet wird. Sein Zweck ist es, die Urheberschaft zu bestätigen, vor unerlaubtem Kopieren zu schützen und die Verbreitung der Datei nachzuverfolgen.
In diesem Artikel wird die Erstellung und Verwendung von Wasserzeichen in Berichten mit FastReport VCL ausführlich erläutert. Ein Beispiel zur Verwendung von Wasserzeichen befindet sich in der Demo, die mit FastReport VCL ausgeliefert wird.
Die Erstellung und Bearbeitung von Wasserzeichen in einem Bericht ist sowohl im Berichtsdesigner als auch in der Druckvorschau möglich. Die Bearbeitung erfolgt mit einem entsprechenden Editor. Um den Editor im Berichtsdesigner aufzurufen, klicken Sie im Menü auf „Bericht → Wasserzeichen…“ (Report → Watermarks…). Für die Bearbeitung von Wasserzeichen in der Druckvorschau ist auf der Symbolleiste eine entsprechende Schaltfläche verfügbar. Der Wasserzeichen-Editor hat folgende Gestalt:
Oben im Fenster befindet sich eine Symbolleiste, mit der Sie ein neues Wasserzeichen erstellen, ein vorhandenes löschen oder dessen Namen ändern können. Außerdem können Sie ein Wasserzeichen in der Liste nach unten oder oben verschieben. Der Satz an Wasserzeichen kann aus einer Datei geladen oder in eine Datei gespeichert werden, um ihn in anderen Berichten wiederzuverwenden. Die letzten beiden Schaltflächen ermöglichen es, den Wasserzeichen-Editor ohne Speicherung oder mit Speicherung der Änderungen zu verlassen.
Rechts befindet sich die Liste der im Bericht vorhandenen Wasserzeichen. Zur besseren Handhabung können ihnen eigene Namen zugewiesen werden.
Ein Wasserzeichen kann sowohl mit Text als auch mit einem Bild erstellt werden. Es ist zulässig, beides gleichzeitig zu verwenden. In der obigen Abbildung zeigt der Editor die Einstellungen für Text. Es ist zu sehen, dass der im Wasserzeichen angezeigte Text selbst, dessen Farbe, Schriftart, Drehung und Transparenz festgelegt werden können. Außerdem kann die Position des Wasserzeichens bestimmt werden – vor dem Hauptbericht oder dahinter. Der als Wasserzeichen verwendete Text wird automatisch zentriert auf der Seite platziert und ist zentriert ausgerichtet – dies kann nicht geändert werden.
Um das als Wasserzeichen zu verwendende Bild auszuwählen, muss auf den Reiter „Bildobjekt“ (Objekt „Bild“) gewechselt werden.
Schaltfläche „Laden“ öffnet einen Dialog zum Laden eines Bildes aus einer Datei (unterstützte Formate: wmf, emf, gif, tiff, svg, png, ico, bmp, jpg).
Schaltfläche „Löschen“ entfernt das geladene Bild. Mit den Kontrollkästchen können Position und Größe des ausgewählten Bildes eingestellt werden.
Kontrollkästchen „Zentriert“ positioniert das Bild zentriert auf der Seite. Wenn es deaktiviert ist, wird das Bild in der oberen linken Ecke platziert.
Kontrollkästchen „Dehnbar“ das Wasserzeichenbild wird gestreckt, um die gesamte Seite auszufüllen. Andernfalls wird die ursprüngliche Bildgröße verwendet.
Kontrollkästchen „Proportionen beibehalten“ zwingt das Bild beim Strecken dazu, seine Proportionen beizubehalten, um Verzerrungen zu vermeiden.
Menü „Position“ legt die Position des Bildes fest: im Hintergrund oder im Vordergrund.
Über das Feld „Ausrichtung“ (Orientierung) kann der Drehwinkel des Bildes eingestellt werden.
Mit den Kontrollkästchen „Horizontal spiegeln“ und „Vertikal spiegeln“ kann das Wasserzeichenbild horizontal oder vertikal gespiegelt werden.
Über den Schieberegler „Transparenz“ kann die Transparenz des Bildes eingestellt werden. Links 0 % Transparenz, rechts 100 % Transparenz (vollständig durchsichtig).
Die Gruppe der Optionsfelder „Darstellungsregeln“ ermöglicht es, das aktuell bearbeitete Wasserzeichen an die Berichtsseiten zu binden. Für die Darstellungsregeln können die folgenden Werte festgelegt werden:
Rechts oben befindet sich die Vorschau des Wasserzeichens, darunter eine Reihe von Kontrollkästchen, mit denen die Sichtbarkeit des erstellten Wasserzeichens in der Druckvorschau, beim Export und beim Drucken eingestellt werden kann.
Wasserzeichen sind im Wesentlichen eine Sammlung TfrxWatermarks von Objekten des Typs TfrxWatermark. Ein Bericht verfügt über zwei solcher Sammlungen:
In den meisten Fällen stimmen diese Sammlungen überein, es sollte jedoch der Fall berücksichtigt werden, dass Wasserzeichen im Skript erstellt oder gelöscht werden. Bei der Erstellung eines zusammengesetzten (Composite) Berichts enthält TfrxReport.PreviewPages.Watermarks die Wasserzeichen aller im Composite enthaltenen Berichte.
Wenn der Bericht noch nicht zur Ausführung gestartet wurde, verwenden Sie TfrxReport.Watermarks. Wenn Sie einen bereits erstellten Bericht ändern müssen, verwenden Sie TfrxReport.PreviewPages.Watermarks. Der Zugriff auf die Objekte dieser Sammlung kann im Delphi-Code mit einer Konstruktion wie der folgenden erfolgen:
frxReport1.Watermarks.Items[1].TextSettings.Text := 'Random text';
Im Berichtsskript ist nur die Sammlung verfügbar, die sich in TfrxReport.PreviewPages.Watermarks befindet. Diese Sammlung wird zu Beginn der Ausführung der Methode PrepareReport() dorthin kopiert. Die Verwendung im Berichtsskript erfolgt wie folgt:
PreviewPages.Watermarks.Items[1].TextSettings.Text := 'Random text';
Ein neues Wasserzeichen kann sowohl in Delphi als auch im Skript mit dem folgenden Code hinzugefügt werden:
NewWatermark := Watermarks.Add
Im Berichtsskript – selbst wenn es sich um einen Composite-Bericht handelt – sind nur die Wasserzeichen verfügbar, die sich im aktuell verarbeiteten Bericht befinden.
Die übrigen Eigenschaften und Methoden der Klasse TfrxWatermarks entsprechen denen des Delphi-Objekts TCollection. Darüber hinaus verfügt die Klasse TfrxWatermarks über die Methoden LoadFromFile, SaveToFile, LoadFromStream und SaveToStream, die es ermöglichen, die Sammlung in eine Datei bzw. einen Stream zu lesen oder zu schreiben.
Die Klasse TfrxWatermarks speichert die Daten für die Anzeige eines Wasserzeichens und verfügt über die folgenden Eigenschaften, die über den Wasserzeichen-Editor bearbeitet werden können:
| Eigenschaft | Beschreibung |
| PagesSetupMode | Legt fest, auf welchen Seiten das Wasserzeichen angezeigt wird. Mögliche Werte: psmAll, psmDesignPagesName, psmPreviewPagesIndex, psmPreviewPagesFlags |
| PageName | Name der Seite (im Designer), auf der das Wasserzeichen angezeigt wird, wenn PagesSetupMode = psmDesignPagesName |
| PagesIndex | Zeichenkette mit den Seitenindizes des fertigen Berichts, auf denen das Wasserzeichen angezeigt wird. Wird verwendet, wenn PagesSetupMode = psmPreviewPagesIndex |
| PagesFlags | Seitentypen, auf denen das Wasserzeichen angezeigt wird, wenn PagesSetupMode = psmPreviewPagesFlags. Mögliche Werte: pfFirstPage, pfLastPage, pfOddPages, pfEvenPages |
| VisibilityTypes | Legt die Sichtbarkeit des Wasserzeichens in Abhängigkeit davon fest, wohin der Bericht ausgegeben wird. Kann eine Kombination der folgenden Werte enthalten: vsPreview, vsExport, vsPrint |
| PictureSettings | Eigenschaften des als Wasserzeichen verwendeten Bildes (siehe unten) |
| TextSettings | Eigenschaften des als Wasserzeichen verwendeten Textes (siehe unten) |
Texteigenschaften des Wasserzeichens: TextSettings
| Eigenschaft | Beschreibung |
| Text | Enthält den anzuzeigenden Text |
| Font | Verwendete Schriftart |
| Rotation | Drehwinkel in Grad |
| Position | Position des Wasserzeichens – vor oder hinter den zu druckenden Daten |
| Transparency | Legt die Transparenz des Wasserzeichens fest. Wert kann von 0 (deckend) bis 100 (transparent) sein |
Bildeigenschaften des Wasserzeichens: PictureSettings
| Eigenschaft | Beschreibung |
| Picture | Enthält den anzuzeigenden Text |
| Center | Wenn True, wird das Bild zentriert auf der Seite platziert, andernfalls in der oberen linken Ecke |
| Stretched | Wenn gesetzt, wird das Bild auf die Seitengröße gestreckt, andernfalls wird die Originalgröße verwendet |
| KeepAspectRatio | Wenn gesetzt, wird das Bild unter Beibehaltung der Proportionen gestreckt |
| Position | Position des Wasserzeichens – vor oder hinter den zu druckenden Daten |
| Transparency | Legt die Transparenz des Wasserzeichens fest. Wert kann von 0 (deckend) bis 100 (transparent) sein |
Wie zu sehen ist, sind programmgesteuert dieselben Eigenschaften verfügbar wie im Dialog zur Wasserzeichenkonfiguration. Beachten Sie, dass die Klasse mehrere Eigenschaften speichert, die die Seiten bestimmen, auf denen das Wasserzeichen angezeigt wird. Es wird jedoch nur die Eigenschaft verwendet, auf die PagesSetupMode verweist.
Wir betonen noch einmal: PictureSettings und TextSettings sind unterschiedliche Eigenschaften desselben Wasserzeichen-Objekts! Auch wenn sie sich sehr ähnlich sind, wirkt sich eine Änderung eines Parameters in PictureSettings in keiner Weise auf das textbasierte Wasserzeichen aus, und umgekehrt führt eine Änderung von TextSettings nicht zu einer Änderung der Bildeinstellungen des Wasserzeichens.
Zur Veranschaulichung nehmen wir den Bericht 3.fr3 aus dem FastReport DemoCenter – dieser enthält ausreichend viele Seiten. Auf jeder Seite platzieren wir ein textbasiertes Wasserzeichen, das die Seitenzahl enthält. Für das Band Band1 (TfrxPageFooter) erstellen wir einen Ereignisbehandlung OnBeforePrint und fügen dort den folgenden Code ein:
procedure Band1OnBeforePrint(Sender: TfrxComponent); var W: TfrxWatermark; P:string; begin P := IntToStr(<Page>); W:= PreviewPages.Watermarks.Add; W.Name := 'W' + P; W.PagesIndex := P; W.PagesSetupMode := psmPreviewPagesIndex; W.TextSettings.Text := 'Page_' + P; W.VisibilityTypes := vsPreview + vsPrint + vsExport; W.TextSettings.Rotation := 45; W.TextSettings.Font.Size := 72; W.TextSettings.Font.Style := fsBold; W.TextSettings.Position := wpFront; W.TextSettings.Font.Name := 'Times New Roman'; W.TextSettings.Transparency := 70; end; begin end.
In diesem Code wird beim Drucken der Fußzeile jeder Seite ein Wasserzeichen erstellt. Mit der Eigenschaft PagesSetupMode wird dem Wasserzeichen die Anzeige auf einer bestimmten Seite des fertigen Berichts zugewiesen. Die Seitennummer wird über die Eigenschaft PagesIndex festgelegt. Anschließend werden mit der Eigenschaft TextSettings die übrigen Eigenschaften des Wasserzeichens im Code gesetzt.
Das Ergebnis sollte ein Bericht wie der folgende sein:
Dieses Skript kann auch in anderen Berichten verwendet werden. Der Ereignisbehandler Band1OnBeforePrint muss einem Element zugewiesen werden, das genau einmal pro Seite gedruckt wird, z. B. TfrxPageHeader oder TfrxPageFooter.
Auf ähnliche Weise können auch grafische Wasserzeichen erstellt werden. Da ein SVG-Bild faktisch Text ist, kann beispielsweise ein Bild für jede Seite im Berichtsskript generiert oder ein Bild für das Wasserzeichen in Abhängigkeit vom Seiteninhalt geladen werden.
Bei der Verwendung von Wasserzeichen beachten Sie bitte, dass diese aufgrund von Farbübereinstimmungen mit dem Hintergrund möglicherweise nicht sichtbar sind – beispielsweise ein graues Wasserzeichen auf einem grauen Hintergrund.
Bei der Verwendung von Wasserzeichen beim Export beachten Sie bitte, dass bei weitem nicht alle Exportformate Wasserzeichen unterstützen. Einige Exporte unterstützen Wasserzeichen nur teilweise. Vollständige Unterstützung ist nur bei den grafischen Formaten PDF und HTML5 vorhanden. Der Export in ein Microsoft Word-Dokument bietet nur teilweise Unterstützung für Wasserzeichen – dies ist eine Eigenheit von Microsoft Word selbst.
Beim Export nach PDF vergessen Sie nicht, das Kontrollkästchen „Transparenz“ im Exportdialog zu aktivieren, um halbtransparente Wasserzeichen zu erhalten.
Der Artikel hat die Funktionalität zum Hinzufügen von Wasserzeichen in FastReport VCL ausführlich behandelt – sowohl über die visuelle Oberfläche als auch programmgesteuert mit Delphi-Code und in Berichtsskripten. Beschrieben wurden die Möglichkeiten des Wasserzeichen-Editors: die Konfiguration von Text- und Bildmarkierungen, die Anpassung ihrer Transparenz, Drehung, Position und Sichtbarkeit sowie die Darstellungsregeln – einschließlich der Bindung an bestimmte Seiten (erste/letzte, gerade/ungerade, nach Seitenzahlbereich usw.). Ein praktisches Codebeispiel zur automatischen Erstellung von textbasierten Wasserzeichen mit Seitenzahlen wurde gegeben – dieses kann für andere Berichte angepasst werden.
Diese Werkzeuge ermöglichen es, Inhalte flexibel zu schützen und Berichte gemäß den Geschäftsanforderungen zu kennzeichnen. Dabei sind die Einschränkungen zu beachten: Nicht alle Exportformate unterstützen Wasserzeichen vollständig. Vollständige Unterstützung ist bei PDF und HTML5 vorhanden, während der Export nach Microsoft Word nur teilweise kompatibel ist.