事情的起因是这样的,由于偶尔会去参加技术分享之类的活动,经常碰到嘉宾在台上讲ppt,而台下由于人多,后面的同学看不清内容而不知所云,甚至有人去拍照。
我就想,能不能把ppt内容转换成一个二维码,台下观众一扫码就能查看ppt内容。所以,一个简单的场景就产生了:文件只可能是ppt后者pptx的,客户端就是手机。
通过查阅资料,发现很容易实现。主要就是两步:1. 上传ppt文件;2.用户根据一个url去显示ppt内容。
ppt是不能直接通过html去显示文档内容,很容易想到通过其他方式,比如转换成图片,或者其它文档格式供用户访问。但是万能的google提供了更简单的解决方案,只需要一个连接就能访问。
1 2 |
<iframe src="http://docs.google.com/gview?url=http://www.bruceding.com/ppt/upload/demo.ppt&embedded=true" style="width:100%; height:800px;" frameborder="0"> </iframe> |
经测试,在天朝下,这个连接也能正常访问,并没有被屏蔽。代码中url必须是外网能够访问到的。
这样思路就很清晰了。下面再提供一个生成二维码的函数。
1 2 3 4 5 |
function generateQRfromGoogle($chl,$Height ='150',$widht='150',$EC_level='L',$margin='0') { $chl = urlencode($chl); return '<img src="http://chart.apis.google.com/chart?chs='.$widht.'x'.$Height.'&cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.$chl.'" alt="QR code" height="'.$Height.'" wid ht="'.$widht.'"/>'; } |
在实际中发现ppt的文件都比较大,直接展示会浪费很多流量,所以打算通过转换成pdf文档。在github中搜索,已经有人提供开源的库了。
点此下载打包的jar包。
运行命令可以是这样的:
java -jar doc-convert.jar -i demo.ppt -o demo.pdf
可以通过php的exec命令直接运行上面的命令。发现对于中文的文件名,会产生乱码,具体解决方法,请参考:http://blog.neu.edu.cn/wangwd/archives/13
在转换的过程中生成的pdf有可能是乱码,这是由于系统中缺少相应的字体造成。比如,微软雅黑,宋体等。只需在/usr/share/fonts中安装相应的字体就可以。
还有一点就是pptx的文件不做转换,pptx会比ppt文件更小,并且如果装换成pdf文件,反而变得更大了。
测试地址:http://www.bruceding.com/ppt/index.php