Java 在PPT中新增文字水印的簡易方法(單一/平鋪水印)

iceblue發表於2021-03-12

【前言】

在PPT幻燈片中,可通過新增形狀的方式,來實現類似水印的效果,可新增單一文字水印效果,即在幻燈片中心位置水印以單個文字字樣顯示,但通過一定方法也可以新增多行(平鋪)文字水印效果,即在幻燈片中以一定方式平鋪排列多個文字水印效果到頁面上。上篇文章中介紹了通過C# 程式來新增多行水印效果,本文以Java程式程式碼為例介紹如何實現水印新增,包括新增單一文字水印和平鋪文字內水印,程式碼供參考。

【程式環境】

本次程式編譯環境為IntelliJ IDEA,JDK版本1.8.0,並引入free spire.presentation.jar3.9.0版本檔案。

1. 新增單一文字水印

import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;

import java.awt.*;
import java.awt.geom.Rectangle2D;

public class TextWatermark {
    public  static void main(String[] args) throws Exception {
        //載入示例文件
        Presentation ppt = new Presentation();
        ppt.loadFromFile("sample.pptx");

        //獲取指定幻燈片
        ISlide slide = ppt.getSlides().get(0);

        //設定文字水印的寬和高
        int width= 400;
        int height= 300;

        //定義一個長方形區域
        Rectangle2D.Double rect = new Rectangle2D.Double((ppt.getSlideSize().getSize().getWidth() - width) / 2,
                (ppt.getSlideSize().getSize().getHeight() - height) / 2, width, height);

        //新增一個shape到定義區域
        IAutoShape shape = slide.getShapes().appendShape(ShapeType.RECTANGLE, rect);

        //設定shape樣式
        shape.getFill().setFillType(FillFormatType.NONE);
        shape.getShapeStyle().getLineColor().setColor(Color.white);
        shape.setRotation(-45);
        shape.getLocking().setSelectionProtection(true);
        shape.getLine().setFillType(FillFormatType.NONE);
        shape.setShapeArrange(ShapeAlignmentEnum.ShapeArrange.SendToBack);

        //新增文字到shape
        shape.getTextFrame().setText("內部使用");
        PortionEx textRange = shape.getTextFrame().getTextRange();

        //設定文字水印樣式
        textRange.getFill().setFillType(FillFormatType.SOLID);
        textRange.getFill().getSolidColor().setColor(new Color(211,211,211));
        textRange.setFontHeight(50);

        //儲存文件
        ppt.saveToFile("TextWatermark.pptx", FileFormat.PPTX_2013);
        ppt.dispose();
    }
}

單一水印效果:

 

2. 新增多行(平鋪)文字水印

import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.*;
import java.awt.geom.Rectangle2D;

public class TextWatermark2 {
    public static void main(String[] args) throws Exception{
        //載入PPT源文件
        Presentation ppt = new Presentation();
        ppt.loadFromFile("sample.pptx");

        //獲取指定幻燈片
        ISlide slide = ppt.getSlides().get(0);

        //設定文字水印文字寬和高
        int width= 110;
        int height= 80;

        //起始座標
        float x = 10;
        float y = 40;
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                //繪製文字,設定文字格式並將其新增到第一張幻燈片
                Rectangle2D.Double rect = new Rectangle2D.Double(x,y,width, height);
                IAutoShape shape = slide.getShapes().appendShape(ShapeType.RECTANGLE, rect);
                shape.getFill().setFillType(FillFormatType.NONE);
                shape.getShapeStyle().getLineColor().setColor(Color.white);
                shape.setRotation(-45);
                shape.getLocking().setSelectionProtection(true);
                shape.getLine().setFillType(FillFormatType.NONE);
                shape.getTextFrame().setText("內部使用");
                shape.setShapeArrange(ShapeAlignmentEnum.ShapeArrange.SendToBack);
                PortionEx textRange = shape.getTextFrame().getTextRange();
                textRange.getFill().setFillType(FillFormatType.SOLID);
                textRange.getFill().getSolidColor().setColor(new Color(238,130,238));
                textRange.setFontHeight(20);
                x += (100 + ppt.getSlideSize().getSize().getWidth()/6);
            }
            x = 30;
            y += (100 + ppt.getSlideSize().getSize().getHeight()/7) ;
        }

        //儲存文件
        ppt.saveToFile("TextWatermark2.pptx", FileFormat.PPTX_2013);
        ppt.dispose();
    }
}

這裡通過設定文字寬度值int width的值可實現不同的水印文字字元排列樣式,如下width = 110時,水印字樣效果:

width=60時,水印效果:

width=10時,水印效果:

 

 

【最後】

以上是本次介紹Java新增PPT文字水印的全部內容,新增單一水印和平鋪水印效果的基本方法相差不大。

 

(本文完,如需轉載,請務必註明出處!!!)

相關文章