用java把MS office(ppt、excel、word、txt) 转换成 flash,并进行播放(linux、windows)

转自:

用java把MS office(ppt、excel、word、txt) 转换成 flash,并进行播放(linux、windows)

特别感谢本文的作者!!!


博客分类: java
Office Windows Java Linux Excel
现在项目有个需求,要求把ms office和txt在线播放,偶当时就想到了 布丁网

然后就问……google……

结果google告诉偶,简单的办法在windows上是可以实现的,非常简单...不过要用到jacob,具体大家去问Google。
由于要调用dll,在linux上偶不清楚能不能用(公司搞服务器的人说不可以),结果就被pass了……


再然后……只有这么办了……
先用 openOffice把ppt、word、excel、txt转换成pdf,然后用 swftools转换成swf,然后在线播放。

具体说明如下(windows,在linux下偶正准备测试)
1、安装相关软件,这个偶就不说了……
2、下载 jodconverter,偶用的2.2.2...然后怎么把lib放在环境变量或者项目环境偶就不说了……
3、以cmd方式启动openoffice server
Java代码   收藏代码
  1. cd opeonofiice的安装路径/program  

Java代码   收藏代码
  1. soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard  

4、看看8100被监听没
Java代码   收藏代码
  1. netstat -an  

5、写代码了……偶没有把代码集成到项目中,所以是单独的例子,不过这样还好点,不然和项目偶和太厉害了
JOD4DocToPDF
Java代码   收藏代码
  1. /** 
  2.  *  
  3.  */  
  4. package com.born.sys.util.pdf;  
  5.   
  6. import java.io.File;  
  7. import java.net.ConnectException;  
  8. import java.util.Date;  
  9.   
  10. import com.artofsolving.jodconverter.DocumentConverter;  
  11. import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;  
  12. import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;  
  13. import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;  
  14.   
  15. /** 
  16.  * 
       
    •  * 
    • 文件名称: com.born.sys.util.pdf.JOD4DocToPDF.java
    •  
    •  * 
    • 文件描述:
    •  
    •  * 
    • 版权所有: 版权所有(C)2001-2006
    •  
    •  * 
    • 公 司: born
    •  
    •  * 
    • 内容摘要:
    •  
    •  * 
    • 其他说明:
    •  
    •  * 
    • 完成日期:2010-5-21
    •  
    •  * 
    • 修改记录0:无
    •  
    •  * 
     
  17.  *  
  18.  * @version 1.0 
  19.  * @author 许力多 
  20.  */  
  21. public class JOD4DocToPDF extends java.lang.Thread {  
  22.     private File inputFile;// 需要转换的文件  
  23.     private File outputFile;// 输出的文件  
  24.   
  25.     public JOD4DocToPDF(File inputFile, File outputFile) {  
  26.         this.inputFile = inputFile;  
  27.         this.outputFile = outputFile;  
  28.     }  
  29.   
  30.     public void docToPdf() {  
  31.         Date start = new Date();  
  32.         // connect to an OpenOffice.org instance running on port 8100  
  33.         OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);  
  34.         try {  
  35.             connection.connect();  
  36.   
  37.             // convert  
  38.             DocumentConverter converter = new OpenOfficeDocumentConverter(  
  39.                     connection);  
  40.             converter.convert(inputFile, outputFile);  
  41.         } catch (ConnectException cex) {  
  42.             cex.printStackTrace();  
  43.         } finally {  
  44.             // close the connection  
  45.             if (connection != null) {  
  46.                 connection.disconnect();  
  47.                 connection = null;  
  48.             }  
  49.         }  
  50.         long l = (start.getTime() - new Date().getTime());  
  51.         long day = l / (24 * 60 * 60 * 1000);  
  52.         long hour = (l / (60 * 60 * 1000) - day * 24);  
  53.         long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);  
  54.         long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);  
  55.         System.out.println("生成" + outputFile.getName() + "耗费:" + min + "分" + s  
  56.                 + "秒");  
  57.     }  
  58.   
  59.     /** 
  60.      * 由于服务是线程不安全的,所以……需要启动线程 
  61.      */  
  62.     public void run() {  
  63.         this.docToPdf();  
  64.   
  65.     }  
  66.   
  67.     public File getInputFile() {  
  68.         return inputFile;  
  69.     }  
  70.   
  71.     public void setInputFile(File inputFile) {  
  72.         this.inputFile = inputFile;  
  73.     }  
  74.   
  75.     public File getOutputFile() {  
  76.         return outputFile;  
  77.     }  
  78.   
  79.     public void setOutputFile(File outputFile) {  
  80.         this.outputFile = outputFile;  
  81.     }  
  82.   
  83.     /** 
  84.      * @param args 
  85.      */  
  86.     public static void main(String[] args) {  
  87.         JOD4DocToPDF tools = new JOD4DocToPDF(new File("d:/中文的ppt哦.ppt"),  
  88.                 new File("d:/被转换的pdf.pdf"));  
  89.         tools.start();  
  90.   
  91.     }  
  92.   
  93. }  

