zoukankan      html  css  js  c++  java
  • 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); } } }
  • 相关阅读:
    【KMP】Period
    【KMP】Cyclic Nacklace
    【KMP】Oulipo
    【KMP】Number Sequence
    二分
    Stock 贪心经典 Zoj2921
    D. Block Tower
    烦人的dp
    搜索
    hdu 一个人的旅行
  • 原文地址:https://www.cnblogs.com/woshuaile/p/11714738.html
Copyright © 2011-2022 走看看