写本文的缘由:领导有些项目文档需要审阅,网站上的文档只能在线预览,没有提供下载。开始用截屏的方式,可想而知这将会是多大的重复性劳动。所以研究了一下,发现可以曲线救国,所以在这里分享一下。


问题描述:这里遇到的在线文档预览是swf文件,是网站后台采用flexpaper转换后,前台使用Flash进行的预览。打开的文档如下。


解决方案:

这里使用chrome打开的,右键也好还是工具栏也好,都没有提供打印或者下载的方式。好了,F12打开控制台,查看源代码吧。

还好预览文件页面的DOM结构很简单,找到了预览文件的路径,是转换后的swf文件,注意一下 ../ 表示的是源文件所在目录的上一级目录,所以swf文件的路径就是预览页网址将最后一个 / 后面的路径替换为 ../ 后面的路径。将这个路径用浏览器打开,或者用迅雷下载,就得到了swf文件。

下一步就是将swf文件转为pdf了,swf文件用浏览器就可以打开,或者安装Adobe Acrobat后,就有了Macromedia FlashPaper插件,可以直接保存为pdf。可是不知道为什么,chrome只能选择打印一页,所以使用了doPDF转换器,可还是不行,最后竟然用IE可以选择打印所有页。。。

至此在线文档就保存到了本地,当然pdf中仍然是图片格式。


总结:

问题虽然解决,但是还有不少的瑕疵,列举如下。

flexpaper的使用;

安装Adobe Acrobat,直接在线保存swf;

用代码实现网页批量文件下载,比如Python;

用代码实现批量swf文件转换(打印)为pdf。

目前想到的就这么多,希望能帮助到需要的人。

[SWF]在线预览文档下载的更多相关文章

  1. C#在线预览文档(word,excel,pdf,txt,png)

    C#在线预览文档(word,excel,pdf,txt,png) 1.预览方式:将word文件转换成html文件然后预览html文件2.预览word文件:需要引入Interop.Microsoft.O ...

  2. C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)

    由于项目需要,需要一个在线预览office的功能,小编一开始使用的是微软提供的方法,简单快捷,但是不符合小编开发需求, 就另外用了:将文件转换成html文件然后预览html文件的方法.对微软提供的方法 ...

  3. 在线预览文档(支持word、excel、ppt、pdf)+在线预览文档html版(转)

    1.首先上网搜索一下有什么解决方案 (1).将文档转换为html,只支持支持office文档 (2).将文档转换为flash,实现类似百度文库的效果,除支持office文档外还支持pdf (1) a. ...

  4. Java 如何实现在线预览文档及修改(Office文件)

    测试地址: https://sms.idxkj.cn 用户名:aa 密码:123456

  5. Java 如何实现在线预览文档及修改(文本文件)

    暂时未解决的问题:多用户并发修改一个文件 测试地址: http://sms.reyo.cn 用户名:aa 密码:123456

  6. 在其他app里预览文档

    本文转载至 http://www.cocoachina.com/newbie/basic/2013/0515/6212.html iOS中的沙盒可以让平台更加的安全,这也是沙盒给用户带来的最主要好处. ...

  7. 【iOS功能实现】之利用UIDocumentInteractionController打开和预览文档

    iOS提供了使用其他app预览文件的支持,这就是Document Interaction Controller.此外,iOS也支持文件关联,允许其他程序调用你的app打开某种文件.而且,从4.2开始, ...

  8. word转pdf swf 在线预览

    来源:http://www.cnblogs.com/wuhenke/archive/2010/08/01/1789750.html 之前在项目中研究使用了一套word转PDF,然后将PDF转成SWF的 ...

  9. iOS-UIDocumentInteractionController打开和预览文档

    iOS提供了使用其他app预览文件的支持,这就是Document Interaction Controller.此外,iOS也支持文件关联,允许其他程序调用你的app打开某种文件.而且,从4.2开始, ...

随机推荐

  1. 【转】一个安全测试的CheckList

    转自:http://hi.baidu.com/dontcry/item/90c2bc466558c217886d1075 不登录系统,直接输入登录后的页面的URL是否可以访问: 不登录系统,直接输入下 ...

  2. C++ 对象没有显式初始化

    C++ 对象没有显式初始化,结果是什么? 首先考虑非静态对象 1.方法内的局部对象: a.类类型:调用default构造方法 b.基本类型:值不确定 2.类中的数据成员: a.类类型:调用defaul ...

  3. MyBatis之一:入门

    一.什么是Mybatis 可以简单将mybatis理解为ibatis的升级版本,它是一个java的持久层框架,底层依赖jdbc接口,此持久层框架包含sql maps与data access objec ...

  4. boost.asio源码剖析(一) ---- 前 言

    * 前言 源码之前,了无秘密.                                                       ——侯捷 Boost库是一个可移植.提供源代码的C++库,作 ...

  5. 迷途指针 new delete

    编程中有一种很难发现的错误是迷途指针.迷途指针也叫悬浮指针.失控指针,是党对一个指针进行delete操作后——这样会释放它所指向的内存——并没有把它设置为空时产生的.而后,如果你没有重新赋值就试图再次 ...

  6. MySQL_update同一张表

    update tb1 inner join(select type, count(*) as cntfrom tb1 group by type)as der using(type)set tb1.c ...

  7. argparse - 命令行选项与参数解析(转)

    argparse - 命令行选项与参数解析(译)Mar 30, 2013 原文:argparse – Command line option and argument parsing 译者:young ...

  8. TCP/IP协议原理与应用笔记17:IP编址(重点)

    1. IP地址(通用标识符) 对于同一个网络设备(主机或路由器)的不同网络连接,需要不同的IP地址进行标识 2. 主机标识符 主要有下面三种方式的主机标识方式: (1)Name:是什么,可读性强(了解 ...

  9. a code snip

    import java.util.ArrayList; import java.util.HashMap; import java.util.regex.Matcher; import java.ut ...

  10. scrapy yield Request

    import scrapy from myproject.items import MyItem class MySpider(scrapy.Spider): name = ’example.com’ ...