天天看点

Java 使用POI 给Word添加水印

Maven 引入依赖

       <dependency>

            <groupId>org.apache.poi</groupId>

            <artifactId>poi</artifactId>

            <version>3.17</version>

        </dependency>

        <dependency>

            <groupId>org.apache.poi</groupId>

            <artifactId>poi-ooxml</artifactId>

            <version>3.17</version>

        </dependency>

Java 代码:

package com.daydayup.study001.watermark;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;

import org.apache.poi.xwpf.usermodel.XWPFDocument;

import org.apache.poi.xwpf.usermodel.XWPFHeader;

import org.apache.poi.xwpf.usermodel.XWPFParagraph;

import org.apache.poi.xwpf.usermodel.XWPFRun;

public class WatermarkForWord {

    public static void main(String[] args) throws FileNotFoundException, IOException {

        XWPFDocument doc= new XWPFDocument();

          // the body content

          XWPFParagraph paragraph = doc.createParagraph();

          XWPFRun run=paragraph.createRun();  

          run.setText("The Body:");

          // create header-footer

          XWPFHeaderFooterPolicy headerFooterPolicy = doc.getHeaderFooterPolicy();

          if (headerFooterPolicy == null) headerFooterPolicy = doc.createHeaderFooterPolicy();

          // create default Watermark - fill color black and not rotated

          headerFooterPolicy.createWatermark("Watermark");

          // get the default header

          // Note: createWatermark also sets FIRST and EVEN headers 

          // but this code does not updating those other headers

          XWPFHeader header = headerFooterPolicy.getHeader(XWPFHeaderFooterPolicy.DEFAULT);

          paragraph = header.getParagraphArray(0);

          // get com.microsoft.schemas.vml.CTShape where fill color and rotation is set

          org.apache.xmlbeans.XmlObject[] xmlobjects = paragraph.getCTP().getRArray(0).getPictArray(0).selectChildren(

            new javax.xml.namespace.QName("urn:schemas-microsoft-com:vml", "shape"));

          if (xmlobjects.length > 0) {

           com.microsoft.schemas.vml.CTShape ctshape = (com.microsoft.schemas.vml.CTShape)xmlobjects[0];

           // set fill color

           ctshape.setFillcolor("#d8d8d8");

           // set rotation

           ctshape.setStyle(ctshape.getStyle() + ";rotation:315");

           //System.out.println(ctshape);

          }

          doc.write(new FileOutputStream("CreateWordHeaderFooterWatermark.docx"));

          doc.close();

    }

}