PDF在线阅读开发经验(FlexPaper+SWFTools+SaveAsPDFandXPS)【转】

1、使用SaveAsPDFandXPS将office文档转换成PDF

http://www.microsoft.com/downloads/details.aspx?FamilyID=4d951911-3e7e-4ae6-b059-a2e79ed87041&displaylang=en

微软原计划让Office 2007直接支持保存为PDF格式,但引起了Adobe的不满,并被指责为垄断,最终被迫放弃,改为以插件的形式予以支持,插件大家都知道怎么回事儿,默认不装,要用你的自己找来装上。不过微软针对这件事情也做出了一个回应:发布XPS, XPS则是微软自己利用XML技术开发的新型文档格式。

该插件支持Office 2007的8个组件,包括Word、Excel、Access、PowerPoint、InfoPath、OneNote、Publisher和Visio。安装插件后,用户即可在上述组件中将相应文档存储为PDF格式或XPS格式,还可以方便地将文档保存为PDF/XPS格式的E-mail附件。

2、下载 SWFTools

SWFTools 是一组用来处理 Flash 的 swf 文件的工具包,包括:

1. 合并工具 swfcombine

2. 抽取工具 swfextract

3. PDF/JPEG/PNG/AVI/TTF/WAV 到 SWF 的转换工具 :pdf2swf, jpeg2swf, png2swf, avi2swf, font2swf, and wav2swf|

4. 文本解析工具 swfstrings

5. SWF 解析器 swfdump

6. SWF 读写库 rfxswflib

其中把pdf转成swf的工具就是pdf2swf了。在命令行中运行pdf2swf src.pdf des.swf一般能满足需求。而命令行参数可以通过pdf2swf -f得到:

-h , –help Print short help message and exit 打印帮助信息

-V , –version Print version info and exit 打印版本号

-o , –output file.swf Direct output to file.swf. If file.swf contains ‘13568621′ (file13568630.swf), then each page指定输出的swf文件名

-p , –pages range Convert only pages in range with range e.g. 1-20

or 1,4,6,9-11 or

指定转换的页面范围,使用的页码描述方法与打印机打印文件时候的选页一样

-P , –password password Use password for deciphering the pdf.指定打开pdf的密码

-v , –verbose Be verbose. Use more than one -v for greater effect.转换时输出详细的内容

-z , –zlib Use Flash 6 (MX) zlib compression.使用Flash 6的zlib压缩机制

-i , –ignore Allows pdf2swf to change the draw order of the pdf. This may make the generated允许程序修改pdf的绘制顺序,可能会导致结果与原来有差异

-j , –jpegquality quality Set quality of embedded jpeg pictures to quality. 0 is worst (small), 100 is best (big). (default:85)设置转换其中的jpeg图片的质量,从0到100,默认值是85。

-s , –set param=value Set a SWF encoder specific parameter. See pdf2swf -s help for more information. 设置SWF转码时候的参数,具体参数可以用pdf2swf -s help获取

-w , –samewindow When converting pdf hyperlinks, don’t make the links open a new window. 设置转换后的swf打开原pdf中的连接时使用相同的窗口

-t , –stop Insert a stop() command in each page. 在每页结尾添加一个stop()命令

-T , –flashversion num Set Flash Version in the SWF header to num. 设置SWF所使用的flash版本号

-F , –fontdir directory Add directory to the font search path. 指定字体文件所在路径

-b , –defaultviewer Link a standard viewer to the swf file. 指定默认的swf导航文件,用来翻页、放大缩小等等

-l , –defaultloader Link a standard preloader to the swf file which will be displayed while the main swf is loading. 指定默认的swf加载文件,用来显示加载进程效果

-B , –viewer filename Link viewer filename to the swf file. 指定swf导航文件,作用同-b

-L , –preloader filename Link preloader filename to the swf file. 指定swf加载文件,作用同-l

-q , –quiet Suppress normal messages. Use -qq to suppress warnings, also. 不打印普通信息,用-qq就不打印警告信息。

-S , –shapes Don’t use SWF Fonts, but store everything as shape. 不使用字体,所有都转为形状。

-f , –fonts Store full fonts in SWF. (Don’t reduce to used characters). 在swf中保存全部字体。

-G , –flatten Remove as many clip layers from file as possible. 在文件中尽量去除影片层,合并它们

-I , –info Don’t do actual conversion, just display a list of all pages in the PDF. 不做实际转换,仅显示PDF的信息。

-Q , –maxtime n Abort conversion after n seconds. Only available on Unix. 如果运行时间超时则退出。

3、java程序,实现上传PDF自动转换成SWF文件

view source

print?

01

//ajax方法,先解密传过来的文件名,根据判断生成SWF文件后跳转至FLASH页面

02

03

if (ajaxAction.equals("exeflash"))//把PDF成SWF

04

