在html或asp.net中使用FlexPaper
网上已有很多FlexPaper仿百度文库的一些文章,园子里也有很多大牛的详细教程。
结合这次做的例子,在这里详细记录一下使用Flexpaper实现仿百度文库的效果,及自己在跟着园子里的教程做的时候,遇到的一些小问题。希望能给初次接触或者遇到同样问题的同学们提供一些小小的帮助。(描述不足之处,请大家多多见谅,毕竟是第一次在园子里写文章)。
1.准备工作:下载FlexPaper及PDF转换工具pdf2swf.exe
Flexpaper下载地址:下载 (我下的是1.4.5 Flash Version (release notes))
Pdf2swf工具下载:下载 (我下的是swftools-2011-01-23-1815.exe下载后,安装)
2.运行官方的DEMO及Flexpaper的用法
打开刚刚下载好的Flexpaper文件夹,打开里面的例子 index.html,
(1)运行官方的例子,不能加载任何的.swf(包括例子中的swf)(如果能正常显示的话,请跳过这一步)
运行官方例子的时起,连所带的Paper.swf都不能加载成功,只见到右上角的圈圈一直在动,处于等待的状态。如下图:
这种情况,是由于Flexpaper还没获得Adobe Flash的信任,这时你可以前住http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html#119065 为FlexPaper添加信任.进入网页之后 ,点击左边的 Global Security Settings papel 这个选项,然后在右边(如下图)
为你的例子所在的文件夹添加信任。然后你再运行官方的例子,就会发现可以运行成功啦。
(2)Flexpaper的用法
我们可以查看index.html源代码,这里不多说,直接说它的用法吧:
在前端的用法如下:
<!--首先要引入jquery库及相关的js-->
2 <script type="text/javascript" src="js/jquery.js"></script>3 <script type="text/javascript" src="js/flexpaper_flash.js"></script>4 <script type="text/javascript" src="js/flexpaper_flash_debug.js"></script>
html中的代码,只需声明一个a标签即可
<body> <div style="position:absolute;left:10px;top:10px;"><a id="viewerPlaceHolder" style="width:660px;height:480px;display:block"></a> <script type="text/javascript"> var fp = new FlexPaperViewer( 'FlexPaperViewer', 'viewerPlaceHolder', <!--对应于a 标签的id-->
{ config : { SwfFile : escape('ajax.swf'), <!--这句是关键: SwfFile: 指示导入的.swf的路径--> Scale : 0.6, ZoomTransition : 'easeOut', ZoomTime : 0.5, ZoomInterval : 0.2, FitPageOnLoad : true, FitWidthOnLoad : false, PrintEnabled : true, FullScreenAsMaxWindow : false, ProgressiveLoading : false, MinZoomSize : 0.2, MaxZoomSize : 5, SearchMatchAll : false, InitViewMode : 'Portrait', ViewModeToolsVisible : true, ZoomToolsVisible : true, NavToolsVisible : true, CursorToolsVisible : true, SearchToolsVisible : true, localeChain: 'en_US' }});</script></div></body>
基本上,这样就可以在前端显示你的Flexpaper了.
(3)只能加载官方例子所带的swf,但不能加载其他或自己的swf
当我们想要FlexPaper加载我们自己的swf时,发现一直处于等待状态,无法显示,检查swf的路径也没错,但就是一直无法加载。这种情况,很有可能就是.swf文件的版本问题啦。我们运行SWFTools的图形工具(gpdf2swf.exe)把pdf转换为swf,但是转换后的swf也不能被Flexpaper正常加载,如果你确保路径没错的话,那就是版本的问题啦。
我们可以查看转换时swf的版本,我们可以点击 Edit->Options->Viewer
可以看到它帮我们转换为SWF的版本有 7,8两项,但这都是不能正常在FlexPaper中加载的,我们必须把pdf转换为版本为9的swf,才能让它在Flexpaper中显示。那么如何转换为9的呢?我自己是使用cmd命令行工具来手工转换的.只须在命令行添加 "-s flashversion=9" 这句,就可以转换为9的版本啦.示例如下:
参数说明如下:
(SWFTools我的默认安装路径是: E:\Program Files\)
SWFTools:pdf2swf.exe工具所在的文件夹,
-t: 源文件路径,即待转换的pdf文件路径。
-s: 设置参数,这里我们设置为 flashversion=9 ,即可以转换为9 的版本啦。
-o: 输出文件的路径,这里我输出到F:盘下
好了,这样就转换成功啦,你就可以得到一个.swf的文件,你只需拷到你下载的Demo里,配置好路径后,你就会发现FlexPaper可以正常加载你的swf啦.
在这里稍微强调一个小问题:文件夹名字带有空格
对于 -t ,-o 这两个参数,就是对于源文件路径来输出文件路径的问题,如果你的文件夹的名字中,有空格的话,这样是不能找到你的文件的。
比如说:我要转换的pdf源文件在 E:\Program Files\SWFTools\这个文件夹下,当我这样写 -t E:\Program Files\SWFTools\ajax.pdf 或者是输出文件路径写成这样 - o E:\Program Files\SWFTools\ajax.swf 这样都是不能成功的,因为这里面有文件夹名含有空格,这应该是cmd命令的问题(这个我也不是很懂,希望有高手能说一下),这里你只有在路径的前后加上又引号就能成功啦,如: -t "E:\Program Files\SWFTools\ajax.pdf" 或 -o "E:\Program Files\SWFTools\ajax.swf" 这样就OK啦.
3. Asp.net 调用pdf2swf.exe把PDF转换为SWF的用法
代码如下:
1 private static void ConvertCmd(string fileName) 2 { 3 4 using (Process p = new Process()) 5 { 6 string cmdStr = HttpContext.Current.Server.MapPath("~/SWFTools/pdf2swf.exe"); 7 string savePath = HttpContext.Current.Server.MapPath("~/TestSWF/"); 8 // @"""" 相当于一个双引号,之所以要加@"""" 就是为了防止要转换的过程中,文件夹名字带有空格,导致失败 9 string sourcePath = @"""" + savePath + fileName + @"""";10 string targetPath = @"""" + savePath + fileName.Substring(0, fileName.LastIndexOf(".")) + ".swf" + @"""";11 string argsStr = " -t " + sourcePath + " -s flashversion=9 -o " + targetPath;12 //调用新进程 进行转换13 ProcessStartInfo psi = new ProcessStartInfo(cmdStr, argsStr);14 p.StartInfo = psi;15 p.Start();16 p.WaitForExit();17 }18 }
其中,我的pdf文件存放在~/TextSWF/文件夹下,转换后的swf也是存放在同一文件夹下。
按照以上的做法,应该没什么问题,就可以做出类似于百度文库的效果了。
转载自:http://www.cnblogs.com/qinpeifeng107/archive/2011/08/29/2158879.html
另:java中调用exe文件
public class transferExe {public static void main(String[] args) {openWinExe();openExe();}//用 Java 调用windows系统的exe文件,比如notepad,calc之类public static void openWinExe() {Runtime rn = Runtime.getRuntime();Process p = null;try {String command = "notepad";p = rn.exec(command);} catch (Exception e) {System.out.println("Error win exec!");}}//调用其他的可执行文件,例如:自己制作的exe,或是 下载 安装的软件.public static void openExe() {Runtime rn = Runtime.getRuntime();Process p = null;try {p = rn.exec("\"D:/QQ2010.exe\"");} catch (Exception e) {System.out.println("Error exec!");}}}
api的使用:
getDocViewer().gotoPage($('#txt_pagenum').val())
getDocViewer().loadSwf($('#txt_swffile').val())
getDocViewer().fitWidth()
getDocViewer().fitHeight()
alert('Current page:' + getDocViewer().getCurrPage())
getDocViewer().nextPage()
getDocViewer().prevPage()
getDocViewer().setZoom($('#txt_zoomfactor').val())
getDocViewer().searchText($('#txt_searchtext').val())
getDocViewer().switchMode($('#txt_viewmode').val())
getDocViewer().printPaper()
getDocViewer().highlight($('#txt_highlighturl').val())
getDocViewer().postSnapshot($('#txt_postsnapshot').val())
转载于:https://www.cnblogs.com/programmer-wind/archive/2012/07/10/2919630.html
在html或asp.net中使用FlexPaper相关推荐
- ASP.NET中 RequiredFieldValidator(非空验证)的使用
ylbtech-ASP.NET-Control-Validator: RequiredFieldValidator(非空验证)的使用 ASP.NET中 RequiredFieldValidator(非 ...
- 搜集《ASP.NET中常用的26个优化性能方法》
1. 数据库访问性能优化 a.数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接 ...
- 在ASP.NET中跟踪和恢复大文件下载
在Web应用程序中处理大文件下载的问题一直出了名的困难,因此对于大多数站点来说,如果用户的下载被中断了,它们只能说悲哀降临到用户的身上了.但是我们现在不必这样了,因为你可以使自己的ASP.NET应用程 ...
- ASP.NET中使用MD5和SHA1算法加密
你的主页或者你管理的网站有各种密码需要保护,把密码直接放在数据库或者文件中存在不少安全隐患,所以密码加密后存储是最常见的做法.在ASP.NET中实现加密非常容易..NET SDK中提供了CookieA ...
- ASP.NET中如何防范SQL注入式攻击
1将sql中使用的一些特殊符号,如' -- /* ; %等用Replace()过滤: 2限制文本框输入字符的长度: 3检查用户输入的合法性:客户端与服务器端都要执行,可以使用正则. 4使用带参数的SQ ...
- 在ASP.NET 中实现单点登录
出自:[孟宪会之精彩世界] 发布日期:2005年1月27日 8点48分0秒 [有删改] 由于某些原因,在我们的应用中会遇到一个用户只能在一个地方登录的情况,也就是我们通常所说的单点登录.在ASP.NE ...
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
关键字:DataGrid.存储过程.分页 出自: http://blog.csdn.net/yzx110/archive/2004/08/18/78525.aspx 摘要:在最进的一个项目中因为一个管 ...
- 如何在ASP.Net 中把图片存入数据库
介绍 可能有很多的时候,我们急需把图片存入到数据库当中.在一些应用程序中,我们可能有一些敏感的资料,由于存储在文件系统(file system)中的东西,将很容易被某些用户盗取,所以这些数据不能存放在 ...
- 在ASP.NET中随意创建图形信息
如果没有一个外部组件的支持,在ASP中是不能动态创建图形的,不管它是一个图表,一个横幅或仅仅是一个图形计数器.可喜的是,这一点在ASP.NET中改变了.现在,我们只需要使用内置功能,就能够很容易动态创 ...
- 在asp.net中使用客户端脚本
我们常常在asp.net中需要使用到客户端脚本,在asp.net中使用客户端脚本很容易,使用到Page的RegisterClientScriptBlock方法就行了.下面是我写的一段C#代码,用来打开 ...
最新文章
- UI自动化新思路-基于RUNTIME的自动化测试设想
- Layui layedate 弹窗插件,弹出就隐藏, 无法选择
- 现代软件工程 期中/期末总结博客作业
- java enum 长度限制_Java中的Enum的使用与分析
- 另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]
- IEWebBrowser
- 转载 Log4j2在WEB项目中配置
- 华为交换机,登录密码忘记
- No serializer found for class JSONNull and no properties discovered to create BeanSerializer
- Java 枚举 ordinal 使用以及介绍
- python爬虫 | 爬取巨潮资讯上的上市公司招股说明书
- python 东方财富接口_Python从东方财富网站获取数据,python,的
- 液晶显示器画面模糊有毛边解决方法
- (27)Verilog实现倍频【方法四】
- 【计算机网络】超详细——华为eNSP的安装教程
- typescript 提示 Object is possibly null
- 谷歌浏览器主页图片设置
- 数字,字符,字符串转换
- STM32外扩SRAM芯片IS62wv51216兼容替换
- OSError: pydot failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ensur