zoukankan      html  css  js  c++  java
  • Java 创建并应用PPT幻灯片母版

    幻灯片母版,可在幻灯片中预先存储设计模板信息,包括字形、占位符大小或位置、背景设计和配色方案等;对设定好的母版可应用于所有幻灯片,也可设计多个不同母版应用于不同幻灯片。下面通过Java代码示例介绍如何创建单一母版以及不同母版。

    使用工具:Free Spire.Office for Java(免费版)

    Jar获取及导入:官网下载jar包,并解压将lib文件夹下的jar文件导入Java程序,或者通过maven仓库下载导入

    如下导入效果:

    Java 代码示例

    1. 创建单一母版,应用到所有幻灯片

    import com.spire.presentation.*;
    import com.spire.presentation.drawing.BackgroundType;
    import com.spire.presentation.drawing.FillFormatType;
    import com.spire.presentation.drawing.IImageData;
    import com.spire.presentation.drawing.PictureFillType;
    
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.geom.Rectangle2D;
    import java.awt.image.BufferedImage;
    import java.io.FileInputStream;
    
    
    public class CreateMasterSlide {
        public static void main(String[] args) throws Exception {
            //创建PPT文档,并设置幻灯片大小
            Presentation ppt = new Presentation();
            ppt.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);
    
    
            //获取第一张母版
            IMasterSlide masterSlide = ppt.getMasters().get(0);
    
            //设置母版背景
            BufferedImage image = ImageIO.read(new FileInputStream("tp.png"));
            IImageData imageData = ppt.getImages().append(image);
            masterSlide.getSlideBackground().setType(BackgroundType.CUSTOM);
            masterSlide.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE);
            masterSlide.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
            masterSlide.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData);
    
            //添加图片到母版
            image = ImageIO.read(new FileInputStream("logo.png"));
            imageData = ppt.getImages().append(image);
            IEmbedImage imageShape = masterSlide.getShapes().appendEmbedImage(ShapeType.RECTANGLE,imageData,new Rectangle2D.Float((float) ppt.getSlideSize().getSize().getWidth()-240,40,60,60));
            imageShape.getLine().setFillType(FillFormatType.NONE);
    
            //添加文字到母版
            IAutoShape textShape = masterSlide.getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Float((float) ppt.getSlideSize().getSize().getWidth()-230,85,200,30));
            textShape.getTextFrame().setText("文娱传媒");
            textShape.getTextFrame().getTextRange().setFontHeight(20f);
            textShape.getTextFrame().getTextRange().getFill().setFillType(FillFormatType.SOLID);
            textShape.getTextFrame().getTextRange().getFill().getSolidColor().setColor(Color.black);
            textShape.getTextFrame().getTextRange().getParagraph().setAlignment(TextAlignmentType.CENTER);
            textShape.getFill().setFillType(FillFormatType.NONE);
            textShape.getLine().setFillType(FillFormatType.NONE);
    
            //添加一张幻灯片(创建PPT文档时,已默认生成一张幻灯片,这里添加一张幻灯片可对比查看母版添加效果)
            ppt.getSlides().append();
    
            //保存文档
            ppt.saveToFile("CreateSlideMaster.pptx", FileFormat.PPTX_2013);
            ppt.dispose();
        }
    }

    母版创建效果:

    2. 创建多个母版,应用于不同幻灯片

    import com.spire.presentation.*;
    import com.spire.presentation.drawing.BackgroundType;
    import com.spire.presentation.drawing.FillFormatType;
    import com.spire.presentation.drawing.IImageData;
    import com.spire.presentation.drawing.PictureFillType;
    
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.geom.Rectangle2D;
    import java.awt.image.BufferedImage;
    import java.io.FileInputStream;
    
    public class CreateMasterSlide2 {
        public static void main(String[] args) throws Exception{
            //创建PPT文档,并设置幻灯片大小
            Presentation ppt = new Presentation();
            ppt.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);
    
            //插入4页幻灯片(连同默认的幻灯片,文档中共5页)
            for (int i = 0; i < 4; i++)
            {
                ppt.getSlides().append();
            }
    
            //获取默认的母版
            IMasterSlide first_master = ppt.getMasters().get(0);
    
            //创建并获取第二个母板
            ppt.getMasters().appendSlide(first_master);
            IMasterSlide second_master = ppt.getMasters().get(1);
    
            //为两个母版分别设置不同的背景图片
            BufferedImage image = ImageIO.read(new FileInputStream("pic1.png"));
            IImageData imageData = ppt.getImages().append(image);
            first_master.getSlideBackground().setType(BackgroundType.CUSTOM);
            first_master.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE);
            first_master.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
            first_master.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData);
            IAutoShape textShape = first_master.getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Float((float) ppt.getSlideSize().getSize().getWidth()/3,180,200,30));
            textShape.getTextFrame().setText("首页母版");
            textShape.getTextFrame().getTextRange().setFontHeight(40f);
            textShape.getTextFrame().getTextRange().getFill().setFillType(FillFormatType.SOLID);
            textShape.getTextFrame().getTextRange().getFill().getSolidColor().setColor(Color.red);
            textShape.getTextFrame().getTextRange().getParagraph().setAlignment(TextAlignmentType.CENTER);
            textShape.getFill().setFillType(FillFormatType.NONE);
            textShape.getLine().setFillType(FillFormatType.NONE);
    
            image = ImageIO.read(new FileInputStream("pic2.png"));
            imageData = ppt.getImages().append(image);
            second_master.getSlideBackground().setType(BackgroundType.CUSTOM);
            second_master.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE);
            second_master.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
            second_master.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData);
    
            //在第一页应用第一个母版及版式(板式6为空板式)
            ppt.getSlides().get(0).setLayout(first_master.getLayouts().get(6));
    
            //在剩下的幻灯片应用第二个母版及版式
            for (int i = 1; i < ppt.getSlides().getCount(); i++)
            {
                ppt.getSlides().get(i).setLayout(second_master.getLayouts().get(6));
            }
    
            //保存文档
            ppt.saveToFile("MultiSlideMaters.pptx", FileFormat.PPTX_2013);
            ppt.dispose();
        }
    }

    多个母版创建效果:

    (完)

  • 相关阅读:
    计算机网络-TCP的三次握手与四次挥手
    计算机网络-XSS及CSRF攻击防御
    计算机网络-HTTP与HTTPS的区别
    装饰器模式和代理模式的区别
    23种设计模式总结
    单例模式详解
    常用设计模式总结
    PG-用户|角色管理
    PG-表空间管理
    TiDB-性能测试
  • 原文地址:https://www.cnblogs.com/Yesi/p/12836159.html
Copyright © 2011-2022 走看看