Einfügen eines Textwasserzeichens in PDF mit Java
Tags: java, pdf, watermark, text
Published: 2023-11-15 09:41:39

PDF-Text-Wasserzeichen sind digitale Textmarken, die als Hintergrund auf jeder PDF-Seite angezeigt werden. Im Gegensatz zu Stempeln sind Textwasserzeichen in die Seite integriert und können nicht direkt entfernt werden. Sie werden oft verwendet, um Dokumentinformationen, Unternehmensinformationen, Autoreninformationen und viele andere Attribute des Dokuments anzuzeigen. Darüber hinaus können Textwasserzeichen dazu beitragen, PDF-Dokumente vor Missbrauch zu schützen. Textwasserzeichen werden häufig in PDF-Dokumenten mit dem ursprünglichen Inhalt verwendet, der im Web veröffentlicht ist. In diesem Artikel wird gezeigt, wie Sie mit der kostenlosen [Free Spire.PDF for Java](https://www.e-iceblue.com/Introduce/free-pdf-for-java.html)-Bibliothek Textwasserzeichen in ein PDF-Dokument einfügen können.

- **Einfügen eines einzelnen Textwasserzeichens in ein PDF-Dokument**
- **Einfügen eines kachelartigen Textwasserzeichens in ein PDF-Dokument**

### Hinzufügen von Abhängigkeiten
Für diese Methode wird die kostenlose Free Spire.PDF for Java-Bibliothek benötigt. Importieren Sie zuerst die JAR-Datei.

**1. Maven**
Wenn Sie Maven verwenden, können Sie die JAR-Datei einfach in Ihr Projekt importieren, indem Sie den folgenden Code in die pom.xml-Datei Ihres Projekts hinzufügen.
```xml
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>
```

**2. Herunterladen der JAR-Datei von der offiziellen Website**
Laden Sie zunächst die ZIP-Datei von der [offiziellen Website von Free Spire.PDF for Java](https://www.e-iceblue.com/Download/pdf-for-java-free.html) herunter. Entpacken Sie die ZIP-Datei und importieren Sie die Spire.Pdf.jar-Datei aus dem lib-Ordner als Abhängigkeit in Ihr Projekt.

## Einfügen eines einzelnen Textwasserzeichens in ein PDF-Dokument
Ein einzelnes Textwasserzeichen ist ein Textwasserzeichen, das nur einmal in der Mitte der Seite angezeigt wird. Die Schritte zum Einfügen eines einzelnen Textwasserzeichens lauten wie folgt:

- Erstellen Sie eine Instanz der Klasse **PdfDocument**.
- Laden Sie das PDF-Dokument mit der Methode **PdfDocument.loadFromFile()**.
- Erstellen Sie ein Schriftartenobjekt.
- Schleife über die Seiten und fügen Sie auf jeder Seite das Wasserzeichen ein.
- Verwenden Sie die Methode **PdfDocument.getPages().get()**, um eine Seite abzurufen.
- Verwenden Sie die Methode **PdfPageBase.getCanvas().translateTransform()**, um die Anfangsposition festzulegen.
- Verwenden Sie die Methode **PdfPageBase.getCanvas().rotateTransform()**, um den Drehwinkel festzulegen.
- Verwenden Sie die Methode **PdfPageBase.getCanvas().drawString()**, um den Wasserzeichen-Text auf der Seite zu zeichnen.
- Speichern Sie das Dokument mit der Methode **PdfDocument.saveToFile()**.

**Java**
```java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import com.spire.pdf.htmlconverter.qt.Size;

import java.awt.*;
import java.awt.geom.*;

public class insertSingleTextWaterMark {
    public static void main(String[] args) {

        // Erstellen Sie eine Instanz der Klasse PdfDocument
        PdfDocument pdf = new PdfDocument();

        // Laden Sie das PDF-Dokument
        pdf.loadFromFile("Sample.pdf");

        // Erstellen Sie eine Schriftart
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Mincho", Font.BOLD, 50));

        // Schleife über die Seiten und fügen Sie jedem eine Wasserzeichen ein
        String text = "Entwurf";
        float set1 = (float) (font.getSize() * Math.sqrt(2));
        float set2 = (float) (font.getHeight() * Math.sqrt(2) / 4);
        for (int i = 0; i < pdf.getPages().getCount(); i++) {
            // Holen Sie die Seite
            PdfPageBase page = pdf.getPages().get(i);
            // Setzen Sie die Transparenz des Wasserzeichens
            page.getCanvas().setTransparency(0.8f);
            // Setzen Sie die Anfangsposition
            page.getCanvas().translateTransform(page.getCanvas().getSize().getWidth() / 2 - (set1 + set2), page.getCanvas().getSize().getHeight() / 2 + set1 - set2);
            // Setzen Sie den Rotationswinkel
            page.getCanvas().rotateTransform(-45);
            // Zeichnen Sie den Text des Wasserzeichens
            page.getCanvas().drawString(text, font, PdfBrushes.getDarkGray(), 0, 0);
        }

        // Speichern Sie die Datei
        pdf.saveToFile("Text-Wasserzeichen.pdf");
    }
}
```

## Einfügen eines kachelartigen Textwasserzeichens in ein PDF-Dokument
Es ist auch möglich, Textwasserzeichen als Kachel auf der Seite anzuzeigen. Die detaillierten Schritte zum Einfügen eines kachelartigen Textwasserzeichens lauten wie folgt:

- Erstellen Sie eine Instanz der Klasse **PdfDocument**.
- Laden Sie das PDF-Dokument mit der Methode **PdfDocument.loadFromFile()**.
- Schleife über die Seiten im Dokument, um das Wasserzeichen einzufügen.
- Verwenden Sie die Methode **PdfDocument.getPages().get()**, um die Seiten im Dokument abzurufen.
- Verwenden Sie die benutzerdefinierte Methode **insertWatermark()**, um das Textwasserzeichen einzufügen.
- Verwenden Sie die Methode **PdfDocument.saveToFile()**, um das Dokument zu speichern.

**Java**
```java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.*;

public class insertTextwatermark {
    public static void main(String[] args) {

        // Erstellen Sie eine Instanz der Klasse PdfDocument
        PdfDocument pdf = new PdfDocument();

        // Laden Sie das PDF-Dokument
        pdf.loadFromFile("Sample.pdf");

        // Schleife über alle Seiten im Dokument, um Wasserzeichen einzufügen
        for (int i = 0; i < pdf.getPages().getCount(); i++){
            PdfPageBase pageBase = pdf.getPages().get(i);
            insertWatermark(pageBase, "Entwurf");
        }

        // Dokument speichern
        pdf.saveToFile("Gekacheltes Text-Wasserzeichen.pdf");
    }

    static void insertWatermark(PdfPageBase page, String watermark) {
        Dimension2D dimension2D = new Dimension();
        dimension2D.setSize(page.getCanvas().getClientSize().getWidth() / 2, page.getCanvas().getClientSize().getHeight() / 3);
        PdfTilingBrush brush = new PdfTilingBrush(dimension2D);
        brush.getGraphics().setTransparency(0.3F);
        brush.getGraphics().save();
        brush.getGraphics().translateTransform((float) brush.getSize().getWidth() / 2, (float) brush.getSize().getHeight() / 2);
        brush.getGraphics().rotateTransform(-45);
        PdfCjkStandardFont font = new PdfCjkStandardFont(PdfCjkFontFamily.Heisei_Mincho_W_3,30);
        brush.getGraphics().drawString(watermark, font, PdfBrushes.getViolet(), 0, 0, new PdfStringFormat(PdfTextAlignment.Center));
        brush.getGraphics().restore();
        brush.getGraphics().setTransparency(1);
        Rectangle2D loRect = new Rectangle2D.Float();
        loRect.setFrame(new Point2D.Float(0, 0), page.getCanvas().getClientSize());
        page.getCanvas().drawRectangle(brush, loRect);
    }
}
```