java poi 水印,使用Apache POI在Word文档中添加水印
时间: 2024-03-10 21:43:32 浏览: 255
可以使用Apache POI在Word文档中添加水印。下面是添加水印的示例代码:
```java
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
public class AddWatermarkToWord {
public static void main(String[] args) throws IOException {
// 读取模板文件
InputStream is = AddWatermarkToWord.class.getResourceAsStream("template.docx");
XWPFDocument doc = new XWPFDocument(is);
// 添加水印
for (XWPFParagraph p : doc.getParagraphs()) {
for (XWPFRun r : p.getRuns()) {
String text = r.getText(0);
if (text != null && text.contains("水印")) {
r.setText(text.replace("水印", ""), 0);
r.getCTR().addNewRPr().addNewNoProof();
r.getCTR().getRPr().addNewColor().setVal("C0C0C0");
r.getCTR().getRPr().addNewSz().setVal(48L);
r.getCTR().getRPr().addNewRFonts().setAscii("宋体");
r.getCTR().getRPr().addNewRFonts().setHAnsi("宋体");
r.getCTR().getRPr().addNewRFonts().setCs("宋体");
r.getCTR().getRPr().addNewVertAlign().setVal(org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalAlignRun.SUPERSCRIPT);
}
}
}
// 保存文档
FileOutputStream out = new FileOutputStream("output.docx");
doc.write(out);
out.close();
doc.close();
}
}
```
在上面的代码中,我们首先读取一个模板文件 `template.docx`,然后遍历文档中的每个段落和运行,找到包含“水印”的文本,然后设置文本的格式,使其成为一个水印。最后将修改后的文档保存到 `output.docx` 文件中。
值得注意的是,上面的代码只能在使用 docx 格式的 Word 文档上添加水印,如果要在使用 doc 格式的 Word 文档上添加水印,可以使用 HWPF API。
阅读全文