首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

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

2012-09-21 
PDF在线阅读开发经验(FlexPaper+SWFTools+SaveAsPDFandXPS)【转】1、使用SaveAs 31???????????????????????

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

1、使用SaveAs ; 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 sourceprint?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 sourceprint?01SwfFile : 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??????};