• java 对word添加水印 (aspose .jar)


    package com.tythin.tyboot.core.util;
    
    import com.aspose.words.Document;
    import com.aspose.words.HeaderFooter;
    import com.aspose.words.HeaderFooterType;
    import com.aspose.words.HorizontalAlignment;
    import com.aspose.words.Paragraph;
    import com.aspose.words.RelativeHorizontalPosition;
    import com.aspose.words.RelativeVerticalPosition;
    import com.aspose.words.Section;
    import com.aspose.words.Shape;
    import com.aspose.words.ShapeType;
    import com.aspose.words.VerticalAlignment;
    import com.aspose.words.WrapType;
    import org.springframework.cglib.core.internal.Function;
    
    /**
     * @author kuangQingLin
     * @version 1.0
     * @date 2019/10/21/021 15:03
     **/
    public class WatermarkWordUtil {
        public static void main(String[] args) {
    
            //这个加水印文字方法可用
            try {
                Document document = new Document("C:\Users\Administrator\Desktop\人事合同.docx");
                insertWatermarkText(document, "我的水印");
                //文件输出路径
                document.save("C:\Users\Administrator\Desktop\人事合同1111.docx");
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 加水印方法
         *
         * @param doc           word文件流
         * @param watermarkText 水印内容
         */
        public static void insertWatermarkText(Document doc, String watermarkText) {
            // 居中
            insertWatermarkText(doc, watermarkText, new Function<Shape, Object>() {
                @Override
                public Object apply(Shape watermark) {
                    // Place the watermark in the page center.
                    watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
                    watermark.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);
                    watermark.setWrapType(WrapType.NONE);
                    watermark.setVerticalAlignment(VerticalAlignment.CENTER);
                    watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);
                    return null;
                }
            });
            // 顶部
            insertWatermarkText(doc, watermarkText, new Function<Shape, Object>() {
                @Override
                public Object apply(Shape watermark) {
                    watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.MARGIN);
                    watermark.setRelativeVerticalPosition(RelativeVerticalPosition.MARGIN);
                    watermark.setWrapType(WrapType.NONE);
                    //  我们需要自定义距离顶部的高度
                    watermark.setVerticalAlignment(VerticalAlignment.TOP);
                    watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);
                    //  watermark.setTop(120);
                    return null;
                }
            });
    
            //尾部
            insertWatermarkText(doc, watermarkText, new Function<Shape, Object>() {
                @Override
                public Object apply(Shape watermark) {
                    watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.MARGIN);
                    watermark.setRelativeVerticalPosition(RelativeVerticalPosition.MARGIN);
                    watermark.setWrapType(WrapType.NONE);
                    // 我们需要自定义距离顶部的高度
                    watermark.setVerticalAlignment(VerticalAlignment.BOTTOM);
                    watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);
                    // 设置距离顶部的高度
                    //   watermark.setTop(480);
    
                    return null;
                }
            });
        }
    
        private static void insertWatermarkText(Document doc, String watermarkText,
                                                Function<Shape, Object> watermaskPositionConfigFunc) {
    
            Shape watermark = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT);
            watermark.getTextPath().setText(watermarkText);
            // 这里设置为宋体可以保证在转换为PDF时中文不是乱码.
            watermark.getTextPath().setFontFamily("WeiRuanYaHei");
            //WeiRuanYaHei 宋体
    
            try {
                // 水印大小
                watermark.setWidth(150);
                watermark.setHeight(30);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
    
            // 左下到右上
            watermark.setRotation(-20);
    //字体RGB颜色
    final String colorStr = "EE8262"; watermark.getFill().setColor(new java.awt.Color(Integer.parseInt(colorStr, 16))); watermark.setStrokeColor(new java.awt.Color(Integer.parseInt(colorStr, 16))); watermaskPositionConfigFunc.apply(watermark); Paragraph watermarkPara = new Paragraph(doc); watermarkPara.appendChild(watermark); for (Section sect : doc.getSections()) { insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY); } } 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); } try { header.appendChild(watermarkPara.deepClone(true)); } catch (Exception e) { throw new RuntimeException(e); } } }
  • 相关阅读:
    LRUK算法例子
    php socket编程入门例子
    之前做的一个leetcode的题目记录下(留个纪念)
    php防范时序攻击的办法
    python使用es的例子(记录下)
    mysql随机抽取一定数量的记录
    go module包管理学习笔记
    nginx location匹配规则
    解决go get卡住的问题(转)
    supervisor 学习笔记(转)
  • 原文地址:https://www.cnblogs.com/woshuaile/p/11714738.html
Copyright © 2020-2023  润新知