栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java aspose 给Word添加水印

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java aspose 给Word添加水印

java 使用 aspose 添加水印

首先编写添加水印方法

 
    public static void insertWatermarkText(Document doc, String watermarkText) {
        // 居中
        insertWatermarkText( doc, watermarkText, new Function() {
            @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() {
            @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() {
            @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;
            }
        } );
    }

方法2

 //插入文本水印
    private static void insertWatermarkText(Document doc, String watermarkText, Function 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 );

        }

    }

方法3:

 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 );
        }
    }

测试插入:

1、生成word插入水印

    @Test
    public void testSaveWord() throws Exception {
        // Create a Document object
        Document doc = new Document();

        // Create a DocumentBuilder object
        DocumentBuilder builder = new DocumentBuilder( doc );

        java.util.List list = new ArrayList<>();
        list.add( "How to Create a Rich Word Document5?" );
        list.add( "How to Create a Rich Word Document25?" );
        list.add( "How to Create a Rich Word Document35?" );
        list.add( "How to Create a Rich Word Document45?" );


        // Specify font formatting
        Font font = builder.getFont();
        font.setSize( 18 );
        font.setBold( true );
        font.setColor( Color.BLACK );
        font.setName( "Arial" );
        builder.write( "How to Create a Rich Word Document?" );
        builder.insertBreak( BreakType.LINE_BREAK );


        // Start the paragraph
        font.setSize( 12 );
        font.setBold( false );
        ParagraphFormat paragraphFormat = builder.getParagraphFormat();
        paragraphFormat.setFirstLineIndent( 12 );
        paragraphFormat.setKeepTogether( true );
        builder.write( "This article shows how to create a Word document containing text, images and lists." );
        builder.insertBreak( BreakType.LINE_BREAK );

        for (String str : list) {
            font.setSize( 18 );
            font.setBold( true );
            font.setColor( Color.BLACK );
            font.setName( "Arial" );
            builder.writeln( str );
            builder.insertBreak( BreakType.LINE_BREAK );
        }


        insertWatermarkText( doc, "我的水印" );

        // Save the document
        doc.save( "D:\temp\Rich Word Document.docx" );
        
    }

2、给已有的word添加水印

  @Test
    public void testWater() {

        //这个加水印文字方法可用
        try {
            Document document = new Document( "D:\zyw\web\temp\1537734281026211840.doc" );
            insertWatermarkText( document, "我的水印" );
            //文件输出路径
            document.save( "D:\zyw\web\temp\1537734281026211840-11.doc" );

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017081.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号