ps:其实还有很多属性的,不过偶图简单,直接用的官方例子,人懒无敌……阿门

通过Runtime来调用cmd,然后生成相关的播放文件,生成好的flash效果见 点击看效果
PdfToSwf
Java代码   收藏代码
  1. package com.born.sys.util.pdf;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.File;  
  5. import java.io.IOException;  
  6. import java.io.InputStreamReader;  
  7.   
  8. /** 
  9.  * 
       
    •  * 
    • 文件名称: com.born.sys.util.pdf.PdfToSwf.java
    •  
    •  * 
    • 文件描述: pdf生成swf
    •  
    •  * 
    • 版权所有: 版权所有(C)2001-2006
    •  
    •  * 
    • 公 司: born
    •  
    •  * 
    • 内容摘要:
    •  
    •  * 
    • 其他说明:
    •  
    •  * 
    • 完成日期:2010-5-21
    •  
    •  * 
    • 修改记录0:无
    •  
    •  * 
     
  10.  *  
  11.  * @version 1.0 
  12.  * @author 许力多 
  13.  */  
  14. public class PdfToSwf {  
  15.     public int convertPDF2SWF(String sourcePath, String destPath,  
  16.             String fileName) throws IOException {  
  17.         // 目标路径不存在则建立目标路径  
  18.         File dest = new File(destPath);  
  19.         if (!dest.exists()) {  
  20.             dest.mkdirs();  
  21.         }  
  22.   
  23.         // 源文件不存在则返回  
  24.         File source = new File(sourcePath);  
  25.         if (!source.exists()) {  
  26.             return 0;  
  27.         }  
  28.   
  29.         // 调用pdf2swf命令进行转换  
  30.         // D:\tools\SWFTools>pdf2swf.exe -z -B rfxview.swf -s flashversion=9  
  31.         // d:/人员管理系  
  32.         // 统PersonalManagementSystem简介.pdf -o d:/test.swf  
  33.   
  34.         // 要把D:\\tools\\SWFTools\\放在path里面……不然使用不了播放器  
  35.   
  36.         // 先生成flash  
  37.         String[] envp = new String[1];  
  38.         envp[0] = "PATH=D:\\tools\\SWFTools\\";  
  39.         String command = "pdf2swf -z -s flashversion=9 \"" + sourcePath  
  40.                 + "\" -o \"" + destPath + fileName + "\"";  
  41.   
  42.         Process pro = Runtime.getRuntime().exec(command, envp);  
  43.         // System.out.println(command);  
  44.         BufferedReader bufferedReader = new BufferedReader(  
  45.                 new InputStreamReader(pro.getInputStream()));  
  46.         while (bufferedReader.readLine() != null) {  
  47.             String text = bufferedReader.readLine();  
  48.             System.out.println(text);  
  49.         }  
  50.         try {  
  51.             pro.waitFor();  
  52.         } catch (InterruptedException e) {  
  53.             // TODO Auto-generated catch block  
  54.             e.printStackTrace();  
  55.         }  
  56.         // 然后在套播放器  
  57.         /* 
  58.          * swfcombine -z -X 720 -Y 540 "D:\tools\SWFTools\swfs\rfxview.swf" 
  59.          * viewport="d:/人 
  60.          * 员管理系统PersonalManagementSystem简介.swf" -o "d:/人员管理系统PersonalManagemen 
  61.          * tSystem简介.swf" 
  62.          */  
  63.         command = "swfcombine -z -X 720 -Y 540 \"D:/tools/SWFTools/swfs/rfxview.swf\" viewport=\""  
  64.                 + destPath + fileName + "\" -o \"" + destPath + fileName + "\"";  
  65.         pro = Runtime.getRuntime().exec(command, envp);  
  66.         System.out.println(command);  
  67.         bufferedReader = new BufferedReader(new InputStreamReader(pro  
  68.                 .getInputStream()));  
  69.         while (bufferedReader.readLine() != null) {  
  70.             String text = bufferedReader.readLine();  
  71.             System.out.println(text);  
  72.         }  
  73.         try {  
  74.             pro.waitFor();  
  75.         } catch (InterruptedException e) {  
  76.             // TODO Auto-generated catch block  
  77.             e.printStackTrace();  
  78.         }  
  79.         return pro.exitValue();  
  80.   
  81.     }  
  82.   
  83.     public static void main(String[] args) {  
  84.         String sourcePath = "d:/PersonalManagementSystem.pdf";  
  85.         String destPath = "d:/";  
  86.         String fileName = "PersonalManagementSystem.swf";  
  87.         try {  
  88.             System.out.println(new PdfToSwf().convertPDF2SWF(sourcePath,  
  89.                     destPath, fileName));  
  90.         } catch (IOException e) {  
  91.             // TODO Auto-generated catch block  
  92.             e.printStackTrace();  
  93.         }  
  94.     }  
  95. }  


好了,基本就解决了,丢网页上就可以了,这个偶就不说了……
……过两天把她们集成到项目里面偶就安心了

你可能感兴趣的:(我的小项目)