- 浏览: 140965 次
- 性别:
- 来自: 杭州
最新评论
-
kingtoon:
直接升级到tomcat7就ok了
AppScan安全漏洞报告 -
shayuan312:
楼主您好,可以把这个的源码给我发一份么?395428137@q ...
FlexPaper+SWFTools ,java实现在线文档浏览 -
静夜一曲:
能否设置立即发送邮件呢?
Log4j发送日志邮件功能 -
Dxx23:
zengxuefei 写道 ,贴出来的代码根本不能执行,好多错 ...
FlexPaper+SWFTools ,java实现在线文档浏览 -
zengxuefei:
,贴出来的代码根本不能执行,好多错误,尤其是缺少了CnToS ...
FlexPaper+SWFTools ,java实现在线文档浏览
1、安装openoffice,OpenOffice_3.4.0_Win_x86_zh-CN.zip,使用新建OpenOfficeService.properties文件,放到src目录下
2、下载 jodconverter-2.2.2,将lib目录所有jar 复制到项目 lib目录
3、 下载swftools-0.9.2.exe 安装后,复制安装目录中到 pdf2swf.exe 到项目附件目录中。
4、下载Flexpaper,引用其中的js
5、在环境变量中的Path配置如下:(注最后的“;”不要)
C:\Program Files (x86)\OpenOffice.org 3\program;D:\IdeaProjects\zsbk\zsbk\out\artifacts\zsbk_war_exploded\JS\StreetMap\flexpaper
参考:
http://blog.csdn.net/authorzhh/article/details/7470048
http://www.cnblogs.com/qinpeifeng107/archive/2011/08/29/2158879.html
已补充两个公共类,其他架包什么的自己下,是一个成功事例,所以才把代码贴上。
OO_HOME = C:\\Program Files (x86)\\OpenOffice.org 3 oo_host = 127.0.0.1 oo_port = 8100
2、下载 jodconverter-2.2.2,将lib目录所有jar 复制到项目 lib目录
3、 下载swftools-0.9.2.exe 安装后,复制安装目录中到 pdf2swf.exe 到项目附件目录中。
4、下载Flexpaper,引用其中的js
5、在环境变量中的Path配置如下:(注最后的“;”不要)
C:\Program Files (x86)\OpenOffice.org 3\program;D:\IdeaProjects\zsbk\zsbk\out\artifacts\zsbk_war_exploded\JS\StreetMap\flexpaper
<%@ page import="com.xxx.util.FlashUtil" %> <%-- Created by IntelliJ IDEA. Date: 13-7-11 Time: 上午8:34 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String applicationPath = application.getRealPath(""); // String filePath="http://x.x.x.x/JieJing/"; String fileName=request.getParameter("fileName"); String contextPath = request.getContextPath(); String flashFile = null; String filePath = null; if(fileName.indexOf("gisPhotos")!=-1){ fileName = fileName.substring(fileName.lastIndexOf("gisPhotos/"),fileName.length()); filePath =applicationPath + "\\JS\\StreetMap"; flashFile = new FlashUtil().beginConvert(filePath,fileName);//绝对路径 相对路径 flashFile = "\\JS\\StreetMap\\" +flashFile; flashFile = contextPath+flashFile.replace("\\","/"); }else{ filePath =applicationPath + "\\JS\\StreetMap\\flexpaper"; // fileName = new String(fileName.getBytes("ISO-8859-1"),"UTF-8"); flashFile = new FlashUtil().beginConvert(filePath,fileName);//绝对路径 相对路径 } %> <html> <head> <title>在线文档浏览</title> <style type="text/css" media="screen"> html, body { height:100%; } body { margin:0; padding:0; overflow:auto; } </style> <script type="text/javascript" src="js/flexpaper_flash.js"></script> </head> <body> <div style="position:absolute;left:0px;top:0px;width:100%;height:100%;"> <a id="viewerPlaceHolder" style="width:100%;height:100%;display:block"></a> <script type="text/javascript"> var fp = new FlexPaperViewer( 'FlexPaperViewer', 'viewerPlaceHolder', { config : { SwfFile : escape('<%=flashFile%>'), Scale : 0.6, ZoomTransition : 'easeOut', ZoomTime : 0.5, ZoomInterval : 0.2, FitPageOnLoad : true, FitWidthOnLoad : false, PrintEnabled : true, FullScreenAsMaxWindow : false, ProgressiveLoading : false, MinZoomSize : 0.2, MaxZoomSize : 5, SearchMatchAll : false, InitViewMode : 'Portrait', ViewModeToolsVisible : true, ZoomToolsVisible : true, NavToolsVisible : true, CursorToolsVisible : true, SearchToolsVisible : true, localeChain: 'zh_CN' }}); </script> </div> </body> </html>
package com.xxx.util; import java.io.BufferedInputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.ConnectException; import com.artofsolving.jodconverter.DocumentConverter; import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection; import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection; import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter; /** * Created with IntelliJ IDEA. * Date: 13-7-11 * Time: 上午10:46 * To change this template use File | Settings | File Templates. */ public class FlashUtil { public static void main(String[] args){ String outPath = new FlashUtil().beginConvert("","附件.pdf"); System.out.println("生成swf文件:" + outPath); // boolean outPath = new FlashUtil().isExistFlash("123.pdf"); // System.out.println("是否存在swf文件:" + outPath); } private static final String DOC = ".doc"; private static final String DOCX = ".docx"; private static final String XLS = ".xls"; private static final String XLSX = ".xlsx"; private static final String PDF = ".pdf"; private static final String SWF = ".swf"; private static final String TOOL = "pdf2swf.exe"; /** * 入口方法-通过此方法转换文件至swf格式 * @param filePath 上传文件所在文件夹的绝对路径 * @param fileName 文件名称 * @return 生成swf文件名 */ public String beginConvert(String filePath,String fileName) { String outFile = ""; String fileNameOnly = ""; String fileExt = ""; if (null != fileName && fileName.indexOf(".") > 0) { int index = fileName.indexOf("."); fileNameOnly = fileName.substring(0, index); fileExt = fileName.substring(index).toLowerCase(); } String inputFile = filePath + File.separator + fileName; String outputFile = ""; //如果是flash文件,直接显示 if(fileExt.equals(SWF)){ outFile = fileName; }else { //主要是针对中文汉字转拼音 fileNameOnly = new CnToSpell().getPinYin(fileNameOnly); //如果存在对应的flash文件 boolean isExistFlash = isExistFlash(filePath,fileNameOnly); if(isExistFlash){ outFile = fileNameOnly + SWF; }else { //如果是office文档,先转为pdf文件 if (fileExt.equals(DOC) || fileExt.equals(DOCX) || fileExt.equals(XLS) || fileExt.equals(XLSX)) { outputFile = filePath + File.separator + fileNameOnly + PDF; File pdfFile = new File(outputFile); if(!pdfFile.exists()){//判断pdf文件是否已经生成 office2PDF(inputFile, outputFile); } inputFile = outputFile; fileExt = PDF; } if (fileExt.equals(PDF)) { outputFile = filePath + File.separator + fileNameOnly + SWF; outputFile = outputFile.replace("\\","/"); File swfFile = new File(outputFile); if(!swfFile.exists()){//判断swf文件是否已经生成 File parentFolder = swfFile.getParentFile(); if(parentFolder!=null&&!parentFolder.exists()){ parentFolder.mkdirs(); } String toolFile = null; if(filePath.indexOf("flexpaper")==-1){ toolFile = filePath + File.separator +"flexpaper"+ File.separator + TOOL; }else{ toolFile = filePath + File.separator + TOOL; } convertPdf2Swf(inputFile, outputFile, toolFile); } outFile = fileNameOnly + SWF; } } } return outFile; } /** * 将pdf文件转换成swf文件 * @param sourceFile pdf文件绝对路径 * @param outFile swf文件绝对路径 * @param toolFile 转换工具绝对路径 */ private void convertPdf2Swf(String sourceFile, String outFile, String toolFile) { String command = toolFile + " \"" + sourceFile + "\" -o \"" + outFile + "\" -s flashversion=9 "; try { Process process = Runtime.getRuntime().exec(command); System.out.println(loadStream(process.getInputStream())); System.err.println(loadStream(process.getErrorStream())); System.out.println(loadStream(process.getInputStream())); System.out.println("###--Msg: swf 转换成功"); } catch (Exception e) { e.printStackTrace(); } } /** * 检测文件夹下是否已存在对应的flash文件 * @return */ private boolean isExistFlash(String filePath,String fileNameOnly){ String fileName = fileNameOnly.substring(fileNameOnly.lastIndexOf("/")+1); String newFilePath = fileNameOnly.substring(0 ,fileNameOnly.lastIndexOf("/")+1); File file = new File(filePath + File.separator+newFilePath); if(!file.exists()){//判断是否已经生成新文件夹,然后再去判断文件夹是否存在对应的flash文件 return false; } File[] files = file.listFiles(); for(int j=0;j<files.length;j++){ if(files[j].isFile()){ String filesName = files[j].getName(); if(filesName.indexOf(".")!=-1){ if(SWF.equals(filesName.substring(filesName.lastIndexOf(".")).toLowerCase())){ if(fileName.equals(filesName.substring(0,filesName.lastIndexOf(".")))){ return true; } } } } } return false; } /** * office文档转pdf文件 * @param sourceFile office文档绝对路径 * @param destFile pdf文件绝对路径 * @return */ private int office2PDF(String sourceFile, String destFile) { String OpenOffice_HOME = CommUtil.OpenOffice_HOME; String host_Str = CommUtil.host_Str; String port_Str = CommUtil.port_Str; try { File inputFile = new File(sourceFile); if (!inputFile.exists()) { return -1; // 找不到源文件 } // 如果目标路径不存在, 则新建该路径 File outputFile = new File(destFile); if (!outputFile.getParentFile().exists()) { outputFile.getParentFile().mkdirs(); } // 启动OpenOffice的服务 String command = OpenOffice_HOME + "\\program\\soffice.exe -headless -accept=\"socket,host=" + host_Str + ",port=" + port_Str + ";urp;\""; System.out.println("###\n" + command); Process pro = Runtime.getRuntime().exec(command); // 连接openoffice服务 OpenOfficeConnection connection = new SocketOpenOfficeConnection( host_Str, Integer.parseInt(port_Str)); connection.connect(); // 转换 DocumentConverter converter = new OpenOfficeDocumentConverter( connection); converter.convert(inputFile, outputFile); // 关闭连接和服务 connection.disconnect(); pro.destroy(); return 0; } catch (FileNotFoundException e) { System.out.println("文件未找到!"); e.printStackTrace(); return -1; } catch (ConnectException e) { System.out.println("OpenOffice服务监听异常!"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return 1; } static String loadStream(InputStream in) throws IOException{ int ptr = 0; in = new BufferedInputStream(in); StringBuffer buffer = new StringBuffer(); while ((ptr=in.read())!= -1){ buffer.append((char)ptr); } return buffer.toString(); } }
package xxx.platform.util; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; /** * Created with IntelliJ IDEA. * User: xxx * Date: 13-7-12 * Time: 下午3:52 * To change this template use File | Settings | File Templates. */ public class CnToSpell { public String getPinYin(String src) { char[] t1 = null; t1 = src.toCharArray(); String[] t2 = new String[t1.length]; // 设置汉字拼音输出的格式 HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat(); t3.setCaseType(HanyuPinyinCaseType.LOWERCASE); t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE); t3.setVCharType(HanyuPinyinVCharType.WITH_V); String t4 = ""; int t0 = t1.length; try { for (int i = 0; i < t0; i++) { // 判断是否为汉字字符 if (Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) { t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);// 将汉字的几种全拼都存到t2数组中 t4 += t2[0];// 取出该汉字全拼的第一种读音并连接到字符串t4后 } else { // 如果不是汉字字符,直接取出字符并连接到字符串t4后 t4 += Character.toString(t1[i]); } } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } if(t4.indexOf("【")!=-1){ t4 = t4.replace("【","["); } if(t4.indexOf("】")!=-1){ t4 = t4.replace("】","]"); } if(t4.indexOf("(")!=-1){ t4 = t4.replace("(","("); } if(t4.indexOf(")")!=-1){ t4 = t4.replace(")",")"); } return t4; } public String getPinYinHeadChar(String str) { String convert = ""; for (int j = 0; j < str.length(); j++) { char word = str.charAt(j); // 提取汉字的首字母 String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word); if (pinyinArray != null) { convert += pinyinArray[0].charAt(0); } else { convert += word; } } return convert; } public String getCnASCII(String cnStr) { StringBuffer strBuf = new StringBuffer(); // 将字符串转换成字节序列 byte[] bGBK = cnStr.getBytes(); for (int i = 0; i < bGBK.length; i++) { strBuf.append(Integer.toHexString(bGBK[i] & 0xff)); } return strBuf.toString(); } public static void main(String[] args) { CnToSpell cnToSpell = new CnToSpell(); String cnStr = "中华人民共和国(A-C)(12)_12345"; System.out.println(cnToSpell.getPinYin(cnStr)); System.out.println(cnToSpell.getPinYinHeadChar(cnStr)); System.out.println(cnToSpell.getCnASCII(cnStr)); } }
package xxx.platform.util; import java.util.ResourceBundle; /** * Created with IntelliJ IDEA. * User: xxx * Date: 13-7-12 * Time: 上午8:42 * To change this template use File | Settings | File Templates. */ public class CommUtil { public static final String OpenOffice_HOME; public static final String host_Str; public static final String port_Str; static { ResourceBundle rb = ResourceBundle.getBundle("OpenOfficeService"); OpenOffice_HOME = rb.getString("OO_HOME"); host_Str = rb.getString("oo_host"); port_Str = rb.getString("oo_port"); } public static int strToInt(String str){ int i =0; if(str!=null&&!"".equals(str)){ i = Integer.parseInt(str); } return i; } public static double strToDouble(String str){ double d =0.0; if(str!=null&&!"".equals(str)){ d = Double.parseDouble(str); } return d; } }
参考:
http://blog.csdn.net/authorzhh/article/details/7470048
http://www.cnblogs.com/qinpeifeng107/archive/2011/08/29/2158879.html
评论
3 楼
shayuan312
2015-11-24
楼主您好,可以把这个的源码给我发一份么?395428137@qq.com 你这个我看了好久没实现啊 拜托大神了
2 楼
Dxx23
2014-02-25
zengxuefei 写道
,贴出来的代码根本不能执行,好多错误,尤其是缺少了CnToSpell和CommUtil类。楼主说的步骤走确定已经完成没有错误
已补充两个公共类,其他架包什么的自己下,是一个成功事例,所以才把代码贴上。
1 楼
zengxuefei
2014-02-21
,贴出来的代码根本不能执行,好多错误,尤其是缺少了CnToSpell和CommUtil类。楼主说的步骤走确定已经完成没有错误
相关推荐
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.pdfJava+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.pdfJava+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.pdfJava+...
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.docxJava+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.docxJava+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.docxJava+...
java + openoffice+FlexPaper+swfTools仿文档在线阅读:首先把文本文档转换成pdf格式,在通过swfTools工具把其转换成swf,用FlexPaper显示
Java+FlexPaper+swfTools_仿百度文库文档在线预览系统设计与实现
Java+FlexPaper+swfTools 文档在线阅读 ,需要的软件里面都有下载地址,工程可以运行。
java+flexpaper+swftools + openffice 把office转为swf
鉴于网上找的在线浏览都略去了flexpaper ,于是自己花费几个小时完成了openOffice + swfTools + flexpaper 技术实现仿百度文库的在线浏览。功能已经实现,需要的自己下去优化一下,修改下openoffice和SWFTOOLS安装...
Java实现文档在线预览(openoffice+swfTools+FlexPaper)实现的一个简单demo
java-flexpaper-swftools仿百度文库文档在线预览系统设计与实现.doc
java实现office文档与pdf文档的在线预览功能,Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现。下载可用!
java 实现的文档在线预览: 需要下载的工具有:OpenOffice+flexpaper+swftools+jodcconverter * .启动OpenOffice的服务 * 1 win+R开启dos窗口 * 2 执行:cd C:\Program Files (x86)\OpenOffice 4\program * 3 ...
Java-FlexPaper-swfTools-仿百度文库文档在线预览系统设计与实现.docx
JAVA+FlexPaper+swfTools仿文库文档在线阅读 java将office文档pdf文档转换成swf文件在线预览 通过openoffice +swftools+ flexpaper工具
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现
完全仿照百度文库 开发 使用JAVA+FlexPaper+ swftools 基于MyEclipse 开发,上传pdf文件后可以在线进行查看 支持分页 缩放 全屏,查找 等等.... 开发环境: jdk1.5+Tomcat5.5 使用说明: 1.将OnLinePDF导入到...
本篇文章主要介绍了java实现附件预览(openoffice+swftools+flexpaper)实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
https://my.oschina.net/stephenzou/blog/144489 Java+FlexPaper+swfTools仿文库文档在线阅读,https://www.cnblogs.com/barros/p/3871652.html PDF解决方案(3)--PDF转SWF,在线查看文档,转pdf全部工具,可以自己...
java实现附件预览(openoffice+PDF.js),将office文档,通过openoffice工具转换为PDF文件,使用PDF.js进行前端展示 是对openoffice+swftools+flexpaper的升级版,减少一次swf文件转换,及flexpaper只能预览十页内容...
在他人基础上实现java实现仿百度文库预览文档功能, Txt/Word/Excel/PPT => PDF(OpenOffice+JodConverter) => SWF(pdf2swf)=>FlexPaper浏览。 包含了源代码,文档,部分较小文件的安装文件,部分较大文件的下载...