1. 程式人生 > 實用技巧 >aspose對word插入一個或多個水印

aspose對word插入一個或多個水印

package com.*.utils;

import com.aspose.words.*;
import com.aspose.words.Shape;

import java.awt.*;

/**
 * 插入一個水印和多個水印
 */
public class WordWatermarkUtil {
    /**
     * 插入一個水印擺放正中間
     * @param watermarkText 水印內容
     * @param doc Document物件
     */
    public static void insertWatermarkText(Document doc, String watermarkText) {
        Shape watermark 
= new Shape(doc, ShapeType.TEXT_PLAIN_TEXT); watermark.getTextPath().setText(watermarkText);//水印內容 watermark.getTextPath().setFontFamily("宋體"); try { //具體字型內容大小進行自定義設定 watermark.setWidth(500);//水印寬度 watermark.setHeight(100);//水印高度 } catch (Exception e) { e.printStackTrace(); } watermark.setRotation(
-40);//旋轉水印 watermark.getFill().setColor(Color.lightGray); //填充顏色(沒有填充顏色字會變成空心的) watermark.setStrokeColor(Color.lightGray);//水印顏色 淺灰色 watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);//設定相對水平位置 watermark.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);//
設定相對垂直位置 watermark.setWrapType(WrapType.NONE);//設定包裝型別 watermark.setVerticalAlignment(VerticalAlignment.CENTER);//設定垂直對齊 watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);//設定文字水平對齊 Paragraph watermarkPara = new Paragraph(doc); watermarkPara.appendChild(watermark); for (Section sect : doc.getSections()) { insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY); insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_FIRST); insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_EVEN); } } /** * 插入多個水印 * @param watermarkText 水印內容 * @param doc Document物件 */ public static void insertMoreWatermarkText(Document doc, String watermarkText) { Paragraph watermarkPara = new Paragraph(doc); //迴圈新增水印,這裡橫縱都在一條水平線,不太好看,可以對i和j控制使之有適當位移 for (int j = -30; j < 700; j = j + 200) { for (int i = 50; i < 500; i = i + 100) { Shape waterShape = ShapeMore(doc, watermarkText, j, i); watermarkPara.appendChild(waterShape); } } for (Section sect : doc.getSections()) { insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY); insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_FIRST); insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_EVEN); } } /** * @param doc 操作的文件物件 * @param watermarkText 水印內容 * @param left 距離左邊的距離 * @param top 距離頂部的距離 * @return */ public static Shape ShapeMore(Document doc, String watermarkText, double left, double top){ Shape waterShape = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT); //水印內容 waterShape.getTextPath().setText(watermarkText); //水印字型 waterShape.getTextPath().setFontFamily("楷體"); try { //具體字型內容大小進行自定義設定 waterShape.setWidth(136);//水印寬度 waterShape.setHeight(18);//水印高度 } catch (Exception e) { e.printStackTrace(); } //旋轉水印 waterShape.setRotation(-40); //填充顏色(沒有填充顏色字會變成空心的) waterShape.getFill().setColor(new Color(217,217,217)); //水印顏色 淺灰色 waterShape.setStrokeColor(new Color(217,217,217)); //將水印放置在頁面中心 waterShape.setLeft(left); waterShape.setTop(top); //設定包裝型別 waterShape.setWrapType(WrapType.NONE); return waterShape; } /** * 插入水印 * @param watermarkPara 水印段落 * @param sect 部件 * @param headerType 頭標型別欄位 */ private static void insertWatermarkIntoHeader(Paragraph watermarkPara, Section sect, int headerType) { HeaderFooter header = sect.getHeadersFooters().getByHeaderFooterType(headerType); if (header == null) { header = new HeaderFooter(sect.getDocument(), headerType); sect.getHeadersFooters().add(header); } header.appendChild(watermarkPara.deepClone(true)); } }