Java 给Word不同页面设置不同背景
Word文档中,可直接通过【设计】-【页面颜色】页面颜色,通过Java代码可参考如下设置方法:
1. 设置单一颜色背景
doc.getBackground().setType(BackgroundType.Color);
doc.getBackground().setColor(Color.PINK);
2. 设置渐变背景
doc.getBackground().setType(BackgroundType.Gradient);
doc.getBackground().getGradient().setColor1(Color.white);
doc.getBackground().getGradient().setColor2(Color.green);
3. 设置图片背景
String img= "lye.png";
Document doc = new Document(input);
doc.getBackground().setType(BackgroundType.Picture);
doc.getBackground().setPicture(img);
但是通过这些方式添加的页面背景只能应用于整个文档页面,如果需要只对某些页面设置不同其他页面的背景,这种方法并不奏效。因此,本文总结了可实现多个页面设置不同背景的方法。
考虑到只需设置首页背景不同,或者多个页面不同背景的情况,简单分为了两种情况来介绍,但是方法都是类似的。
程序开发环境:
1. IDEA
2. jdk1.8.0
情况1:只需设置首页页面背景不同
【Java】
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextWrappingStyle;
import com.spire.doc.documents.VerticalOrigin;
import com.spire.doc.fields.DocPicture; public class DifferentPageBackground1 {
public static void main(String[] args) {
//加载Word测试文档
Document doc = new Document();
doc.loadFromFile("测试.docx"); //获取第一节
Section section = doc.getSections().get(0); //设置首页页眉页脚不同
section.getPageSetup().setDifferentFirstPageHeaderFooter(true); //获取首页页眉
HeaderFooter firstpageheader = section.getHeadersFooters().getFirstPageHeader();
firstpageheader.getParagraphs().clear();//清除首页页眉默认的段落格式(若不清除原有段落中的格式,生成的文档效果中页眉中有一条横线) //重新添加段落
Paragraph firstpara= firstpageheader.addParagraph(); //添加图片到段落,设置图片格式
DocPicture pic0 = firstpara.appendPicture("1.png");
pic0.setTextWrappingStyle(TextWrappingStyle.Behind);
pic0.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
pic0.setVerticalOrigin(VerticalOrigin.Top_Margin_Area); //获取页面宽度、高度
int width = (int) section.getPageSetup().getPageSize().getWidth();
int height = (int) section.getPageSetup().getPageSize().getHeight(); //设置图片大小,铺满页面
pic0.setWidth(width);
pic0.setHeight(height); //同理设置其他页面的页眉
HeaderFooter otherheader = section.getHeadersFooters().getHeader();
otherheader.getParagraphs().clear();
Paragraph otherpara = otherheader.addParagraph();
DocPicture pic1 = otherpara.appendPicture("2.png");
pic1.setTextWrappingStyle(TextWrappingStyle.Behind);
pic1.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
pic1.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
pic1.setWidth(width);
pic1.setHeight(height); //保存文档
doc.saveToFile("result.docx",FileFormat.Docx_2013);
doc.dispose();
}
}
情况2:设置多个页面背景不同
需要说明的是,给多个页面设置不同页面是基于不同节上设置的,因此需要在文档中设置分节(插入分节符),这里测试文档中已经设置了多个分节,如果需要代码设置分节可以参考插入分节符的方法:
Document doc = new Document();
doc.loadFromFile("测试.docx");
//在指定段落后添加分节符
Paragraph paragraph = doc.getSections().get(0).getParagraphs().get(5);
paragraph.insertSectionBreak(SectionBreakType.No_Break);
【Java】
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextWrappingStyle;
import com.spire.doc.documents.VerticalOrigin;
import com.spire.doc.fields.DocPicture; public class DifferentPageBackground2 {
public static void main(String[] args) {
//加载Word测试文档
Document doc = new Document();
doc.loadFromFile("测试.docx"); //获取第一节中的页眉,添加图片,调整图片格式,铺满页面
Section section1 = doc.getSections().get(0);
HeaderFooter header1 = section1.getHeadersFooters().getHeader();
header1.getParagraphs().clear();
Paragraph para1= header1.addParagraph();
DocPicture pic1 = para1.appendPicture("1.png");
pic1.setTextWrappingStyle(TextWrappingStyle.Behind);
pic1.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
pic1.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
int width = (int) section1.getPageSetup().getPageSize().getWidth();
int height = (int) section1.getPageSetup().getPageSize().getHeight();
pic1.setWidth(width);
pic1.setHeight(height); //同理设置第二节页眉中的图片
Section section2 = doc.getSections().get(1);
HeaderFooter header2 = section2.getHeadersFooters().getHeader();
header2.getParagraphs().clear();
Paragraph para2= header2.addParagraph();
DocPicture pic2 = para2.appendPicture("2.png");
pic2.setTextWrappingStyle(TextWrappingStyle.Behind);
pic2.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
pic2.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
pic2.setWidth(width);
pic2.setHeight(height); //同理设置第三节中的页眉中的图片
Section section3 = doc.getSections().get(2);
HeaderFooter header3 = section3.getHeadersFooters().getHeader();
header3.getParagraphs().clear();
Paragraph para3= header3.addParagraph();
DocPicture pic3 = para3.appendPicture("3.png");
pic3.setTextWrappingStyle(TextWrappingStyle.Behind);
pic3.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
pic3.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
pic3.setWidth(width);
pic3.setHeight(height); //保存文档
doc.saveToFile("result2.docx",FileFormat.Docx_2013);
doc.dispose();
}
}
总结
对Word中的不同页面设置不同背景,需要几个重要步骤:
1. 设置文档分节
2. 设置页眉图片,并调整图片格式以铺满整个页面
3. 运行程序生成文档
同理,在设置Word水印时,默认的方法也只能生成一个水印文字效果,要实现水印平铺的效果,也可以通过在页眉中添加文字的方法来实现,需要的可以参考这篇文章,里面介绍了如何来实现,这里不作赘述了。
Java 给Word不同页面设置不同背景的更多相关文章
- C# 给Word不同页面设置不同背景
给Word文档设置背景时,通常只能针对整篇文档设置统一的背景,如果需要对某些页面单独设置背景,则需要通过另外的方式来实现.本文通过C# 程序代码演示如何来实现.并附VB.NET代码作参考. 思路:通过 ...
- Java解析word文档
背景 在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何解析word文档. 因为系统如果无法智能的解析word,那么就只能通过其他方式手动录入word内容,效率低下,而且人工成本和录入出错率 ...
- Linux系统下Java 转换Word到PDF时,结果文档内容乱码的解决方法
本文分享在Linux系统下,通过Java 程序代码将Word转为PDF文档时,结果文档内容出现乱码该如何解决.具体可参考如下内容: 1.问题出现的背景 在Windows系统中,使用Spire.Doc ...
- Java 给Word每一页设置不同文字水印效果
Word中设置水印时,可预设的文字或自定义文字设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法.下面,将以Ja ...
- java 读写word java 动态写入 模板文件
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import ja ...
- java导出word的6种方式(复制来的文章)
来自: http://www.cnblogs.com/lcngu/p/5247179.html 最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. 目前 ...
- Java 实现word 中写入文字图片的解决方案
JAVA生成WORD文件的方法目前有以下两种方式: 一种是jacob 但是局限于windows平台 往往许多JAVA程序运行于其他操作系统 在此不讨论该方案; 一种是poi但是他的excel处理很程序 ...
- java操作word,excel,pdf
在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...
- [Java] Java读取Word文档
前言 最近需要做一些NLP 方面的工作,使用的是Java,在此总结一下使用Java读取Word(.doc)格式文件的方法. Apache基金会非常厉害,开源工具包POI就可以处理微软家的文档,甚至包括 ...
随机推荐
- 钩子与API截获
http://www.pudn.com/Download/type/id/19.html
- C++libcurl的使用
一.libcurl描述: 在curl的官方网站 **http://curl.haxx.se/download.html** 提供编译好libcurl包, 最后写一个demod工程,演示下libcur ...
- C# 数据结构与算法 操作系统原理 计算机网络原理 数据库开发学习
https://www.cnblogs.com/edisonchou/p/3843287.html PDF https://files.cnblogs.com/files/netlock/%E6%95 ...
- npm 各种常用命令
全局删除 node-gyp npm -g uninstall node-gyp 再次安装依赖 npm install 更改包内容后重建 npm rebuild 清除缓存 npm cache clean ...
- java中使用IO流复制文件
public class TestIO { public static void main(String[] args) { // TODO Auto-generated method stub tr ...
- Java数组的三种打印方式
1.数组的输出的三种方式 一维数组: 定义一个数组 int[] array = {1,2,3,4,5}; (1)传统的for循环方式 for(int i=0;i<array.length;i++ ...
- MRP物料需求计划
1.重订货点的采购计划. 计算方式:再订货点的库存数量 = 安全库存 + 采购提前期 * 每天消耗的数量 一旦库存数量触及再订货点的库存数量,需触发采购订单订购物料,理想的情况下 ,下次到采购订单收货 ...
- hashmap有一个loadFactory为什么是0.75从泊松分布解析看看
简述: 写这篇文章是看到网上的一篇面试题,有面试官问hashmap有一个loadFactory为什么是0.75 我先解释一下 0.75上下文,当一个hashmap初始数组大小暂时不考虑扩容情况,初始 ...
- Spring—SSJ集成&声明式事务管理
1. 课程介绍 1. SSJ集成;(掌握) 2. 声明式事务管理;(掌握) 什么是三大框架 2.1. ssh Struts/Struts2 Spring Hibernate 2.2. ss ...
- 第十五章节 BJROBOT cartographer 算法构建地图【ROS全开源阿克曼转向智能网联无人驾驶车】
建地图前说明:请确保你的小车已经校正好 IMU.角速度.线速度,虚拟机配置好 ROS 网络的前提进行,否则会造成构建地图无边界.虚拟机端无法正常收到小车主控端发布的话题数据等异常情况!! 1.把小车平 ...