网页PPT,如何只能供浏览,而不能被下载?
最近的一个项目,要求提供大量的PPT形式的课件,供客户在网上学习使用。但领导又要求不能让客户下载,编辑PPT,只能在线浏览。这些天一直研究这个问题,但还是没有找到很合适的方法。因为CSDN现在无法访问,也可能有更好的方法。现在先将我的想法写下来,跟有这方面要求的朋友一起控讨一下。
现有的网上的方法,收录于下:
1.在web.xml中加:
<mime-mapping>
<extension>ppt</extension>
<mime-type>application/mspowerpoint</mime-type>
</mime-mapping>
点评:这是不是在java里的东西?反正不会用。
2.你可以修改response.contenttype的值,比如
response.contenttype="application/pdf" ;
response.writefile(request.physicalapplicationpath + "test.pdf");
response.end();
不懂powerpoint是的contenttype是什么,可以去查一下。
Response.ContentType = "application/x-msdownload ; Charset=utf-8";
Response.AddHeader("Content-Disposition", "attachment; filename=...");
点评:试了半天,出来一堆乱码,晕倒
3.还是自己写一个activex吧。这样安全性也要好一些。
至于ppt的显示部分可以考虑使用微软提供的powerpointviewer。
点评:不会写,也没在网上找到,还是自己水平不够啊,期待高人写一个,呵呵。
4.把PPT转换为HTML形式
点评:这个方法也不太可行,用程序转换的话,速度太慢了。用PPT另存为Web的话,好像效率高一点,博客园里还看到一位朋友写的,将转换后的Frame去掉的方法,没试,但应该可以。
5.我在这里推荐一种方法:将PPT转换为FLASH。
这需要用到软件,从网上下载一个就行了,我找了一个叫“iSpring Free”的软件,用起来还不错。转换后,会出现三个文件:fixprompt.js,index.html,XXXX.swf (此为你转换的PPT的名字,后缀变为.swf)。然后直接点击index.html,就可以看了,效果很不错,可以全屏,可以跳转换页,如图:
index.html中body的源码:
<body topmargin="0" leftmargin="0" bgcolor="#000000">
<!-- saved from url=(0013)about:internet -->
<object id="presentation" width="720" height="576" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="PowerPoint演示文稿.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#000000" />
<param name="allowFullScreen" value="true" />
<embed src="PowerPoint演示文稿.swf" quality="high" bgcolor="#000000" width="720" height="576" name="presentation" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" allowFullScreen="true" />
</object>
<script type="text/javascript" src="fixprompt.js"/>
</body>
基于这种思路,可不可以把PPT转换为FLASH,然后将index.html中的源码中,拷入.aspx中,将.swf的名字,替换成<%=SwfFineName%>,从cs文件中动态获取呢?可以考虑由dropdownlist绑定所有通过软件转换而来的swf的文件名,这样实现在线浏览的效果。
项目还在继续,尝试依旧前行,写下此文,以求得到更多的启示。