论坛引擎:Discuz! 2.5
工具:flexpaper1.5.6 二次开发版本
本文主要探讨大体的思路及相关技术难点问题,属个人工作之余的一些小小开发,仅供探讨,嘿嘿、、、
实现效果如图:
论坛为什么需要在线预览功能,呵呵、、、本公司的论坛就需要这样的功能,还用得着下载再看吗?直接看完不就得了,呵呵、、、
关于flexpapaer的二次开发请参照前文:flexpaper的二次开发总结及探讨
这里主要修改不同点是Diyflexpaper.mxml
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:fp="com.devaldi.controls.flexpaper.*" layout="absolute" width="100%" height="100%" applicationComplete="initApp();"> <mx:Script> <![CDATA[ [Bindable] public var _Scale:Number = 1;//缩放比例 [Bindable] public var _EncodeURI:Boolean = true; [Bindable] public var _SwfFile:String = "";//SWF文件路径 [Bindable] public var _ZoomTransition:String = "easeOut"; [Bindable] public var _ZoomTime:Number = 0.6; [Bindable] public var _ZoomInterval:Number = 0.1; [Bindable] public var _MinZoomSize:Number = 0.3; [Bindable] public var _MaxZoomSize:Number = 5; [Bindable] public var _FitPageOnLoad:Boolean = false;//加载后适合高度 [Bindable] public var _FitWidthOnLoad:Boolean = true;//加载后适合宽度 [Bindable] public var _PrintEnabled:Boolean = false;//是否支持打印 [Bindable] public var _FullScreenAsMaxWindow:Boolean = false;//是否支付全屏 [Bindable] public var _ProgressiveLoading:Boolean = false;//是否延迟加载 [Bindable] public var _localeChain:String = "zh_CN";//语言 private var isFocus:Boolean = false; //初始化参数 private function initApp():void{ _Scale = 1; _SwfFile = this.loaderInfo.parameters.url; _EncodeURI = true; _ZoomTransition = "easeOut"; _ZoomTime = 0.6; _MinZoomSize = 0.2; _MaxZoomSize = 5; _ZoomInterval = 0.1; _FitPageOnLoad =false; _FitWidthOnLoad = true; _PrintEnabled = false; _FullScreenAsMaxWindow = false; _ProgressiveLoading = true; _localeChain ="zh_CN";//语言 //注册事件监听 this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); this.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); } //---------------------------事件------------------------------ private function onMouseOver(event:MouseEvent):void{ this.isFocus = true; } private function onMouseOut(event:MouseEvent):void{ this.isFocus = false; } ]]> </mx:Script> <fp:FlexPaperViewer id="FlexPaper" width="100%" height="100%" Scale="{_Scale}" SwfFile="{_SwfFile}" ZoomTransition="{_ZoomTransition}" ZoomTime="{_ZoomTime}" MinZoomSize="{_MinZoomSize}" MaxZoomSize="{_MaxZoomSize}" ZoomInterval="{_ZoomInterval}" FitPageOnLoad="{_FitPageOnLoad}" FitWidthOnLoad="{_FitWidthOnLoad}" EncodeURI="{_EncodeURI}" FullScreenAsMaxWindow="{_FullScreenAsMaxWindow}" ProgressiveLoading="{_ProgressiveLoading}" /> </mx:Application>
其中 this.loaderInfo.parameters.url 是获取加载该flash的地址参数,并非当前url地址的参数,这样修改主要目的是论坛加载flexpaper时好传递参数。
好了,flexpaper准备完毕,下面就开始为论坛添加插件吧。
以管理员身份登陆discuz论坛管理中心,选择
discuz代码,具体操作很简单,不再阐述,添加一个自定义代码后进入详情:主要设置如下:
替换内容:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="[url=http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0][color=#0000ff]http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0[/color][/url]" width="{1}" height="{2}" type="application/x-shockwave-flash"><param value="true" name="allowfullscreen"><param name="allowScriptAccess" value="always"><param name="movie" value="http://192.168.0.200/flexpaper/Diyflexpaper.swf?url={3}"><param name="quality" value="high"><param name="bgcolor" value="#ffffff"><embed src="http://192.168.0.200/flexpaper/Diyflexpaper.swf?url={3}" quality="high" bgcolor="#ffffff" width="{1}" height="{2}" allowScriptAccess="always"allowfullscreen="true" type="application/x-shockwave-flash" pluginspage="[url=http://www.macromedia.com/go/getflashplayer][color=#0000ff]http://www.macromedia.com/go/getflashplayer[/color][/url]" wmode="transparent" /></object>
http://192.168.0.200/flexpaper/Diyflexpaper.swf 这是我的flexpaper地址
参数个数:3
参数提示语:
请输入 阅读器 的宽度: 请输入 阅读器 的高度: 请输入需要打开的flash地址:
其余默认,提交后添加用户组使用权限,在发贴时便可看到如下图标了:
这里打开的flash地址是.../swf/1.swf,下面探讨flash地址问题:
1、该地址是已经实现pdf转为swf的文件地址,本文效果图为手动转换后上传到服务器的,那么对于一般用户怎么用呢?
该论坛全部用php开发,本人实在不会,呵呵,不然就可以写一个后台转换程序,这里让用户输入的地址为客户端pdf什么的文件地址,提交后转换程序进行上传并转换,这样就完美了。