通过Email推送统计报告。一般除了要求将PPT报告文件作为附件发给用户,同时希望将报告内容在邮件中直观展示。 一份统计报告中经常包含柱状图、饼图、好看的图表,这些信息要直接在Email中展示比较复杂。本文推荐一种方式:将PPT图表内容转换为高保真的图片,将图片放到Email中发送,在不丢失用户体验的前提下,工作量尽可能小。

一、 将PPT报告转换为PNG图片文件。

**有两种方式:**一种是采用POI组件将图片绘制到剪切板再输出为图片文件;另一种方式是通过COM接口调用PowerPoint的接口,使用PPT自身的”另存为”功能,将PPT内容另存为图片文件。
优劣比较:

  1. POI组件:不依赖于Office, 再linux下也可以执行;不好的地方是保存的图片效果太差,文字模糊,图表存在重影。参考代码:http://blog.csdn.net/jsudavid/article/details/10387959。输出图片文件效果如博客中描述。本人POI组件应用经验比较少,不清楚如何优化,有经验的同行可以给点建议。

  2. COM接口:依赖于Office,需要安装Office,只能部署在Windows平台,性能比较低,不支持并发操作(注意添加同步锁);导出的图片效果很好,功能强大,代码简单。

参考代码:

public static void main(String[] args){new PPT2Image().SaveAsImage("D:\\TEMP\\ppt\\xxx.pptx", "D:\\TEMP\\ppt\\20151201");}/*** * 保存PPT为图片文件,每一个Slide保存为一个图片文件。* * @param pptFilePath ppt文件路径。* @param savePath 保存图片文件目录,生成的图片文件放该目录下。*/public synchronized void SaveAsImage(String pptFilePath, String savePath){// 启动 office PowerPoint程序ActiveXComponent pptApp = new ActiveXComponent("PowerPoint.Application");Dispatch.put(pptApp, "Visible", new Variant(true));   Dispatch presentations = pptApp.getProperty("Presentations").toDispatch();  // 打开PPT文件Dispatch presentation = Dispatch.call(presentations, "Open", pptFilePath, false,  false, true).toDispatch();// 另存储为PNG图片文件。SaveAs支持将PPT保存为各种格式的文件。// PpSaveAsFileType:18-保存为PNG格式的图片。MsoTriState:1-转换状态// 完整的枚举定义参见MicroSoft说明文档:// https://technet.microsoft.com/zh-cn/windows/bb251061(v=msdn.10).aspx // https://technet.microsoft.com/zh-cn/aa432714(v=office.12)Dispatch.call(presentation, "SaveAs", savePath, 18, 1);// 保存,关闭文件。退出power point程序。Dispatch.call(presentation, "Save");Dispatch.call(presentation, "Close");Dispatch.call(pptApp, "Quit");}

如果POI能否做一些调优,效果达到COM接口输出的图片效果。优先使用POI组件,否则选择COM接口的方式。毕竟需要优先保证用户体验。

二、 将图片添加到邮件正文

2.1 原理描述

将PPT转换后的图片文件存储在Tomcat的Web应用路径下,提供域名(或者IP地址)下载该图片文件。用户打开收到的邮件时会通过http协议请求加载图片文件。需要注意的是中文版本的PPT转换后的PNG图片名中包含中文,要将Tomcat的资源定位编码设置为UTF-8。Conf\ server.xml。
图片文件在服务器上按日期、按类型长期保存,提供下载服务。如果Tomcat服务器关闭了,用户打开邮件就看不到图片。
<!-- A "Connector" represents an endpoint by which requests are receivedand responses are returned. Documentation at :Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)Java AJP  Connector: /docs/config/ajp.htmlAPR (HTTP/AJP) Connector: /docs/apr.htmlDefine a non-SSL HTTP/1.1 Connector on port 8080--><Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/><!-- A "Connector" using the shared thread pool--><!--<Connector executor="tomcatThreadPool"port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />

2.2 参考代码

email.setMailHeader("Email推送报告技术说明及样例代码");mailContext += "创建人: Elon";mailContext += "<br />"+ "<br />"+ "本文档主要解决报告转换为图片, 添加到Email正文发送的问题。"+ "<br />"+ "<br />";mailContext += "<img src=http://192.168.1.1:80/app/images/report/幻灯片3.PNG />";mailContext += "<br />"