{

05

String fn = DecodeUtil.Decrypt(StringUtil.null2String(request.getParameter("fn")).trim()).toLowerCase();

06

try {

07

if (!"".equals(fn) && fn.indexOf("/") > -1 && fn.indexOf(".pdf") > -1) {

08

Map webfileupmap = (Map) Globals.SYS_UPLOAD_CONFIG.get("webfile");

09

String webfilepath = StringUtil.null2String(webfileupmap.get("path")).replace("\\","\\\\");

10

fn = fn.substring(fn.lastIndexOf("/") +1);//aa.pdf

11

webfilepath = webfilepath + fn;

12

File f =new File(webfilepath);

13

if (!f.exists()) {

14

return "error";

15

//如果PDF文件不存在则退出

16

}

17

Map webupmap = (Map) Globals.SYS_UPLOAD_CONFIG.get("web");

18

String webpath = StringUtil.null2String(webupmap.get("path")).replace("\\","\\\\");

19

String urlpath = StringUtil.null2String(webupmap.get("urlpath"));

20

String wname = fn.substring(0, fn.indexOf(".")) +".swf";

21

webpath = webpath + wname;

22

String wurl = urlpath + wname;

23

boolean issc =false;

24

File f2 =new File(webpath);

25

if (!f2.exists()) {

26

issc =true;

27

//如果文件不存在则生成

28

}

29

if (issc) {

30

String cmd ="C:\\SWFTools\\pdf2swf " + webfilepath +" -o " + webpath +" -T 9";

31

if (StringUtil.executeCmdFlash(cmd) ==false) {

32

return "error";

33

}

34

System.out.println("cmd::::::" + cmd);

35

}

36

37

File f1 =new File(webpath);

38

if (f1.exists()) {

39

ajaxstr = DecodeUtil.Encrypt(wurl);

40

}

41

42

}else {

43

return "error";

44

}

45

}catch (Exception e) {

46

Globals.Logger("发生错误:" + e,2);

47

}

48

49

}

注意:

String cmd = “C:\\SWFTools\\pdf2swf ” + webfilepath + ” -o ” + webpath + ” -T 9″;

加 “-T 9” 参数,设置输出版本为flash9,解决PDF文件只有一页,生成的swf不能播放的问题。

另外,若PDF内表格元素过多,在转换时会抛出一堆异常错误。似乎还没有好的解决办法?

view source

print?

01

//java调用cmd命令行方法

02

03

/**

04

* 运行可执行文件

05

*

06

* @param cmd

07

* @return String

08

*/

09

public static synchronized boolean executeCmdFlash(String cmd) {

10

11

try {

12

final Process process = Runtime.getRuntime().exec(cmd);

13

Runtime.getRuntime().addShutdownHook(new Thread() {

14

public void run() {

15

process.destroy();

16

}

17

});

18

InputStreamReader inputstreamreader =new InputStreamReader(process.getInputStream());

19

char c = (char) inputstreamreader.read();

20

if (c !='\uFFFF')

21

stdout.append(c);

22

while (c !='\uFFFF') {

23

if (!inputstreamreader.ready()) {

24

System.out.println(stdout);

25

try {

26

process.exitValue();

27

break;

28

}

29

catch (IllegalThreadStateException _ex) {

30

try {

31

Thread.sleep(100L);

32

}

33

catch (InterruptedException _ex2) {

34

}

35

}

36

}else {

37

c = (char) inputstreamreader.read();

38

stdout.append(c);

39

}

40

}

41

try {

42

inputstreamreader.close();

43

}

44

catch (IOException ioexception2) {

45

System.err.println("RunCmd : Error closing InputStream " + ioexception2);

46

return false;

47

}

48

}catch (Throwable e) {

49

e.printStackTrace();

50

Globals.Logger("发生错误:" + e,2);

51

return false;

52

}

53

54

return true;

55

}

4、利用FlexPaper展示

FlexPaper是一个被设计用来与PDF2SWF一起使用,开源轻量级的在浏览器上显示各种文档的组件, 使在Flex中显示PDF成为可能,而这个过程并无需PDF软件环境的支持。它可以被当做Flex的库来使用。也可以通过将一些例如Word、PPT等文档转成PDF,然后实现在线浏览。

view source

print?

01

SwfFile : escape(host+"/upload/web/2010-05-24-10-21-51139.swf"),

02

Scale : 0.6,

03

ZoomTransition :"easeOut",

04

ZoomTime : 0.5,

05

ZoomInterval : 0.1,

06

FitPageOnLoad :false,

07

FitWidthOnLoad :true,

08

PrintEnabled :false,

09

FullScreenAsMaxWindow :true,

10

localeChain:"zh_CN" //设置为中文

11

};

