使用spire.doc for java为word添加页码、文字水印、书签(去除警告信息)
这个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添加页码、文字水印、书签(去除警告信息)相关推荐
- spire.doc 让java操作word文档更简单优雅
Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建.读取.编辑.转换和打印等功能集成到自己的 Java 应用程序中.作为一款完 ...
- spire doc for java 设置word中图片大小
代码如下,doc就是Document对象 SectionCollection sections = doc.getSections();for (int i = 0; i < sections. ...
- java使用Spire.Doc生成的word文件去除水印(头部的警告信息)
1.需求 通过word模板和库表中数据动态生成word文档. word操作工具本身自带word转xml(直接另存为xml即可). 但是需求明确了,只能用word模板,也不允许用户手动从word转xml ...
- Java给Word添加目录
文章目录 Java现有Word文档添加目录 1.手动设置大纲级别并添加目录 2.通过域代码添加目录 Java现有Word文档添加目录 本篇文章将介绍如何使用Spire.Doc for Java添加Wo ...
- Java 给Word添加印章
一.概述 本文以Java程序代码展示如何给Word文档添加印章,这里添加的印章为.png格式的图片,添加印章即在Word中的指定位置添加印章图片. 基本思路:加载word文档,获取段落,在段落中插入图 ...
- Spire.Doc for Java的jar包、maven库-全套free资源
Spire.Doc for Java的jar包.maven依赖-全套free资源 官方代码学习文档 官方免费jar包和maven依赖 Maven依赖:(3.88以下,不支持两个文章对照) e-iceb ...
- java提取word中的文字_Java 提取Word中的文本和图片
本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...
- java为word添加水印,图片水印和文字水印
java为word添加水印,图片水印和文字水印 jdk1.5及以上 所需jar包:Spire.Office.jar 或 Spire.Doc.jar jar包下载:https://www.e-icebl ...
- Java 实现word 中写入文字图片的解决方案
Java 实现word 中写入文字图片的解决方案 参考文章: (1)Java 实现word 中写入文字图片的解决方案 (2)https://www.cnblogs.com/jianguang/p/57 ...
- 用PDF格式协议的方式给PDF文档添加透明文字水印
用PDF格式协议的方式给PDF文档添加透明文字水印 *有情提示:本文适合有一定pdf格式协议基础的人阅读. 一.生成一个HelloWorld.pdf 首先,为了方便介绍,我们先写一个Helloworl ...
最新文章
- 思科预计全球云数据流量将以66%的混合年增长率递增
- git push 推送大文件失败的处理办法
- 一步步实现:springbean的生命周期测试代码
- cat /proc/maps 进程内存映射【转】
- sap中用函数增加断点(break point)
- Windows 8常用快捷键
- 微软 python教程_最强福利——来自微软的Python学习教程(开发指南)
- 最长公共子序列模板(LCS)和LICS模板
- ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的?...
- 不是书评 :《我是一只IT小小鸟》
- 用Navicat for MySQL往数据表中添加数据时汉字出现乱码
- 所有锁的unlock要放到try{}finally{}里,不然发生异常返回就丢了unlock了
- 正则化、岭回归与LASSO回归(套索回归)
- CSS实现自适应下保持宽高比
- 杀毒软件可以查杀所有计算机病毒吗,杀毒软件可以查杀所有病毒吗
- 电脑有网但打不开网页怎么办?
- 新时达电梯服务器维修,常见的新时达电梯维修时问题分析
- java程序员i5 i7_买电脑选择i5还是i7?很多人被忽悠了,专业人士说出了3点实话!...
- java默认字体_设置 Java 系统的默认字体
- 火狐、chrome浏览器过滤网页广告设置过程
热门文章
- 三基色配色表java_【调色】颜色配色表 适合重彩搭配用
- 计算机监控系统sacad,太阳能热泵多功能复合机(sahpm)计算机监控系统实现方法研究-机械电子工程专业论文.docx...
- python阿拉伯数字转换为英文_python实现将英文单词表示的数字转换成阿拉伯数字的方法...
- android 10.0禁用电源键(屏蔽关机短按长按事件)
- c语言入门自学mobi,算法精解:C语言描述[AZW3][EPUB][MOBI][23.00MB]
- 【译】3D打印:介绍
- TQ2440使用DNW烧录配置流程详解
- pip:Could not fetch URL ***: There was a problem confirming the ssl certificate: HTTPSConnectionPool
- codeforces 417D. Cunning Gena 状压dp
- 窥视Google Chrome OS