java操作word文档,添加页眉文本,页眉图片,替换书签,水印

原模板截图:

生成后的文档效果截图:

第一步:引入maven

<dependency><groupId>spire.doc</groupId><artifactId>spire.doc</artifactId><version>2.6.2</version>
</dependency>

第二步:编写操作类,直接上代码,方法都有说明

package com.example.poi_test.util;import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextRange;
import lombok.Data;import java.io.FileInputStream;
import java.io.IOException;
import java.util.Map;/*** @author ShenGuiSong* @create 2020-03-09 17:35*/
@Data
public class WordUtil0309 {private Document doc = null;/*** 替换书签* @param bookMarks*/public void replaceBookMark(Map<String,String> bookMarks){//定位到书签"SimpleBookmark"BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(doc);if(bookMarks==null || bookMarks.size()<1) return;for(Map.Entry<String,String> entry:bookMarks.entrySet()){String key=entry.getKey();bookmarkNavigator.moveToBookmark(key);String value=entry.getValue();//使用文本替换原书签的内容, false表示不保留原来的格式bookmarkNavigator.replaceBookmarkContent(value, false);}}/*** 设置页边距* @param top* @param bottom* @param left* @param right*/public void setMargin(Float top,Float bottom,Float left,Float right){Section section = doc.getSections().get(0);//设置页边距if (top != null) {section.getPageSetup().getMargins().setTop(top);}if (bottom != null) {section.getPageSetup().getMargins().setBottom(bottom);}if (left != null) {section.getPageSetup().getMargins().setLeft(left);}if (right != null) {section.getPageSetup().getMargins().setRight(right);}}/*** 添加图片到页眉* @param pic               图片地址* @param horizontalOffset  水平偏移量* @param verticalPosition  垂直偏移量* @param align             图片依左右边距/上下边距对齐方式* @param picWidth          图片宽度* @param picHeigth         图片高度*/public void addPicToHeader(String pic,Float horizontalOffset,Float verticalPosition,ShapeHorizontalAlignment align,Float picWidth,Float picHeigth ) {Section section = doc.getSections().get(0);HeaderFooter header = section.getHeadersFooters().getHeader();DocPicture headerPicture=null;//添加段落到页眉//插入图片到页眉的段落if(header.getLastParagraph()!=null){headerPicture=header.getFirstParagraph().appendPicture(pic);}else{headerPicture=header.addParagraph().appendPicture(pic);}headerPicture.setWidth(picWidth);headerPicture.setHeight( picHeigth );//设置图片水平位置if(horizontalOffset !=null && verticalPosition!=null ){headerPicture.setHorizontalPosition(horizontalOffset);headerPicture.setVerticalPosition(verticalPosition);}else{headerPicture.setHorizontalAlignment(align);}//设置文字环绕方式headerPicture.setTextWrappingStyle(TextWrappingStyle.Behind);}/*** 添加水印* @param pic* @param horizontalOffset* @param verticalPosition* @param picWidth* @param picHeigth*/public void addWater(String pic,Float horizontalOffset,Float verticalPosition,Float picWidth,Float picHeigth ) {Section section = doc.getSections().get(0);HeaderFooter header = section.getHeadersFooters().getHeader();DocPicture headerPicture=null;if(header.getLastParagraph()!=null){headerPicture=header.getFirstParagraph().appendPicture(pic);}else{headerPicture=header.addParagraph().appendPicture(pic);}headerPicture.setWidth(picWidth);headerPicture.setHeight( picHeigth );//设置图片水平位置headerPicture.setHorizontalPosition(horizontalOffset);headerPicture.setVerticalPosition(verticalPosition);//设置文字环绕方式headerPicture.setTextWrappingStyle(TextWrappingStyle.Behind);}/*** 添加文本到页眉* @param headerContent*/public void addTextToHeader(String headerContent) {Section section = doc.getSections().get(0);HeaderFooter header = section.getHeadersFooters().getHeader();//添加段落到页眉Paragraph headerParagraph = header.addParagraph();//添加文字到页眉的段落TextRange text = headerParagraph.appendText(headerContent);text.getCharacterFormat().setFontName("宋体");text.getCharacterFormat().setFontSize(11);headerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Left);}/*** 获取WordUtil工具类实例* @param filePath* @return*/public static WordUtil0309 getInstance(String filePath){WordUtil0309 wordUtil=new WordUtil0309();try {//加载word示例文档wordUtil.doc = new Document();wordUtil.doc.loadFromFile(filePath);}catch (Exception e){System.out.println("读取文档失败");e.printStackTrace();}return wordUtil;}/*** 保存文档* @param outFilePath*/public void saveDocument(String outFilePath){try {doc.saveToFile(outFilePath);} catch (Exception e) {System.out.println("保存文档失败");e.printStackTrace();}}/*** 关闭流*/public void close(){try {if(doc!=null){doc.close();}} catch (Exception e) {e.printStackTrace();}}}

第三步 .测试调用

package com.example.poi_test.util;import com.spire.doc.Document;
import com.spire.doc.Section;
import com.spire.doc.ShapeHorizontalAlignment;
import com.spire.doc.documents.BookmarksNavigator;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextBodyPart;
import com.spire.doc.fields.TextRange;import java.text.SimpleDateFormat;
import java.util.*;/*** @author ShenGuiSong* @create 2019-10-19 16:33*/
public class Test {/*** 测试* @param args*/public static void main(String[] args) {WordUtil0309wordUtil=WordUtil0309.getInstance("C:/template/boke.docx");Map<String,String> map=new HashMap<>();map.put("天气","晴");map.put("巡视主要工作内容","测试巡视主要工作内容");map.put("巡视施工管理人员情况","imya fdskfjsdkfjsdkfjsdf");map.put("日期","2020-03-09");wordUtil.replaceBookMark(map);wordUtil.setMargin(75f,null,null,null);//添加页头logowordUtil.addPicToHeader("c:/template/logo1.jpg",-25f,8f,null,25f,25f);//项目名称wordUtil.addTextToHeader("测试项目名称");//页头二维码Float width=wordUtil.getDoc().getSections().get(0).getPageSetup().getClientWidth();wordUtil.addPicToHeader("c:/template/qr.jpg",width-50f,-20f,null,60f,60f);//添加水印wordUtil.addWater("c:/template/water1.jpg",50f,100f,60f,60f);wordUtil.saveDocument("C:/template/0219/boke"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()).substring(8,14)+".docx");wordUtil.close();}
}

java操作word,添加页眉,页眉图片,替换书签,添加水印(全)相关推荐

