java操作word,添加页眉,页眉图片,替换书签,添加水印(全)
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,添加页眉,页眉图片,替换书签,添加水印(全)相关推荐
- java操作word文档(文字,图片,表格添加以及替换操作)
注:本文由于个人工作需要,有对多个他人博文进行借鉴,但是多数博文都只是讲到了小部分,例如图片/表格的操作,都只有根据书签进行替换,比较片面,本人有总结到根据文字进行图片/表格的替换,希望可以帮到更多有 ...
- Poi 操作Word文档设置页边距 解决CTPageMar类找不到
Poi操作Word文档设置页边距 CTPageMar类找不到 已解决 在百度上搜了一顿,找到了相关的解决方案,但是缺失了一个类,在百度怎么也找不到! 给大家一个参考数据 1厘米≈567 CTSectP ...
- Java操作word文档将docx转换为pdf格式
Java操作word文档将docx转换为pdf格式 一.整体说明 在上传 Office 课件时,格式有:doc,docx,xls,xlsx,ppt,pptx,程序需要将其 转换成 pdf 格式, 才能 ...
- java操作word
前言 使用java操作word使用的是java开源项目docx4j,在学习docx的使用过程中,参考了大牛的链接,下面放上我参考过的网址: http://blog.csdn.net/zhyh1986/ ...
- Java操作word文件的工具选择
Java操作word文件的工具选择 使用Java语言,创建doc.docx.excel.pdf等文档,并对文档进行一系列操作. Spire.Doc for Java https://blog.csdn ...
- java 操作execl添加边框
java 操作execl添加边框 使用poi导出execl时想要有网格的样式时,可以使用下面的方法进行对execl添加边框,下面的方法会保留原execl模板设置的样式 /*** 抽取的实现粗边框的方法 ...
- Java操作word模板文件
关于导出word文档,之前想过用ireport但模板文件比较复杂不容易画.所以采取了Java操作word文件,替换word中的元素方法 模板文件如下 单位名称:$ACCTNAME$ NO: $SN$ ...
- java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...
Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...
- java 模板 word转pdf 可分页 带图片
java 模板 word转pdf 可分页 带图片 之前写过一个简单的案例,但是在项目中完全不能满足客户的需求,所以重新用啦一种方式来写,采用了word转换pdf的方式,这种经过不断研究,满足了可分页, ...
最新文章
- DSP28335声音降噪(未完成)
- C++中运算符重载需要遵循的规则
- Netbeans配置Java SE嵌入式平台(树莓派)
- u盘驱动 内核代码阅读 2.6.11.12版本
- scipy的一些函数名
- HTML特殊转义字符对照表
- 快慢指针寻找循环节点
- Azure人工智能认知服务(AI·机器学习)
- android 工作日,如何在Android上重复警报工作日
- JavaScript-基础入门.0014.JavaScript内置对象
- 08年冬季足协代表VS三水喜健友谊赛
- MPA是什么意思?一MPA简介和MPA地位
- linux 删除in链接,linux - 从TCP_IN删除端口不会从CSF上的外部流量关闭它 - 堆栈内存溢出...
- html5 canvas系列教程-像素操作(反色,黑白,亮度,复古,蒙版,透明)
- NFS配置及开机自动挂载
- php判断是不是iphone访问,php基于http协议访问,判断访问来源iphone,android,微信浏览器,pc电脑...
- mysql数据库永久链接_PHP使用数据库永久连接方式(mysql_pconnect)操作MySQL的是与非...
- 用【花生壳】穿透内网主机运用dai搭建校园实现访问外网访问只有学校内网的教务系统
- python json模块_python json模块使用详情
- c++算法的上界下界