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. DSP28335声音降噪(未完成)
  2. C++中运算符重载需要遵循的规则
  3. Netbeans配置Java SE嵌入式平台(树莓派)
  4. u盘驱动 内核代码阅读 2.6.11.12版本
  5. scipy的一些函数名
  6. HTML特殊转义字符对照表
  7. 快慢指针寻找循环节点
  8. Azure人工智能认知服务(AI·机器学习)
  9. android 工作日,如何在Android上重复警报工作日
  10. JavaScript-基础入门.0014.JavaScript内置对象
  11. 08年冬季足协代表VS三水喜健友谊赛
  12. MPA是什么意思?一MPA简介和MPA地位
  13. linux 删除in链接,linux - 从TCP_IN删除端口不会从CSF上的外部流量关闭它 - 堆栈内存溢出...
  14. html5 canvas系列教程-像素操作(反色,黑白,亮度,复古,蒙版,透明)
  15. NFS配置及开机自动挂载
  16. php判断是不是iphone访问,php基于http协议访问,判断访问来源iphone,android,微信浏览器,pc电脑...
  17. mysql数据库永久链接_PHP使用数据库永久连接方式(mysql_pconnect)操作MySQL的是与非...
  18. 用【花生壳】穿透内网主机运用dai搭建校园实现访问外网访问只有学校内网的教务系统
  19. python json模块_python json模块使用详情
  20. c++算法的上界下界

热门文章

  1. 银行数字化转型导师坚鹏:金融科技如何赋能银行数字化营销
  2. 循环单链表的销毁操作
  3. iphone4拆机换屏宝典
  4. 蓝桥杯单片机DS18B02温度测量(小数点显示)
  5. Unity制作360°全景背景(内部可见shader)
  6. python怎么计算总值_python小白系列Day2—python基础以及pandas基础
  7. Linux统计当前目录下的所有文件数目
  8. Python3爬取今日头条文章视频数据,完美解决as、cp、_signature的加密方法(2020-6-29版)
  9. 工业机器人柔性自动化生产线实训系统
  10. 微信小程序之地图导航,路线规划