源起看到某个公司内网的公文使用FlexPaper组件来显示文档,在这儿是GoogleCode Project的主页, 还有现在的官方主页。目前FlexPaper是个开源项目,GPLv3协议下免费使用,也有商业许可版本与无限制版。下面我们先介绍如何从预览的SWF中保存成PDF文档。

        查看网页html,找到如下,看到这里使用是FlexPaperViewer 1.5.1:

<object width="100%" height="100%" id="_571282476" name=
"_571282476" data=
"/st/static/common/js/flexpaper/FlexPaperViewer1.5.1.swf" type=
"application/x-shockwave-flash"><param name="wmode" value=
"transparent">
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="quality" value="high">
<param name="flashvars" value=
"SwfFile=%2Fodm%2Fdocument%2Fdocument!getSWFStream.action%3FdocumentId%3D8126&amp;Scale=0.95&amp;ZoomTransition=easeOut&amp;ZoomTime=0.5&amp;ZoomInterval=0.2&amp;FitPageOnLoad=true&amp;FitWidthOnLoad=true&amp;MinZoomSize=0.2&amp;MaxZoomSize=5&amp;InitViewMode=Portrait&amp;ViewModeToolsVisible=true&amp;ZoomToolsVisible=true&amp;NavToolsVisible=true&amp;CursorToolsVisible=true&amp;SearchToolsVisible=true&amp;localeChain=zh_CN&amp;key=$72815cdaaec3681f9d0"></object>

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

 

提取出的参数是这样的:

SwfFile=%2Fodm%2Fdocument%2Fdocument!getSWFStream.action%3FdocumentId%3D8127

&Scale=0.95&ZoomTransition=easeOut

&ZoomTime=0.5&ZoomInterval=0.2&FitPageOnLoad=true

&FitWidthOnLoad=true

&MinZoomSize=0.2&MaxZoomSize=5

&InitViewMode=Portrait

&ViewModeToolsVisible=true

&ZoomToolsVisible=true&NavToolsVisible=true

&CursorToolsVisible=true&SearchToolsVisible=true&localeChain=zh_CN

 

FlexPaper部分参数说明

SwfFile(String):需要使用FlexPaper打开的文档

Scale(Number):初始化缩放比例,参数值应该是大于零的整数(1=100%)

ZoomTransition(String):FlexPaper中缩放样式,它使用和Tweener一样的样式,默认参数值为easeOut,其他可选值包括:easenone,easeout,linear,easeoutquad

ZoomTime(Number):从一个缩放比例变为另外一个缩放比例需要花费的时间,该参数值应该为0或更大

ZoomInterval(Number):缩放比例之间间隔,默认值为0.1,该值应该为正数

FitPageOnLoad(Boolean):初始化时自适应页面,与使用工具栏上的适应页面按钮同样的效果

FitWidthOnLoad(Boolean):初始化时自适应页面宽度,与工具栏上的适应宽度按钮同样的效果

 

看上面的参数,我们得知 %2Fodm%2Fdocument%2Fdocument!getSWFStream.action%3FdocumentId%3D8127  这个字符串是文件源,然后我们可以使用百度应用URL解码得到这样的结果/odm/document/document!getSWFStream.action?documentId=8127, 然后我们就可以直接在浏览器访问拼接以后的URL

http://odm.xxxxx.com/odm/document/document!getSWFStream.action?documentId=8127

 

        这时我们可以使用打印文件方式来保存为PDF文件, 借用doPdf,Pdf factory组件也可以轻易保存PDF。到这儿我们是逆向的方式来保存文档。

        FlexPaper目前最新版本是2.2.1,另外还有一个开源项目swftools可以转换pdf文件到swf文件。下载服务端DEMO,可以看到支持asp.net, java, php平台。 以下介绍Asp.net下,有几个简单的页面来配置,之前把...\FlexPaper_2.2.1\aspnet设为Application,这些webform的文件带有cs源文件,可以修改重新编译,或是改写为Asp.net MVC也不是什么难事。如下图是显示当前路径下的文档:

 

当我们打开这个文件在IE9中是这样的:

 

看服务端文档的目录下文件Performance Driven IT Management.pdf, 有被自动转换了许多的Performance Driven IT Management.pdf1.swf…的文件。这样是为了加快加载速度。这样,借用Flexpaper与swftools我们很容易构建WEB在线PDF文档浏览系统。

 

您可能感兴趣的文章:

使用PDFBox提取PDF文件中文本

 

作者:Petter Liu

出处:http://www.cnblogs.com/wintersun/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

该文章也同时发布在我的独立博客中-Petter Liu Blog

