在日常生活中怪瓶,我們經(jīng)常能看到許多廣告文件的字體后面印著公司的名稱或logo阅束,也能在一些保密文件的正文后看到“機(jī)密”等字樣展姐。這些都是給文檔添加水印所得,但很多人不知道如何不利用Microsoft Office而僅用Java代碼來添加水印俩莽。
本文將通過以下幾部分來詳細(xì)講解關(guān)于Word文檔水印問題。
1乔遮、添加文本水印
2扮超、添加多行文本水印
3、添加圖片水印
4、刪除水印
代碼測試環(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ǎo)入IDEA中璧疗。
方式2:創(chuàng)建一個(gè)Maven應(yīng)用程序,在pom.xml文件中配置Maven倉庫路徑及指定Spire.Doc for Java的Maven依賴馁龟。
<repositories>?
?<repository>
?<id>com.e-iceblue</id>?
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>?
?</repository>?
?</repositories>
?<dependencies>
?<dependency>
?<groupId> e-iceblue </groupId>?
<artifactId>spire.doc.free</artifactId>
?<version>2.7.3</version>
?</dependency>?
?</dependencies>
配置完成后崩侠,在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.TextWatermarktxtWatermark =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:添加多行文本水印
Free Spire.Doc for Java除了支持給Word文檔添加單個(gè)文本水印以外涯塔,還可通過在Word頁眉中添加藝術(shù)字來實(shí)現(xiàn)添加多行文字水印肌稻。以下為具體代碼演示:
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:添加圖片水印
利用PictureWatermark方法來實(shí)現(xiàn)為Word文檔添加圖片水印的效果爹谭,圖片可通過本地上傳,同時(shí)也可是來自源榛搔。
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文檔水印
通過doc.setWatermark(null)可將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\\TextWatermark.docx");
//將水印設(shè)置為空
doc.setWatermark(null);
//保存文檔
doc.saveToFile("output/RemoveWatermark.docx", FileFormat.Docx_2013);
??? }
}
總結(jié)
通過以上代碼示例,可準(zhǔn)確實(shí)現(xiàn)通過Java代碼用程序?qū)⒅付ǖ膱D片/文本當(dāng)做水印插入到指定的word文檔中践惑。若對代碼或產(chǎn)品包導(dǎo)入有任何疑問腹泌,可評論或私信。