Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3079746
  • 博文数量: 167
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1673
  • 用 户 组: 普通用户
  • 注册时间: 2017-10-27 10:00
文章分类

全部博文(167)

文章存档

2022年(14)

2021年(31)

2020年(19)

2019年(48)

2018年(45)

2017年(9)

我的朋友

分类: Java

2022-02-11 14:05:22

Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法。下面,将以Java代码为例,对Word每一页设置不同的图片水印效果作详细介绍。

方法思路

在给Word每一页添加水印前,首先需要在Word文档每一页正文的最后一个字符后面插入“连续”分节符,然后在每一节的页眉段落里添加水印图片,并设置图片的坐标位置、对齐方式、衬于文字下方等。最后保存文档。

Jar引入

Maven下载导入,可进行如下配置pom.xml

  1. <repositories>
  2.         <repository>
  3.             <id>com.e-iceblue</id>
  4.             <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
  5.         </repository>
  6.     </repositories>
  7. <dependencies>
  8.     <dependency>
  9.         <groupId>e-iceblue</groupId>
  10.         <artifactId>spire.doc.free</artifactId>
  11.         <version>5.1.0</version>
  12.     </dependency>
  13. </dependencies>


Java代码

给每页添加图片水印时,可参考如下步骤:


  • 创建Document类的对象,并通过Document.loadFromFile(String fileName)方法加载Word文档。
  • 通过Document.getSections().get(int index)方法获取指定节。
  • 通过Section.getHeadersFooters().getHeader()方法获取页眉,HeaderFooter.addParagraph()方法添加段落到页眉。
  • 通过Paragraph.appendPicture(String filePath)方法添加图片到段落,DocPicture.setVerticalPosition(float value)方法设置水印图片位置,DocPicture.setHorizontalAlignment(ShapeHorizontalAlignment value)方法设置图片对齐方式。
  • 最后,通过Document.saveToFile(String fileName, FileFormat fileFormat)方法保存文档。


不同页面中设置不一样的图片水印效果,只需要获取该页面对应的节,然后参考上述用到的方法来添加即可。

 

下面是完整的Java代码示例:
  1. import com.spire.doc.*;
  2. import com.spire.doc.documents.Paragraph;
  3. import com.spire.doc.documents.TextWrappingStyle;
  4. import com.spire.doc.fields.DocPicture;

  5. public class DifferentImageWatermark {
  6.     public static void main(String[] args) {
  7.         //加载Word测试文档
  8.         Document doc = new Document();
  9.         doc.loadFromFile("test.docx");

  10.         //获取文档第一节
  11.         Section section1 = doc.getSections().get(0);

  12.         //定义水印图片的纵向坐标位置
  13.         float y = (float) (section1.getPageSetup().getPageSize().getHeight()/3);

  14.         //添加图片水印1
  15.         HeaderFooter header1 = section1.getHeadersFooters().getHeader();//获取页眉
  16.         header1.getParagraphs().clear();//删除原有页眉格式的段落
  17.         Paragraph para1= header1.addParagraph();//重新添加段落
  18.         DocPicture pic1 = para1.appendPicture("logo1.png");//加载图片
  19.         pic1.setTextWrappingStyle(TextWrappingStyle.Behind);//图片置于文字下方
  20.         pic1.setVerticalPosition(y);
  21.         pic1.setHorizontalAlignment(ShapeHorizontalAlignment.Center);//设置图片对齐方式

  22.         //同理设置第二节页眉中的图片水印2
  23.         Section section2 = doc.getSections().get(1);
  24.         HeaderFooter header2 = section2.getHeadersFooters().getHeader();
  25.         header2.getParagraphs().clear();
  26.         Paragraph para2= header2.addParagraph();
  27.         DocPicture pic2 = para2.appendPicture("logo2.png");
  28.         pic2.setTextWrappingStyle(TextWrappingStyle.Behind);
  29.         pic2.setVerticalPosition(y);
  30.         pic2.setHorizontalAlignment(ShapeHorizontalAlignment.Center);

  31.         //同理设置第三节中的页眉中的图片水印3
  32.         Section section3 = doc.getSections().get(2);
  33.         HeaderFooter header3 = section3.getHeadersFooters().getHeader();
  34.         header3.getParagraphs().clear();
  35.         Paragraph para3= header3.addParagraph();
  36.         DocPicture pic3 = para3.appendPicture("logo3.png");
  37.         pic3.setTextWrappingStyle(TextWrappingStyle.Behind);
  38.         pic3.setVerticalPosition(y);
  39.         pic3.setHorizontalAlignment(ShapeHorizontalAlignment.Center);

  40.         //保存文档
  41.         doc.saveToFile("DifferentImageWatermark.docx",FileFormat.Docx_2013);
  42.         doc.dispose();
  43.     }
  44. }

如图,每一页均可显示不同的图片水印效果:



—End—

阅读(62) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~