FlexPaper 2.2.1介绍与提取嵌入的文档的更多相关文章

  1. Visual Studio 2008(C#)XML注释提取成帮助文档的方法

    Visual Studio 2008(C#)XML注释提取成帮助文档的方法     1.给方法和类添加XML注释 可以手动添加,具体规则可以看MSDN:http://msdn.microsoft.co ...

  2. NVelocity介绍,NVelocity中文手册文档及实例下载

    NVelocity是什么velocity英音:[vi'lɔsiti]美音:[və'lɑsətɪ]近在做一个项目,客户要求有网站模板功能,能够自主编辑网站的风格,因为这个系统是为政府部门做子站系统,举个 ...

  3. flexpaper 开源轻量级的在浏览器上显示各种文档的组件

    FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与PDF2SWF一起使用, 使在Flex中显示PDF成为可能,而这个过程并无需PDF软件环境的支持.它可以被当做Flex的库 ...

  4. 提取一个txt 文档中含指定字符串的所有行

    将一个txt 文档中含指定字符串内容的所有行提取出来并保存至新的txt文档中 例如,要提取 1.txt 中所有包含”aaa” 的行的内容 只需在此文件夹中新建一个bat文件,输入以下代码,双击运行,便 ...

  5. 运用Edraw为WPF应用程序嵌入Office文档的方法总结

    具体描述了运用Edraw Office Viewer Component为WPF应用长须嵌入MS Word,Excel以及Power Point的方法. 打开Visual Studio,并创建一个新的 ...

  6. rbac介绍、自动生成接口文档、jwt介绍与快速签发认证、jwt定制返回格式

    今日内容概要 RBAC 自动生成接口文档 jwt介绍与快速使用 jwt定制返回格式 jwt源码分析 内容详细 1.RBAC(重要) # RBAC 是基于角色的访问控制(Role-Based Acces ...

  7. C# 提取Word文档中的图片

    C# 提取Word文档中的图片 图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...

  8. Poi之Word文档结构介绍

    1.poi之word文档结构介绍之正文段落 一个文档包含多个段落,一个段落包含多个Runs,一个Runs包含多个Run,Run是文档的最小单元 获取所有段落:List<XWPFParagraph ...

  9. 使用Java POI来选择提取Word文档中的表格信息

    通过使用Java POI来提取Word(1992)文档中的表格信息,其中POI支持不同的ms文档类型,在具体操作中需要注意.本文主要是通过POI来提取微软2003文档中的表格信息,具体code如下(事 ...

随机推荐

  1. PowerShell定时记录操作系统行为

    作为系统管理员,有些时候是需要记录系统中的其他用户的一些操作行为的,例如:当系统管理员怀疑系统存在漏洞,且已经有被植入后门或者创建隐藏账户时,就需要对曾经登陆的用户进行监控,保存其打开或者操作过的文件 ...

  2. git 在提交之前撤销add操作

    问题 在使用git时,在未添加.ignore文件前使用 git add . 将所有文件添加到库中,不小心将一些不需要加入版本库的文件加到了版本库中.由于此时还没有提交所以不存在HEAD版本,不能使用 ...

  3. iOS开发之时间格式的转化

    在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如:如何将格式为“12-May-14 05.08.02.000000 PM” ...

  4. coreData 深入理解4 --总结 (线程安全与同步--iOS5 前后对比)

    Core Data是iOS中很重要的一个部分,可以理解为基于SQLite(当然也可以是其他的Storage,如In-memory,只是SQLite比较常见)的一个ORM实现,所以有关系数据库的特性,又 ...

  5. 跟随标准与Webkit源码探究DOM -- 获取元素之getElementsByName

    按照name属性获取多元素 -- getElementsByName 标准 DOM 1 定义在HTMLDocument Interface 中,原型NodeList getElementsByName ...

  6. [转] 关于hibernate的缓存使用

    http://blog.csdn.net/woshichenxu/article/details/586361 1.     关于hibernate缓存的问题: 1.1.1.         基本的缓 ...

  7. crontab 定时调度

    crontab -e */1 8-23 * * * /www/target/sh/myorder.sh & 0 1 * * * /www/target/php/sh/mymoney.sh &a ...

  8. ruby AES加密解密

    最近和京东合作做一个项目,在接口对接传递参数时,参数需要通过AES加密解密. 本来想到用gem 'aescrypt'处理,但是aescrypt的编码方式用的base64,而京东那边用的是16进制.所以 ...

  9. Visual Studio工具——为编辑器增加垂直辅助线

    原文:<Visual Studio工具> Posted on 2014/03/13 ==================================================== ...

  10. 游戏开发工具之纹理打包器-3.使用GDI+绘图

    上一次我们实现了把我们要的图片添加到CTreeCtrl控件里去,并显示图片的缩略图,现在开始我们要讲比较重要的部分--绘图区.为了实现能编辑图片的功能,绘图区应该具有如下功能. 1.  添加删除图片. ...