在 web 项目中经常会遇到在线浏览 Word 文档, 通常解决方法将 Word 转换成 PDF, 然后在线浏览, 但是在实际实现过程中, 由于阅读器的原因, 用户可以直接下载该 PDF, 这显然不是我们想要的, 通过网络搜索, 发现可以将 Word 文档转换成 swf 文件, 通过 flash 实现在线浏览, 本文将详细介绍具体实现的方法.
Word 生成 flash 文件
下载安装 Print2Flash http://www.downxia.com/downinfo/255287.html , 具体破解安装步骤下载页面都有(这里不提倡运用盗版软件).
安装完成, 打开需要转换成 swf 文件的 Word 文档, 单击[开始] -[打印] , 打印机选择 "Print2Flash 3 Printer", 如下图所示.
单击[打印] 按钮, 根据不同的需求设置生成 flash 选项, 如下图所示(屏蔽打印等一些按钮).
设置完成后, 单击 [OK] 按钮, 在弹出的对话框(如下图) 中, 单击[Save Flash] 按钮, 设置保存路径及名称, 完成 swf 文件的导出.
HTML 加载 Flash 文件
Flash 的嵌入这里介绍两种方法, 一种是传统方法使用 object 和 embed 标签来嵌入, 另一种是 JS 嵌入.
传统的方法
具体代码如下:
- <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="<a href="
- http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0
- ">http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0</a>" width="550" height="400" id="Untitled-1" align="middle">
- <param name="allowScriptAccess" value="sameDomain" />
- <param name="movie" value="mymovie.swf" />
- <param name="quality" value="high" />
- <param name="bgcolor" value="#ffffff" />
- <embed src="mymovie.swf" quality="high" bgcolor="#ffffff" width="550"
- height="400" name="mymovie" align="middle" allowScriptAccess="sameDomain"
- type="application/x-shockwave-flash" pluginspage="<a href=" http://www.macromedia.com/go/getflashplayer
- ">http://www.macromedia.com/go/getflashplayer</a>" />
- </object>
该方法是使用 object 和 embed 标签来嵌入, 细心的会发现, object 的很多参数和 embed 里面的很多属性是重复的, 为什么这样做? 为了浏览器兼容性, 有的浏览器支持 object, 有的支持 embed, 这也是为什么要修改 Flash 的参数时两个地方都要改的原因.
该种方法是 Macromedia 一直以来的官方方法, 最大限度的保证了 Flash 的功能, 没有兼容性问题. 但是它现在不那么好用了: 无法通过验证, 由于为了兼容性而嵌入的 embed 标签是不符合 W3C 的规范的. 当然, 如果你不在乎什么规范不规范, 另当别论.
微软由于种种原因, 在 sp2 后限制了 IE 的 ActiveX 的使用模式, 就是在页面中的 ActiveX 有一个虚框, 需要用户点击一次才能正常交互. Flash 是作为一个 ActiveX 嵌入到网页中的, 所以它也会受牵连, 只有通过 JS 嵌入 Flash 才能解决这个问题.
没有 Flash 版本检测, 如果版本浏览器的 flash 插件版本不够, 或者不能正常显示你的 swf 文件, 或者会弹出一个 ActiveX 的确认安装的框 -- 这个框对很多用户来说是很恐怖的.
用 JS 嵌入的方法
用 JS 嵌入就是各有各的嵌入方法了, 有嵌得好的有嵌得不好的. 有人用 document.write 直接写, 这法子说实话不大好, 感觉 hack 成分多了, 有点为了验证而验证的意思, 而且没有体现出什么 JS 的优势. 我觉得一个好的 JS 嵌入脚本, 在保证 Flash 应有功能的基础上, 要发挥 JS 的优势应该要有版本检测, 要能很好解决可访问性问题(也就是用户在无法浏览 Flash 内容或禁用 JS 的时候应该如何处理的问题), 要易于重复使用.
我们这里要讲的是 SWFObject 这个解决方案:
"SWFObject" 是利用 JavaScript 插入 flash, 好处多多, 代码简洁, 不会出现 IE6 下的 "单击此处以激活控件" 的提示, 并且能通过 W3C 验证. 不同于传统的 "object" 插入 flash 的方法.
SWFObject http://blog.deconcept.com/swfobject/ 在新的 2.x 版本中, 其最简单的调用竟只需一句话, 并且不需要等待页面加载完成, 这意味着你可以将这句话写在页面的任何地方. 比以前的版本, 要简便多了. 下面来看几个简单常用的调用方法:
1, 最简单, 最基本, 只要想插入 flash 都能用到的经典一句话.
- <div id="myflash">
- </div>
- <script type="text/javascript" src="swfobject.js">
- </script>
- <script type="text/javascript">
- swfobject.embedSWF("test.swf", "myflash", "300", "120", "9.0.0");
- </script>
注解: 调用方法 embedSWF-- 插入 SWF 文件, 参数依次是 @swf 文件的地址;@用于装入 swf 文件的容器 (如 div) 的 id;@flash 的宽度;@flash 的高度 (当然, 这里的宽高都可以使用诸如 100% 这样的百分比来表示);@正常播放该 flash 所需的最低版本;@当版本低于要求时, 执行该 swf 文件, 这里利用这个 flash 跳转到官方下载最新版本的 flash 插件.(该参数可以省略) 在同一个页面插入多个 flash 到不同位置时, 只要重复上面的语句, 使用不同的容器 id 就可以了.
具体效果如下图所示.
2, 给 swf 文件传递参数, 变量, 属性的调用方法
- <script type="text/javascript" src="swfobject.js">
- </script>
- <script type="text/javascript">
- //1, 使用 JSON 初始化变量, 参数, 属性
- var flashvars = {
- name1: "hello",
- name2: "world",
- name3: "foobar"
- };
- var params = {
- menu: "false"
- };
- var attributes = {
- id: "dynamicContent2",
- name: "dynamicContent2"
- };
- swfobject.embedSWF("test6_flashvars.swf", "content2", "300", "120", "6.0.0", "expressInstall.swf", flashvars, params, attributes); < /p> <p>/ / 2,
- 传统的初始化设置,
- 效果一样
- var flashvars = {};
- flashvars.name1 = "hello";
- flashvars.name2 = "world";
- flashvars.name3 = "foobar";
- var params = {};
- params.menu = "false";
- var attributes = {};
- attributes.id = "dynamicContent3";
- attributes.name = "dynamicContent3";
- swfobject.embedSWF("test6_flashvars.swf", "content3", "300", "120", "6.0.0", "expressInstall.swf", flashvars, params, attributes);
- //3, 直接写在后面, 就一句话, 简洁剽悍, 不拖泥带水
- swfobject.embedSWF("test6_flashvars.swf", "content5", "300", "120", "6.0.0", "expressInstall.swf", {
- name1: "hello",
- name2: "world",
- name3: "foobar"
- },
- {
- menu: "false"
- },
- {
- id: "dynamicContent5",
- name: "dynamicContent5"
- });
- </script>
总结
本文解决了 Word 文档在线浏览中遇到所有问题, 提升的过程就是不断总结的过程, 希望本文对你解决该问题有实际性的帮助, 若本文若有不足之处, 还望海涵.
来源: https://www.cnblogs.com/aizai846/p/11348144.html