源起看到某个公司内网的公文使用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. Win7下安装配置gVim

    本文根据vim官网的<Simple Steps to Help You Install gVim on Windows 7>[1]一文整理而成. 1. 下载gVim 在http://www ...

  2. HTTP 头部详细解释

    HTTP 头部解释 ================================================   Accept 告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,ty ...

  3. MMO之禅(三)职业能力

    MMO之禅(三)职业能力 --技术九层阶梯 Zephyr 201304 有了精神,我们还需要实际的行动. 到底需要什么能力?自我分析,窃以为为有九层,无所谓高低,因为每一层都需要不断地砥砺,编程,本身 ...

  4. 让mingw gdb支持STL,并自动load .gdbinit

    环境要求:python (2.7版本可以,3.x没测过),mingw官方版(你可能已经有了),gdb2013-02-04(到这里https://code.google.com/p/qp-gcc/dow ...

  5. Ubuntu下的防火墙

    Ubuntu下的防火墙Gufw-ufw Gufw是ufw的桌面版本,网上有Gufw的安装和配置方法,但是我认为并不是很好.网上的教程也有点愚弄大众的嫌疑,因为按照他的说法,最后防火墙根本就无法自动启动 ...

  6. Linux高级编程--10.Socket编程

    Linux下的Socket编程大体上包括Tcp Socket.Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较 ...

  7. Screen Space Subsurface Scatting(Skin Rendring)

    还差通透度计算,RenderMonkey截图. 参考: http://developer.download.nvidia.com/presentations/2007/gdc/Advanced_Ski ...

  8. 重识JavaScript 之 JavaScript的组成

    JavaScript由ECMAScript.DOM.BOM组成. 简单认识: ECMAScript:首先它不是一门编程语言,而是一个标准,规定这些浏览器的脚步语言必须按照它的规定去做. DOM     ...

  9. php -- php读取sqlserver2005的数据实现分页查询

    --php5.2 --sqlserver2005 php读取sqlserver多条数据时,有时因为数据太多,需要进行分页查询. 例如,按价格的顺序,读取同一类型的产品的第30到第48条记录 $star ...

  10. Tips12: 私人定制 专属的Unity3D 脚本模板

    在使用U3D的过程中,新建一个C#脚本,它包含着空的Start()和Update()函数.  根据个人习惯的不同,可能有些人有着自己的脚本风格,每次进去都增删改很麻烦,这里介绍一个更改新建脚本模板的方 ...