这个java工具类的作用是给word添加页码、文字水印、书签。写的时候用的是spire.doc for java。同时也去掉了组件自动生成的警告。还有组件需要的依赖也全盘奉上。

spire.doc的依赖

 <repositories><repository><id>com.e-iceblue</id><url>http://repo.e-iceblue.cn/repository/maven-public/</url></repository></repositories><dependency><groupId> e-iceblue </groupId><artifactId>spire.doc</artifactId><version>5.4.2</version></dependency>

poi的依赖

  <dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.poi.xwpf.converter.core</artifactId><version>2.0.1</version><exclusions><exclusion><artifactId>poi</artifactId><groupId>org.apache.poi</groupId></exclusion></exclusions></dependency><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.poi.xwpf.converter.xhtml</artifactId><version>2.0.1</version></dependency>

工具类

导入的包

package com.ejiaoyi.common.util;import com.spire.doc.*;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextSelection;
import com.spire.doc.documents.WatermarkLayout;
import com.spire.doc.fields.TextRange;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFDocument;import java.awt.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

工具类

@Slf4j
public class WordUtil {

插入水印的方法

   private static void insertTextWatermark(String dName,String Str) throws Exception {Document document = new Document();document.loadFromFile(dName);Section section=document.getSections().get(0);TextWatermark txtWatermark = new TextWatermark();txtWatermark.setText(Str);txtWatermark.setFontSize(40);txtWatermark.setColor(Color.RED);txtWatermark.setLayout(WatermarkLayout.Diagonal);section.getDocument().setWatermark(txtWatermark);document.saveToFile(dName, FileFormat.Docx_2010);clean(dName);}

插入页码的方法

