FlexPaper+SwfTools实现的在线文档功能
最近一个项目需要实现一个在线浏览文档的功能。准备使用FlexPaper配合Pdf2Swf实现。
主要需求在于:
➔ 文档页数很多,少则几百页,多则上千页。
➔ 相应的文档大小也在50MB以上。
根据需求,将该功能拆分成了三部分:
➔ 上传:支持大文件,断点续传。
➔ 文件转换服务:在后台进行Pdf转Swf。
➔ 在线浏览:分页加载。
其中文件上传部分是我同事实现的,这里主要讲下后台服务和在线浏览部分。
文件转换服务
大体思路是:
后台服务定时扫描文件夹PdfPath,如果发现Pdf文件,则调用Pdf2Swf.exe,将PDF逐页转换成Swf文件,存入SwfPath中的与文件名称对应的文件夹里。
这里使用了SwfTools套件中的Pdf2Swf工具:下载
主要代码:
Pdf2Swf调用代码
![]() |
写服务的时候遇到一个奇怪的Bug,发布为服务的时候,测试用的Pdf文件每次转换到37页的时候就卡住了,但是用命令行进行调试的时候却一切OK。 |
之前在测试的时候,发现转换过程中会出现文字丢失的现象。这里使用了-s drawonlyshapes 这个参数,将Pdf全部作为图片转换的。这样虽然保证了兼容性,但是牺牲了空间。作为图片生成的Swf比文本格式的Swf要大不少,不知道大家有没有什么好的解决方法。
在线浏览
FlexPaper支持分页加载,采用{filename[*,padding],total pages}这种语法即可。
主要代码:
<a id="viewerPlaceHolder" style="width: 800px; height: 600px; display: block"></a> <script type="text/javascript">
var fp = new FlexPaperViewer(
'FlexPaperViewer',
'viewerPlaceHolder', { config: {
SwfFile: 'SwfFolder/<%=Folder %>/{<%=Folder %>[*,0].swf,<%=PageNum %>}',
localeChain: "zh_CN", //中文
Scale: 1,
ZoomTransition: 'easeOut',
ZoomTime: 0.5,
ZoomInterval: 0.2,
FitPageOnLoad: false,
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
}
});
</script>
![]() |
FlexPaper无法载入中文文件名。如果右上角的圈圈一直在转,注意是不是文件名称的问题。 |
参考文章
c# System.Diagnostics.Process 调用外部程序时WaitForExit锁死问题分析及解决方案
FlexPaper+SWFTools 实现仿百度文库及一些小问题
源码
分页加载:FlexPaper.zip
文件转换服务:PDFtoSWFService.zip
FlexPaper+SwfTools实现的在线文档功能的更多相关文章
- Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现
笔者最近在给客户开发文档管理系统时,客户要求上传到管理系统的文档(包括ppt,word,excel,txt)只能预览不允许下载.笔者想到了百度文库和豆丁网,百度文库和豆丁网的在线预览都是利用flash ...
- java实现在线浏览PDF文档功能
实现在线浏览pdf文档功能(本代码适用于项目服务中固定的并且少量的pdf浏览,比如注册时的注册条款在线浏览等): //设置响应内容类型为PDF类型 response.setContentType(&q ...
- java实现在线文档浏览
目前发现两种方法: 1.http://dxx23.iteye.com/blog/1947083 FlexPaper+SWFTools ,java实现在线文档浏览 2.webOffice
- 在线文档预览方案-office web apps续篇
上一篇在线文档预览方案-office web apps发布后收到很多网友的留言提问,所以准备再写一篇,一来介绍一下域控服务器安装,总结一下大家问的多的问题,二来宣传预览服务安装与技术支持的事情. 阅读 ...
- jQuery实现在线文档
1.1.1 摘要 现在,许多网站都提供在线图片和图书阅读的功能,这种方式比下载后阅读来的直观和人性化,要实现该功能涉及到点击处理和图片动态加载. 在接下来的博文中,我们将通过Javascript方式实 ...
- 在线文档预览方案-office web apps
最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...
- [转载]在线文档预览方案-Office Web Apps
最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...
- Mergely – 免费的在线文档对比和合并工具
任何类型的文件(无论是否代码),我们可能要比较不同的版本,看发生了什么变化. 有些编辑器都有这个内置功能,其中一些则没有. Mergely 是一个免费使用的 Web 应用程序,帮你你迅速作出文档的差异 ...
- SpringBoot整合Swagger2搭建API在线文档
Swagger,中文"拽"的意思,它是一个功能强大的在线API在线文档,目前它的版本为2.x,所以称为Swagger2.Swagger2提供了在线文档的查阅和测试功能.利用Swag ...
随机推荐
- Spring cloud微服务实战——基于OAUTH2.0统一认证授权的微服务基础架构
https://blog.csdn.net/w1054993544/article/details/78932614
- 解决:IOS viewDidAppear/viewWillAppear无法被调用
本文转载至 http://my.oschina.net/lvlove/blog/82264 原因: 苹果的文档是这样描述的: If the view belonging to a view con ...
- 九度OJ 1157:中位数 (中位数、排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2188 解决:1294 题目描述: 中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数). 给出一 ...
- 20179209《Linux内核原理与分析》第一周作业
如何揭开Linux操作系统的最大面纱 个人认为,真正理解一个操作系统最根本的就是理解其文件系统结构. 自windows图形界面诞生,国内大多数用户都选择了windows操作系统,很多人觉得window ...
- Linux 日志命令
当日志文件存储日志很大时,我们就不能用vi直接进去查看日志,需要Linux的命令去完成我们的查看任务 Log位置: /var/log/message 系统启动后的信息和错误日志,是Red Hat Li ...
- Android笔记之使用ImageView加载网络图片以及保存图片到本地并更新图库
ImageView显示网络图片 findViewById(R.id.btnLoad).setOnClickListener(new View.OnClickListener() { @Override ...
- 在RedHat Linux系统中安装和配置snmp服务
检查系统是否安装snmp服务 # rpm -qa|grep snmp net-snmp-5.3.2.2-17.el5 net-snmp-perl-5.3.2.2-17.el5 net-snmp-dev ...
- 在pycharm中执行脚本没有报错但输出显示Redirection is not supported.
没有新式语法错误,但是输出显示Redirection is not supported.(不支持重定向) 在stockflow中找到是因为从IDE中运行脚本的原因,比如pycharm,所有IDE都提供 ...
- Node.js学习笔记(1):Node.js快速开始
Node.js学习笔记(1):Node.js快速开始 Node.js的安装 下载 官方网址:https://nodejs.org/en/ 说明: 在Windows上安装时务必选择全部组件,包括勾选Ad ...
- Database: key
super-key: Any key that has more columns than necessary to uniquely identify each row in the table i ...

