Java 如何添加和刪除Word文檔水印
來源:SegmentFault 思否社區(qū)
作者:Tina_Tang
在日常生活中,我們經(jīng)常能看到許多廣告文件的字體后面印著公司的名稱或logo,也能在一些保密文件的正文后看到“機(jī)密”等字樣。這些都是給文檔添加水印所得,但很多人不知道如何不利用Microsoft Office而僅用Java代碼來添加水印。
本文將通過以下幾部分來詳細(xì)講解關(guān)于Word文檔水印問題。
添加文本水印 添加多行文本水印 添加圖片水印 刪除水印
代碼測試環(huán)境:
Intellij Idea2019.1 JDK 1.8.0 Spire.Doc.jar
Jar包獲取及導(dǎo)入:
方式1:通過官網(wǎng)下載獲取Free Spire.Doc for Java產(chǎn)品包,解壓后將lib文件夾下的Spire.Doc.jar手動(dòng)導(dǎo)入IDEA中。
方式2:創(chuàng)建一個(gè)Maven應(yīng)用程序,在pom.xml文件中配置Maven倉庫路徑及指定Spire.Doc for Java的Maven依賴。
com.e-iceblue http://repo.e-iceblue.cn/repository/maven-public/ e-iceblue spire.doc.free 2.7.3
配置完成后,在IDEA中,您需點(diǎn)擊"Import Changes"即可導(dǎo)入JAR包;在Eclipse中,則需要點(diǎn)擊"Save"按鈕。
代碼示例
示例1:添加文本水印
使用insertTextWatermark方法可為Word文檔添加文本水印,同時(shí)可設(shè)置文本水印字體的內(nèi)容,大小,顏色及布局。
import com.spire.doc.*;
import com.spire.doc.documents.WatermarkLayout;
import java.awt.*;
public class TextWatermark {
public static void main(String[] args) {
//加載Word示例文檔
Document document = new Document("C:\\Users\\Test1\\Desktop\\Sample.docx");
//插入文本水印
insertTextWatermark(document.getSections().get(0));
//保存文檔
document.saveToFile("output/TextWatermark.docx", FileFormat.Docx);
}
//設(shè)置文本水印內(nèi)容,字體大小,顏色和布局
private static void insertTextWatermark(Section section) {
com.spire.doc.TextWatermark txtWatermark = new com.spire.doc.TextWatermark();
txtWatermark.setText("內(nèi)部使用");
txtWatermark.setFontSize(60);
txtWatermark.setColor(Color.red);
txtWatermark.setLayout(WatermarkLayout.Diagonal);
section.getDocument().setWatermark(txtWatermark);
}
}
添加效果:

示例2:添加多行文本水印
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.HeaderFooter;
import com.spire.doc.Section;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.ShapeLineStyle;
import com.spire.doc.documents.ShapeType;
import com.spire.doc.fields.ShapeObject;
import java.awt.*;
public class multiTextWatermark {
public static void main(String[] args) {
//加載示例文檔
Document doc = new Document();
doc.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.docx");
//添加藝術(shù)字并設(shè)置大小
ShapeObject shape = new ShapeObject(doc, ShapeType.Text_Plain_Text);
shape.setWidth(60);
shape.setHeight(20);
//設(shè)置藝術(shù)字文本內(nèi)容、顏色,位置及樣式
shape.setVerticalPosition(30);
shape.setHorizontalPosition(20);
shape.setRotation(315);
shape.getWordArt().setText("內(nèi)部使用");
shape.setFillColor(Color.green);
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 paragraph1;
for (int i = 0; i < 4; i++) {
//添加段落到頁眉
paragraph1 = header.addParagraph();
for (int j = 0; j < 3; j++) {
//復(fù)制藝術(shù)字并設(shè)置多行多列位置
shape = (ShapeObject) shape.deepClone();
shape.setVerticalPosition(50 + 150 * i);
shape.setHorizontalPosition(20 + 160 * j);
paragraph1.getChildObjects().add(shape);
}
}
}
//保存文檔
doc.saveToFile("output/multi-lineTextwatermark.docx", FileFormat.Docx_2013);
}
}

示例3:添加圖片水印
import com.spire.doc.*;
public class ImageWatermark {
public static void main(String[] args) {
//加載Word文檔
Document doc = new Document();
doc.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.docx");
//創(chuàng)建PictureWatermark實(shí)例
PictureWatermark imageWatermark = new PictureWatermark();
//設(shè)置水印圖片(可以是本地圖片也可以來自流)
imageWatermark.setPicture("C:\\Users\\Test1\\Desktop\\logo.png");
imageWatermark.isWashout(false);
//添加水印圖片到文檔
doc.setWatermark(imageWatermark);
//保存
doc.saveToFile("output/ImageWatermark.docx", FileFormat.Docx_2013);
}
}

示例4:刪除Word文檔水印
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
public class DeleteWatermark {
public static void main(String[] args) {
//創(chuàng)建Document實(shí)例
Document doc = new Document();
//加載Word文檔
doc.loadFromFile("C:\\Users\\Test1\\Desktop\\ImageWatermark.docx");
//將水印設(shè)置為空
doc.setWatermark(null);
//保存文檔
doc.saveToFile("output/RemoveWatermark.docx", FileFormat.Docx_2013);
}
}
總結(jié)