将PPT文件内容转换为图片放在Email邮件正文中发送相关推荐

  1. 如何将WPS里文件的内容转换为图片格式

    在办公中我们经常要使用到WPS软件,以至于在这里面编辑的文档进行保存的文件都是以WPS为类型的文件.不过作为现在的人来说,我们更喜欢更方便的浏览方式,比如图片格式,那我们就需要将WPS文件转换为图片的 ...

  2. C#将PPT文件转换成图片并轮播展示

    本人小白一个,初次接触C#,各位大神还请多多点出不足,谢谢! 项目需求是:User将PPT文件上传后,公司大厅电视看板内容随即改变为上传PPT文件内容,并进行轮播显示 思路:1,实现将PPT文件打开并 ...

  3. java pptx转图_Java如何将PPT的幻灯片转换为图片?

    在Java编程中,如何将PPT的幻灯片转换为图片? 注意:需要访问网址: , 下载一个Apache POI软件包.这里下载最新版本:poi-bin-3.17-20170915.tar.gz解压并全部导 ...

  4. 【.net core 通过NPOI库将Excel文件内容分类输出到不同的Excel中】

    前言 由于在文章[.net core 通过miniexcel库将Excel文件内容分类输出到不同的Excel中]中实现的Excel内容分类不能够保留原来的文件头格式,所以使用NPOI进行优化.NPOI ...

  5. php 把ppt转pdf文件大小,ppt转换成pdf 怎么将ppt文件批量转换为pdf文件?ppt高质量转换pdf的方法...

    在工作上,有时候要处理多个文件,并且会涉及到各种资料文档的格式转换问题.前两天就有狸友跟小编说工作中需要将大量资料文件ppt转换成pdf格式再传输给他人.如果一个个将ppt转化为pdf的话工作量也是很 ...

  6. 利用pdfbox读取pdf文件内容和图片

    最近用pdfbox读取pdf文件中的内容和图片,可以获取每一页的内容和图片,但有个问题是没法获取图片在页面的位置.源码如下: package com.util; import java.awt.ima ...

  7. 前端传PPT文件到阿里云,后台把PPT文件存储为图片

    首先得注册阿里云账号,所使用到的是阿里云的对象存储OSS和智能媒体管理服务. 进入智能媒体管理,选择地区新建项目 新建项目,注意授权角色权限 进入对象存储新建一个Bucket,在上传任何文件(Obje ...

  8. PDF文件怎么转换为图片?

    PDF转图片,你还在直接截图保存吗?如果你试过,你就会发现分辨率受到了很大的影响,那PDF文件如何转换成JPG或PNG?今天给大家推荐一款移动端很好用的PDF工具"金闪PDF",可 ...

  9. 一个将txt文件内容转换为想要的数组数据demo

    最近看到了一个拼音猜成语小游戏,突发奇想试图将它改成猜单词的小游戏,小游戏没有后端所有数据都是来自前端,所以需要完整的词库,选取了考研英语词库,但是只在网上搜到了pdf版(是我没用),然后用在线工具转 ...

最新文章

  1. Windows Mobile 与 PC之间的通过蓝牙(Bluetooth) 传输文件的开发
  2. 设计模式-创建型-抽象工厂
  3. 透过Baba is you看「玩点叙述」
  4. Linux 上网配置 修改IP
  5. 工具设置Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节
  6. csv linux java,java 执行Linux 命令合并.csv文件
  7. 入职五年回顾(十五) 2013年10月
  8. Sublime Text 3 插件安装及Vim 模式设置
  9. Oracle下的用户创建角色、授权、建立表空间
  10. 斯威夫特山地车_斯威夫特弦乐
  11. nodejs安装anywhere快速启动一个web服务
  12. 【使用R语言两行语句将搜狗词库转为csv格式】
  13. 367个公益宣传PPT模板免费下载网站
  14. http下载异常_荏苒项目二:配置(日志,异常,数据库,前端,跨域CORS)
  15. html网页背景图片 菜鸟教程,CSS3 背景
  16. 【数据分析案例】使用机器学习做游戏留存数据挖掘的一种尝试
  17. 对 VoIP 提供商的大规模 DDoS 攻击和模拟 DDoS 测试
  18. Springboot发送邮件到腾讯企业邮箱
  19. 【微电网优化】基于matlab粒子群算法求解热电联供型微电网经济运行优化问题【含Matlab源码 1696期】
  20. 1.特定领域知识图谱知识融合方案(实体对齐):金融产业产业知识图谱-基于内容匹配和图模型的品牌知识链指

热门文章

  1. 5G遥测终端机 水文监测 采集 通信 控制
  2. 音视频文件的码率与大小计算
  3. Maven 配置打不同环境的版本包
  4. 大连东软信息学院Linux模拟题 答案,大连东软信息学院Linux系统编程期末考试试题...
  5. unity 手指控制UI移动和放大缩小
  6. 白炽灯、日光灯和led灯的区别
  7. 教你用Python写一个京东自动下单抢购脚本(Python实现京东自动抢购)
  8. 一种简单的关闭win10自动更新的方法
  9. VS快捷键使用技巧(超全)
  10. 大象无形 | 尚硅谷MyCat2视频教程发布