`
wmch
  • 浏览: 72662 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

ppt

阅读更多

/**
     * 报告生成ppt
     * @author 王明超
     * @return void
     * @throws IOException
     */
    public void exportPpt(HttpServletResponse response, VpReportInfo vpReportInfo, List reportInfoList) throws IOException{
        SlideShow ppt = new SlideShow();
        //设置母版,这样后续的新建幻灯片都将使用母版的字体,背景等设置
        SlideMaster master = ppt.getSlidesMasters()[0];
        //Picture
          String rootImg = ServletActionContext.getServletContext().getRealPath("resources\\images");
          Picture pictpptLine = this.getPicture(ppt, rootImg+"\\pptLine.png", new Rectangle(3, 72, 717, 5));
          master.addShape(pictpptLine);
          Picture pictpptHead = this.getPicture(ppt, rootImg+"\\pptHead.png", new Rectangle(603, 0, 117, 84));
          master.addShape(pictpptHead);
       
          String filename = vpReportInfo.getReportName();
        if(reportInfoList!=null && reportInfoList.size()>0) {
            for(int i=0;i<reportInfoList.size();i++) {
                VpReportPage vo = (VpReportPage)reportInfoList.get(i);
               
                Slide slide = ppt.createSlide();

                //TextBox
                  TextBox txt = this.getTextBox(vo.getTopCaption(), new Rectangle(25, 12, 648, 56), 24, "黑体", Color.black, TextBox.AlignLeft);
                  slide.addShape(txt);
                //TextBox
                  TextBox txt2 = this.getTextBox(vo.getSubCaption(), new Rectangle(18, 96, 648, 56), 14, "华文中宋", Color.black, TextBox.AlignLeft);
                  slide.addShape(txt2);
                if(!StringUtils.isEmpty(vo.getPicId())) {
                    String[] picSrc = vo.getPicId().split(",");
                    String picPath = ServletActionContext.getServletContext().getRealPath("uploadchartPic");
                    if(picSrc.length>0) {
                        if(picSrc.length == 1) {//单图
                            String picName = picSrc[0].substring(picSrc[0].lastIndexOf("/")+1, picSrc[0].length());
                            BufferedImage image = ImageIO.read(new File(picPath+"\\"+picName));
                            Picture pict = this.getPicture(ppt, picPath+"\\"+picName, new Rectangle((int)Math.floor(360-0.5*656), 173, 656, (int)Math.floor(656*((double)image.getHeight()/(double)image.getWidth()))));
                            slide.addShape(pict);
                        }
//                    else if(picSrc.length == 2 && "3".equals(vo.getTemplateType())) {//双图(左右排列)
//                        String picName1 = picSrc[0].substring(picSrc[0].lastIndexOf("/")+1, picSrc[0].length());
//                        String picName2 = picSrc[1].substring(picSrc[1].lastIndexOf("/")+1, picSrc[1].length());
//                        Picture pict1 = this.getPicture(ppt, picPath+"\\"+picName1, new Rectangle(50, 250, 300, 200));
//                        Picture pict2 = this.getPicture(ppt, picPath+"\\"+picName2, new Rectangle(350, 250, 300, 200));
//                        slide.addShape(pict1);
//                        slide.addShape(pict2);
//                    }
//                    else if(picSrc.length == 2 && "2".equals(vo.getTemplateType())) {//双图(上下排列)
//                        String picName1 = picSrc[0].substring(picSrc[0].lastIndexOf("/")+1, picSrc[0].length());
//                        String picName2 = picSrc[1].substring(picSrc[1].lastIndexOf("/")+1, picSrc[1].length());
//                        Picture pict1 = this.getPicture(ppt, picPath+"\\"+picName1, new Rectangle(250, 152, 200, 194));
//                        Picture pict2 = this.getPicture(ppt, picPath+"\\"+picName2, new Rectangle(250, 346, 200, 194));
//                        slide.addShape(pict1);
//                        slide.addShape(pict2);
//                    }
                        else if(picSrc.length >= 2 && ("2".equals(vo.getTemplateType()) || "4".equals(vo.getTemplateType()))) {//双图 多图(上下排列)
                            for(int j=0;j<picSrc.length;j++) {
                                String picName = picSrc[j].substring(picSrc[j].lastIndexOf("/")+1, picSrc[j].length());
                                BufferedImage image = ImageIO.read(new File(picPath+"\\"+picName));
                                Picture pict = this.getPicture(ppt, picPath+"\\"+picName, new Rectangle((int)Math.floor(360-((388/picSrc.length)*((double)image.getWidth()/(double)image.getHeight()))*0.5), (int)Math.floor(152+(388/picSrc.length)*j), (int)Math.floor((388/picSrc.length)*((double)image.getWidth()/(double)image.getHeight())), (int)Math.floor(388/picSrc.length)));
                                slide.addShape(pict);
                            }
                        }
                        else if(picSrc.length >= 2 && ("3".equals(vo.getTemplateType()) || "5".equals(vo.getTemplateType()))) {//双图 多图(左右排列)
                            for(int j=0;j<picSrc.length;j++) {
                                String picName = picSrc[j].substring(picSrc[j].lastIndexOf("/")+1, picSrc[j].length());
                                BufferedImage image = ImageIO.read(new File(picPath+"\\"+picName));
                                Picture pict = this.getPicture(ppt, picPath+"\\"+picName, new Rectangle((int)Math.floor((720/picSrc.length)*j), (int)Math.floor(152+194-((720/picSrc.length)*((double)image.getHeight()/(double)image.getWidth()))*0.5), (int)Math.floor(720/picSrc.length), (int)Math.floor((720/picSrc.length)*((double)image.getHeight()/(double)image.getWidth()))));
                                slide.addShape(pict);
                            }
                        }
                    }
                }
               
            }
        }
        Slide slideLast = ppt.createSlide();
        //TextBox
        TextBox txtLast = this.getTextBox("谢谢!", new Rectangle(264, 186, 200, 100), 48, "华文行楷", Color.red, TextBox.AlignCenter);
        slideLast.addShape(txtLast);
       
//        ppt.write(new FileOutputStream(new File("e:\\ppt\\wmc.ppt")));
       
        // 向IE发送数据流
        response.reset();
        response.setContentType("application/vnd.ms-powerpoint"); // mspowerpoint
         java.net.URLEncoder.encode(filename, "UTF-8");
        String fname = new String(filename.getBytes("gb2312"), "iso-8859-1");
        response.setHeader("Content-Disposition", "attachment;Filename=" + fname + ".ppt");
        OutputStream os;
        try {
            os = response.getOutputStream();// 获取输出流
            ppt.write(os);// 输出
            os.flush();
            os.close();// 关闭流

        } catch (IOException e) {
            System.out.println("导ppt异常" + e.getMessage());
            e.printStackTrace();
        }
    }
   
    public TextBox getTextBox(String text,Rectangle rec,int fontSize,String fontName,Color color,int align){
        //TextBox
          TextBox txt = new TextBox();
          txt.setText(text);
          if(rec != null) {
              txt.setAnchor(rec);
          }
          //use RichTextRun to work with the text format
          RichTextRun rt = txt.getTextRun().getRichTextRuns()[0];
          if(fontSize != 0) {
              rt.setFontSize(fontSize);
          }
          if(fontName != null) {
              rt.setFontName(fontName);
          }
          if(color != null) {
              rt.setFontColor(color);
          }
          if(align != 0) {
              rt.setAlignment(align);
          }
          return txt;
    }
   
    public Picture getPicture(SlideShow ppt, String picPath, Rectangle rec) {
        File file = new File(picPath);
        Picture pict = null;
        if(!file.exists()) {
            System.out.println("文件:"+picPath+"不存在!");
        }
        try {
            int idx = ppt.addPicture(file, Picture.PNG);
            pict = new Picture(idx);
        } catch (IOException e) {
            e.printStackTrace();
        }
         if(pict != null && rec != null) {
              pict.setAnchor(rec);
          }
        return pict;
    }

分享到:
评论

相关推荐

    大数据可视化PPT 大数据可视化PPT

    大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT...

    计算机组成原理 课件 PPT

    1.1 概论-计算机的概念与类型.ppt 1.2 概论-计算机的诞生和发展.ppt 1.3 概论-计算机系统的组织.ppt 1.4 概论-计算机的性能指标.ppt 2.1 数值型数据.ppt 2.2 字符型数据.ppt 2.3 数据处理与存储.ppt 2.4 基本运算...

    在PPT中插入倒计时器的详细步骤(带插入倒计时器的PPT)

    详细的介绍了如何在PPT中插入倒计时器的方法,并附有详细的截图步骤!!!此文件中包含了倒计时器的.swf文件,成功插入倒计时器的ppt文件,还有详细说明步骤的文档! 在PPT中插入swf,为保证播放时每页PPT都播放插入...

    动态工作计划商务PPT模板.rar

    这是一套动态工作计划商务PPT模板,第一PPT模板网提供幻灯片模板免费下载。 PPT模板是动态模板,整套幻灯片模板用蓝色作为幻灯片背景,模糊的城市建筑作为幻灯片背景图片,商务气息浓厚,首页用三角的几何图形以及...

    高等数学ppt课件全套打包.zip

    高等数学ppt课件 1-1函数的概念.ppt 高等数学ppt课件 1-2函数的几种特性.ppt 高等数学ppt课件 1-3初等函数.ppt 高等数学ppt课件 1-4一些常用不等式和等式.ppt 高等数学ppt课件 1-5极坐标简介.ppt 高等数学ppt课件 10...

    模拟电子技术-大学PPT教程课件.zip

    模拟电子技术-大学PPT教程课件: 0-模拟电子技术基础课绪论.ppt 1-半导体基础知识.ppt 10-直流电源.ppt 2-基本放大电路.ppt 3-多级放大电路.ppt 4-集成运算放大电路.ppt 5-放大电路的频率响应.ppt 6-放大电路中的...

    PPT 模板 大量优秀国外ppt模板

    标题中的“PPT模板 大量优秀国外ppt模板”表明这个资源主要包含一系列高质量的、来自国外的PowerPoint演示文稿模板。这些模板通常设计精美,具有专业感,且适用于各种商务或教育场合。国外的设计理念往往注重创新与...

    PPT素材,PPT相关

    PPT素材,PPT相关PPT素材,PPT相关PPT素材,PPT相关PPT素材,PPT相关PPT素材,PPT相关PPT素材,PPT相关PPT素材,PPT相关PPT素材,PPT相关PPT素材,PPT相关PPT素材,PPT相关PPT素材,PPT相关PPT素材,PPT相关PPT素材,PPT相关PPT...

    20个PPT模板经典PPT设计模板资料各类PPT风格模板参考资料.zip

    20个PPT模板经典PPT设计模板资料各类PPT风格模板参考资料: 1604052017简约时尚小清新通用PPT模板.zip 163512简约手绘动态活动策划方案书ppt模板.zip 178716欧美商务风工作PPT模板.zip 182435简约商务通用ppt模板....

    PPT插入excel动态图表

    在excel中可以通过窗体或ActiveX控件达到动态控制图表显示的目的,但当Excel图表作为对象内嵌到PPT后,在PPT播放模式下,所有在Excel对象中的控件都是不可选的,只能在PPT的编辑模式下双击对象后在Application.Excel...

    研究生组会ppt模板

    研究生组会ppt模板 从上述文件信息中,我们可以提取出以下几个重要的知识点: 一、PPT模板的基本结构 从文件中,我们可以看到PPT模板的基本结构主要包括:标题、目录、工作概述、工作完成进度、工作存在不足、...

    西安交大传热学全套ppt课件.zip

    交通大学传热学-chap2-2.ppt 交通大学传热学-chap2-3.ppt 交通大学传热学-chap3.ppt 交通大学传热学-chap4.ppt 交通大学传热学-chap5-1.ppt 交通大学传热学-chap5-2.ppt 交通大学传热学6-1.ppt 交通大学传热学6-2....

    计算机毕业设计答辩PPT模板(11套).zip

    计算机毕业设计答辩PPT模板(11套) 计算机毕业设计答辩PPT模板(11套) 计算机毕业设计答辩PPT模板(11套) 计算机毕业设计答辩PPT模板(11套) 计算机毕业设计答辩PPT模板(11套) 计算机毕业设计答辩PPT模板...

    我的PPT模板

    在IT行业中,PPT(PowerPoint)是一种广泛使用的演示文稿制作工具,尤其在商务、教育和各种报告中。"我的PPT模板"这个压缩包文件显然包含了精心收集和整理的PPT模板,旨在帮助用户快速创建专业且吸引人的演示文稿。...

    103套PPT模板.zip

    标题中的“103套PPT模板.zip”表明这是一个包含多套PowerPoint模板的压缩文件,主要用于学术报告、答辩和经验分享等场合。PPT模板是预先设计好的演示文稿结构,用户可以按照模板的样式快速创建自己的幻灯片,节省...

    幻灯片ppt转scr屏保程序格式

    标题中的“幻灯片ppt转scr屏保程序格式”指的是将PowerPoint(PPT)文件转换为屏幕保护程序(SCR)格式的过程。在Windows操作系统中,屏幕保护程序是一种特殊类型的可执行文件,当电脑长时间未使用时,可以自动运行...

    3000份ppt模板PPT模板.txt

    3000份ppt模板PPT模板.txt3000份ppt模板PPT模板.txt3000份ppt模板PPT模板.txt3000份ppt模板PPT模板.txt3000份ppt模板PPT模板.txt3000份ppt模板PPT模板.txt3000份ppt模板PPT模板.txt3000份ppt模板PPT模板.txt3000份...

    程序员年终总结PPT模板

    标题中的“程序员年终总结PPT模板”意味着这是一个专门为程序员设计的、用于年终总结报告的PowerPoint(PPT)模板集合。这种模板通常包含了一系列精心设计的幻灯片布局,可以帮助程序员们有效地展示他们在过去一年的...

    wpf实现PPT播放

    在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF) 中实现PPT播放功能,同时具备前后翻页的功能。WPF是微软提供的一种用于构建桌面应用的UI框架,它提供了丰富的图形渲染能力和灵活的布局系统,...

    软件测试 ppt 软件测试 ppt 软件测试 ppt

    软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试 ppt软件测试...

Global site tag (gtag.js) - Google Analytics