    public static void insertHeaderFooter(String dName) throws Exception {com.spire.doc.Document doc = new com.spire.doc.Document(dName);//清除页码doc.getSections().get(1).getHeadersFooters().getFooter().getChildObjects().clear();//添加页码到第一节//获取第一个节中的页脚HeaderFooter footer = doc.getSections().get(1).getHeadersFooters().getFooter();//添加段落到页脚Paragraph footerParagraph = footer.addParagraph();//添加文字、页码域和总页数域到段落footerParagraph.appendField("page number", FieldType.Field_Page);int pageCount = doc.getPageCount() - 1;footerParagraph.appendText("/" + pageCount);//将段落居中footerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);doc.getSections().get(1).getPageSetup().setRestartPageNumbering(true);doc.getSections().get(1).getPageSetup().setPageStartingNumber(1);//保存文档doc.saveToFile(dName, FileFormat.Docx_2010);clean(dName);}

插入书签的方法

 public static void insertBookMarks(String dName, List<String> stringList) throws Exception {for (String str : stringList) {insertBookmarkToCharacter(dName, str);}}public static void insertBookmarkToCharacter(String dName, String str) throws Exception {//加载文档com.spire.doc.Document doc = new com.spire.doc.Document();doc.loadFromFile(dName);if (str.equals(REPORT)) {//获取第三节com.spire.doc.Section section = doc.getSections().get(2);//将指定名称的书签插入指定段落section.getParagraphs().get(0).appendBookmarkStart(str);section.getParagraphs().get(2).appendBookmarkEnd(str);} else {//查找指定字符串TextSelection textSelection = doc.findString(str, false, false);TextRange range = textSelection.getAsOneRange();com.spire.doc.documents.Paragraph para = range.getOwnerParagraph();int index = para.getChildObjects().indexOf(range);//添加书签com.spire.doc.BookmarkStart start = new com.spire.doc.BookmarkStart(doc, str);com.spire.doc.BookmarkEnd end = new com.spire.doc.BookmarkEnd(doc, str);para.getChildObjects().insert(index, start);para.getChildObjects().insert(index + 2, end);}//保存文档doc.saveToFile(dName, FileFormat.Docx_2013);
//        doc.dispose();clean(dName);}

清除警告的方法

    public static void clean(String dName) throws Exception {InputStream inputStream = null;String out_path = dName;//加载Word文档com.spire.doc.Document document = new com.spire.doc.Document(dName);if (dName.endsWith(".doc")) {inputStream = new FileInputStream(out_path);HWPFDocument hwpfDocument = new HWPFDocument(inputStream);//以上Spire.Doc 生成的文件会自带警告信息,这里来删除Spire.Doc 的警告//hwpfDocument.delete() 该方法去掉文档指定长度的内容hwpfDocument.delete(0, 70);//输出word内容文件流,输出路径位置OutputStream os = new FileOutputStream(out_path);try {hwpfDocument.write(os);} catch (Exception e) {e.printStackTrace();} finally {hwpfDocument.close();os.close();inputStream.close();}} else if (dName.endsWith(".docx")) {inputStream = new FileInputStream(dName);XWPFDocument old_document = new XWPFDocument(inputStream);//以上Spire.Doc 生成的文件会自带警告信息,这里来删除Spire.Doc 的警告old_document.removeBodyElement(0);//输出word内容文件流,输出路径位置OutputStream os = new FileOutputStream(dName);try {old_document.write(os);} catch (Exception e) {e.printStackTrace();} finally {document.close();os.close();inputStream.close();}}}

实现

//实现public static void main(String[] args) throws Exception {//水印insertTextWatermark("D:\\text.docx","xxx");
//页码WordUtil.insertHeaderFooter("D:\\text.docx");//书签WordUtil.insertBookmarkToCharacter("D:\\text.docx","xxx表");ArrayList<String> list = new ArrayList<>();list.add("xxxx");list.add("xxxxxx");WordUtil.insertBookMarks("D:\\Report.docx", list);}
}

                        
一些小笔记,一起学习,一起交流( •̀ ω •́ )✧有用记得O(∩_∩)O点赞~

使用spire.doc for java为word添加页码、文字水印、书签(去除警告信息)相关推荐

  1. spire.doc 让java操作word文档更简单优雅

    Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建.读取.编辑.转换和打印等功能集成到自己的 Java 应用程序中.作为一款完 ...

  2. spire doc for java 设置word中图片大小

    代码如下,doc就是Document对象 SectionCollection sections = doc.getSections();for (int i = 0; i < sections. ...

  3. java使用Spire.Doc生成的word文件去除水印(头部的警告信息)

    1.需求 通过word模板和库表中数据动态生成word文档. word操作工具本身自带word转xml(直接另存为xml即可). 但是需求明确了,只能用word模板,也不允许用户手动从word转xml ...

  4. Java给Word添加目录

    文章目录 Java现有Word文档添加目录 1.手动设置大纲级别并添加目录 2.通过域代码添加目录 Java现有Word文档添加目录 本篇文章将介绍如何使用Spire.Doc for Java添加Wo ...

  5. Java 给Word添加印章

    一.概述 本文以Java程序代码展示如何给Word文档添加印章,这里添加的印章为.png格式的图片,添加印章即在Word中的指定位置添加印章图片. 基本思路:加载word文档,获取段落,在段落中插入图 ...

  6. Spire.Doc for Java的jar包、maven库-全套free资源

    Spire.Doc for Java的jar包.maven依赖-全套free资源 官方代码学习文档 官方免费jar包和maven依赖 Maven依赖:(3.88以下,不支持两个文章对照) e-iceb ...

  7. java提取word中的文字_Java 提取Word中的文本和图片

    本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...

  8. java为word添加水印,图片水印和文字水印

    java为word添加水印,图片水印和文字水印 jdk1.5及以上 所需jar包:Spire.Office.jar 或 Spire.Doc.jar jar包下载:https://www.e-icebl ...

  9. Java 实现word 中写入文字图片的解决方案

    Java 实现word 中写入文字图片的解决方案 参考文章: (1)Java 实现word 中写入文字图片的解决方案 (2)https://www.cnblogs.com/jianguang/p/57 ...

  10. 用PDF格式协议的方式给PDF文档添加透明文字水印

    用PDF格式协议的方式给PDF文档添加透明文字水印 *有情提示:本文适合有一定pdf格式协议基础的人阅读. 一.生成一个HelloWorld.pdf 首先,为了方便介绍,我们先写一个Helloworl ...

最新文章

  1. 思科预计全球云数据流量将以66%的混合年增长率递增
  2. git push 推送大文件失败的处理办法
  3. 一步步实现:springbean的生命周期测试代码
  4. cat /proc/maps 进程内存映射【转】
  5. sap中用函数增加断点(break point)
  6. Windows 8常用快捷键
  7. 微软 python教程_最强福利——来自微软的Python学习教程(开发指南)
  8. 最长公共子序列模板(LCS)和LICS模板
  9. ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的?...
  10. 不是书评 :《我是一只IT小小鸟》
  11. 用Navicat for MySQL往数据表中添加数据时汉字出现乱码
  12. 所有锁的unlock要放到try{}finally{}里,不然发生异常返回就丢了unlock了
  13. 正则化、岭回归与LASSO回归(套索回归)
  14. CSS实现自适应下保持宽高比
  15. 杀毒软件可以查杀所有计算机病毒吗,杀毒软件可以查杀所有病毒吗
  16. 电脑有网但打不开网页怎么办?
  17. 新时达电梯服务器维修,常见的新时达电梯维修时问题分析
  18. java程序员i5 i7_买电脑选择i5还是i7?很多人被忽悠了,专业人士说出了3点实话!...
  19. java默认字体_设置 Java 系统的默认字体
  20. 火狐、chrome浏览器过滤网页广告设置过程

热门文章

  1. 三基色配色表java_【调色】颜色配色表 适合重彩搭配用
  2. 计算机监控系统sacad,太阳能热泵多功能复合机(sahpm)计算机监控系统实现方法研究-机械电子工程专业论文.docx...
  3. python阿拉伯数字转换为英文_python实现将英文单词表示的数字转换成阿拉伯数字的方法...
  4. android 10.0禁用电源键(屏蔽关机短按长按事件)
  5. c语言入门自学mobi,算法精解:C语言描述[AZW3][EPUB][MOBI][23.00MB]
  6. 【译】3D打印:介绍
  7. TQ2440使用DNW烧录配置流程详解
  8. pip:Could not fetch URL ***: There was a problem confirming the ssl certificate: HTTPSConnectionPool
  9. codeforces 417D. Cunning Gena 状压dp
  10. 窥视Google Chrome OS