  1. java操作word文档(文字,图片,表格添加以及替换操作)

    注:本文由于个人工作需要,有对多个他人博文进行借鉴,但是多数博文都只是讲到了小部分,例如图片/表格的操作,都只有根据书签进行替换,比较片面,本人有总结到根据文字进行图片/表格的替换,希望可以帮到更多有 ...

  2. Poi 操作Word文档设置页边距 解决CTPageMar类找不到

    Poi操作Word文档设置页边距 CTPageMar类找不到 已解决 在百度上搜了一顿,找到了相关的解决方案,但是缺失了一个类,在百度怎么也找不到! 给大家一个参考数据 1厘米≈567 CTSectP ...

  3. Java操作word文档将docx转换为pdf格式

    Java操作word文档将docx转换为pdf格式 一.整体说明 在上传 Office 课件时,格式有:doc,docx,xls,xlsx,ppt,pptx,程序需要将其 转换成 pdf 格式, 才能 ...

  4. java操作word

    前言 使用java操作word使用的是java开源项目docx4j,在学习docx的使用过程中,参考了大牛的链接,下面放上我参考过的网址: http://blog.csdn.net/zhyh1986/ ...

  5. Java操作word文件的工具选择

    Java操作word文件的工具选择 使用Java语言,创建doc.docx.excel.pdf等文档,并对文档进行一系列操作. Spire.Doc for Java https://blog.csdn ...

  6. java 操作execl添加边框

    java 操作execl添加边框 使用poi导出execl时想要有网格的样式时,可以使用下面的方法进行对execl添加边框,下面的方法会保留原execl模板设置的样式 /*** 抽取的实现粗边框的方法 ...

  7. Java操作word模板文件

    关于导出word文档,之前想过用ireport但模板文件比较复杂不容易画.所以采取了Java操作word文件,替换word中的元素方法 模板文件如下 单位名称:$ACCTNAME$ NO: $SN$ ...

  8. java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...

    Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...

  9. java 模板 word转pdf 可分页 带图片

    java 模板 word转pdf 可分页 带图片 之前写过一个简单的案例,但是在项目中完全不能满足客户的需求,所以重新用啦一种方式来写,采用了word转换pdf的方式,这种经过不断研究,满足了可分页, ...

最新文章

  1. iar代码优化影响运行速度吗_IAR中优化等级对Kinetis FGPIO执行速度的影响
  2. springMVC获取异步请求的参数,返回异步请求数据(json),跨域访问简单了解,文件上传,与Restful风格
  3. mysql安装教程8.0.22_mysql 8.0.22 安装配置方法图文教程
  4. mac lion 安装 mysql_mac osx下安装mysql
  5. linux命令小常识
  6. 螺旋天线有方向性吗_螺旋天线方向图
  7. 【面向对象】面向对象程序设计测试题5-Java中的对象交互测试题
  8. Shell生成随机uuid
  9. Mac Terminal终端光标的快捷键操作
  10. docker logstash_学会这一招,轻松测试 logstash 的配置文件
  11. Java多线程(一)——多线程实现方法和生命周期
  12. c语言交通灯程序闪烁,单片机交通灯闪烁程序
  13. java tracert_tracert-命令小结
  14. golang for嵌套循环中break 的注意事项和使用细节: break 语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块
  15. mysql面试-01
  16. 深度长文:智能手机的社会学研究
  17. vue2 项目中引入iconfont
  18. 有没有可操作的虚拟资源赚钱项目
  19. redis的MULTI与PIPELINE
  20. 华为od统一考试B卷【跳房子2】Python 实现

热门文章

  1. Netty,Nginx严重落后;网络IO框架最新性能排名
  2. 如何自动发送短信给女朋友
  3. 中国区块链生态联盟成立
  4. gin context 和 cancal 以及 done()
  5. SMOL:Jointly Optimizing Preprocessing and Inference for DNN-based Visual Analytics,VLDB,2020
  6. ArcGIS 要素融合工具(dissolve)使用方法
  7. 现在好多人耳朵上都爱一直带一副无线耳机,好奇他们都在听什么?
  8. (Windows) DISM备份还原
  9. 分布式服务框架——Dubbo
  10. input文本框的提示效果