c执行cmd pdf2swf_PDF在线翻阅开发经验(FlexPaper+SWFTools+SaveAsPDFandXPS)【转】相关推荐

  1. shell执行perl_TOOLFK工具-在线Perl代码执行工具

    本文要推荐的[TOOLFK]在线Perl代码执行工具 ,提供在线Perl代码执行功能. 網站名稱:ToolFk 網站鏈結:https://www.toolfk.com/ 工具链接:https://ww ...

  2. 怎样在Python中执行cmd

    这篇文章主要给大家分享在Python中执行cmd,下文描述了三个方法使用os.system()方法.使用os.popen()方法.使用subprocess.Popen(),需要的朋友可以参考一下 1. ...

  3. java -version cmd_java如何运行步骤cmd?Java执行cmd命令方法有哪些?

    写好一个java程序之后,我们的最终目的就是可以正确的运行程序,如果程序运行正确了,那么代码也就没有什么问题了,可是java如何运行步骤cmd?接下来,我们就来给大家讲解一下这方面的内容. 1.首先用 ...

  4. [Asp.net]使用flexpaper+swftools大文件分页转换实现在线预览

    引言 之前总结了在线预览几种常见解决方案,可以戳这里: http://www.cnblogs.com/wolf-sun/p/3569960.html http://www.cnblogs.com/wo ...

  5. java 执行 cmd 命令(转)

    原文出处:http://blog.csdn.net/saindy5828/article/details/11975527 用JAVA代码实现执行CMD命令的方法 java的Runtime.getRu ...

  6. java执行cmd命令,返回结果中文乱码问题解决

    java执行cmd命令,返回结果中文乱码问题解决 参考文章: (1)java执行cmd命令,返回结果中文乱码问题解决 (2)https://www.cnblogs.com/kwaitfort/p/90 ...

  7. python 命令-python执行cmd命令

    我们在做手机端自动化的时候有时候可能会遇到需要执行cmd命令完成用例,我们一起学习下,通过python脚本执行cmd命令 cmd是什么 cmd是command的缩写.即命令提示行(CMD),是在OS ...

  8. node执行cmd命令方法

    var cmd='tasklist'; //获取 子进程模块的exec方法,用于执行cmd命令 var exec = require('child_process').exec; //运行 定义的cm ...

  9. 【开发环境】Java 文件生成 Windows 系统 .bat 批处理文件并自动执行 ( 输出 GB2312 格式处理中文乱码 | \r\n换行 | Runtime 执行 Cmd 命令 )

    文章目录 Java 文件生成 Windows 系统 .bat 批处理文件并自动执行 1.生成 bat 脚本注意事项 2.Java 执行 Cmd 命令 3.完整代码示例 4.执行结果 Java 文件生成 ...

  10. java 执行cmd windows_Windows平台Java调用cmd命令执行程序

    第一种方式:利用cmd方式 * 执行cmd命令 * * @param command * @throws IOException */ public static String executeCmd( ...

最新文章

  1. 一周一论文(翻译)——[PVLDB 17] Dhalion: 基于Heron自适应调整的流处理系统
  2. SAP UI5 that.getView().bindElement(that.Context)
  3. vue 源码学习(一) 目录结构和构建过程简介
  4. Eclipse如何卸载插件
  5. [Spark] - HashPartitioner RangePartitioner 区别
  6. 自带的jvm监控不准_如何实时监控 Flink 集群和作业?
  7. C语言小游戏之贪吃蛇
  8. CSS常用基础效果---文字与图片并排+导航栏
  9. IPTV在线服务器地址,德芯IPTV网关服务器,德芯直播点播服务器
  10. 简单好听的id_好听的吃鸡id女生两个字
  11. SQL笔面试题:如何求取中位数?
  12. 周赛-mZY寻宝(bfs搜索)
  13. PL3369C原边12W电源芯片
  14. python基于神经机器翻译技术的翻译网站实现
  15. 巧用Photoshop为透明玻璃杯抠图
  16. 创建主键报错:Incorrect column specifier for column ‘id‘
  17. win10在运行命令输入什么可以打开设置
  18. 简单理解与实验生成对抗网络GAN
  19. 欢迎百合网联合创始人慕岩,追梦人创服李圆峰莅临龙测科技投资考察
  20. matlab 离群值去除方法,数据清洗中异常值(离群值)的判别和处理方法

热门文章

  1. Pytorch搭建DenseNet
  2. 淘宝分类大全及其分组 (MySql, xls)文件,上下关系,拼写,层级,层级树,提示,2022年2月28日数据
  3. php 写入txt换行_PHP fwrite 函数:将字符串写入文件(追加与换行)
  4. 解决win10系统俄罗斯精简版用不了打印机问题
  5. 史上最全的福昕高级pdf编辑器安装教程
  6. STM32的FlyMcu程序下载
  7. 如何在云中发掘僵尸网络?
  8. opencv android 车牌,OpenCV + Android +车牌号识别
  9. 酒水茶饮行业的门店管理系统进销存软件怎么挑选?
  10. iso12233测试方法_ISO12233 Test Chart (ISO12233标准分辨率测试卡)使用说明