如何通過Java程式碼給Word文檔添加水印?

Word中可以為文檔添加的水印分為兩種形式:文字水印和圖片水印。水印是一種數字保護的手段,在文檔上添加水印可以傳達有用資訊,或者在不影響正文文字顯示效果的同時,為列印文檔增添視覺趣味,能起到傳遞資訊,宣傳推廣的作用。此外,它還能起到提示文檔性質以及進行相關說明的作用。那麼我們如何給Word文檔添加水印呢?本文將通過Java程式碼,以編程的方式給Word文檔添加水印。以下是具體步驟及方法,並附上Java程式碼供大家參考,希望這篇文章能對大家有所裨益。

  • 給Word文檔添加多行文字水印
  • 給Word文檔添加文字水印
  • 給Word文檔添加圖片水印

程式環境:

方法1:手動引入。將 Free Spire.Doc for Java 下載到本地,解壓,找到lib文件夾下的Spire.Doc.jar文件。在IDEA中打開如下介面,將本地路徑中的jar文件引入Java程式

方法2: 如果您想通過 Maven安裝,則可以在 pom.xml 文件中添加以下程式碼導入 JAR 文件。

<repositories>

        <repository>

            <id>com.e-iceblue</id>

            <url>https://repo.e-iceblue.cn/repository/maven-public/</url>

        </repository>

    </repositories>

<dependencies>

    <dependency>

        <groupId>e-iceblue</groupId>

        <artifactId>spire.doc.free</artifactId>

        <version>5.2.0</version>

    </dependency>

</dependencies>

給Word文檔添加多行文字水印

  • 創建一個 Document 實例。

  • 使用 Document.loadFromFile() 方法載入示例 Word 文檔。

  • 創建 ShapeObject 類的實例,並通過 ShapeObject.setWidth()、ShapeObject.setHeight()、ShapeObject. setVerticalPosition()、ShapeObject.setHorizontalPosition( )、ShapeObject.setRotation()、ShapeObject.getWordArt.setText()、ShapeObject.getWordArt.setFontFamily()、ShapeObject.setFillColor() 等方法設置形狀大小、位置、旋轉角度、水印文字、字體及顏色等。
  • for 循環遍歷所有 Section,通過 section.getHeadersFooters().getHeader() 方法獲取頁眉,如果頁眉有段落,取它第一個段落,並以 HeaderFooter.AddParagraph() 方法添加段落到頁眉。
  • 通過 for 循環以 ShapeObject. deepClone() 方法多次複製藝術字,並通過 ShapeObject.setVerticalPosition()  和 ShapeObject.setHorizontalPosition() 方法設置形狀位置排列。
  • 使用 Document.saveToFile() 方法保存文件。

完整程式碼

Java

import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.ShapeObject;

import java.awt.*;

public class WordWatermark {
    public static void main(String[] args) {
        //載入示例文檔
        Document doc = new Document();
        doc.loadFromFile("AI創意賽.docx");
        //添加藝術字並設置大小
        ShapeObject shape = new ShapeObject(doc, ShapeType.Text_Plain_Text);
        shape.setWidth(60);
        shape.setHeight(20);
        //設置藝術字文本內容、位置及樣式
        shape.setVerticalPosition(30);
        shape.setHorizontalPosition(20);
        shape.setRotation(315);
        shape.getWordArt().setFontFamily("黑體");
        shape.getWordArt().setText("內部使用");
        shape.setFillColor(Color.RED);
        shape.setLineStyle(ShapeLineStyle.Single);
        shape.setStrokeColor(new Color(192, 192, 192, 255));
        shape.setStrokeWeight(1);

        Section section;
        HeaderFooter header;
        for (int n = 0; n < doc.getSections().getCount(); n++) {
            section = doc.getSections().get(n);
            //獲取section的頁眉
            header = section.getHeadersFooters().getHeader();
            Paragraph paragraph;

            if (header.getParagraphs().getCount() > 0) {
                //如果頁眉有段落,取它第一個段落
                paragraph = header.getParagraphs().get(0);
            } else {
                //否則新增加一個段落到頁眉
                paragraph = header.addParagraph();
            }
            for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 3; j++) {
                    //複製藝術字並設置多行多列位置
                    shape = (ShapeObject) shape.deepClone();
                    shape.setVerticalPosition(50 + 150 * i);
                    shape.setHorizontalPosition(20 + 160 * j);
                    paragraph.getChildObjects().add(shape);
                }
            }
        }
        //保存文檔
        doc.saveToFile("添加多行文字水印.docx", FileFormat.Docx_2013);
    }
}

 

給Word文檔添加文字水印

  • 創建一個 Document 實例。

  • 使用 Document.loadFromFile() 方法載入示例 Word 文檔。

  • 使用 Document.getSections().get() 方法獲取第一節。

  • 創建一個 TextWatermark 實例。

  • 使用 TextWatermark 類提供的方法設置文本水印的文本、字體大小、顏色和布局。

  • 使用 Section.getDocument().setWatermark() 方法將文本水印添加到示例文檔。

  • 使用 Document.saveToFile() 方法保存文件。

Java程式碼

import com.spire.doc.*;
import com.spire.doc.documents.WatermarkLayout;
import java.awt.*;

public class WordTextWatermark {
    public static void main(String[] args) {
        //創建一個Document實例
        Document document = new Document();

        //載入示例 Word 文檔
        document.loadFromFile("AI創意賽.docx");

        //獲取第一節
        Section section = document.getSections().get(0);

        //創建一個 TextWatermark 實例
        TextWatermark txtWatermark = new TextWatermark();

        //設置文本水印格式
        txtWatermark.setText("機密文件");
        txtWatermark.setFontSize(40);
        txtWatermark.setColor(Color.red);
        txtWatermark.setLayout(WatermarkLayout.Diagonal);

        //將文本水印添加到示例文檔
        section.getDocument().setWatermark(txtWatermark);

        //保存文件
        document.saveToFile("添加文本水印.docx", FileFormat.Docx);
    }
}

給Word文檔添加圖片水印

  • 創建一個 Document 實例。

  • 使用 Document.loadFromFile() 方法載入示例 Word 文檔。

  • 創建一個 PictureWatermark 實例。

  • 使用 PictureWatermark.setPicture() 方法載入影像作為影像水印,然後使用 PictureWatermark.setScaling() 方法和 PictureWatermark.isWashout() 方法設置影像水印的縮放和沖洗屬性。

  • 使用 Document.setWatermark() 方法將影像水印添加到示例文檔中。

  • 使用 Document.saveToFile() 方法保存文件。

Java程式碼

import com.spire.doc.*;


public class WordImageWatermark {
    public static void main(String[] args)  throws Exception{
        //創建一個Document實例
        Document document = new Document();

        //載入示例 Word 文檔
        document.loadFromFile("AI創意賽.docx");

        //創建一個 PictureWatermark 實例
        PictureWatermark picture = new PictureWatermark();

        //設置影像水印格式
        picture.setPicture("印章.png");
        picture.setScaling(100);
        picture.isWashout(false);

        //將影像水印添加到示例文檔中
        document.setWatermark(picture);

        //保存文件
        document.saveToFile("添加影像水印.docx",FileFormat.Docx );
    }
}

—謝謝您的觀看—