现在项目有个需求,要求把ms office和txt在线播放,偶当时就想到了布丁网 然后就问……google…… 结果google告诉偶,简单的办法在windows上是可以实现的,非常简单...不过

本文主要是介绍现在项目有个需求,要求把ms office和txt在线播放,偶当时就想到了布丁网 然后就问……google…… 结果google告诉偶,简单的办法在windows上是可以实现的,非常简单...不过,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现在项目有个需求,要求把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.  * <ul> 
  17.  * <li>文件名称: com.born.sys.util.pdf.JOD4DocToPDF.java</li> 
  18.  * <li>文件描述:</li> 
  19.  * <li>版权所有: 版权所有(C)2001-2006</li> 
  20.  * <li>公 司: born</li> 
  21.  * <li>内容摘要:</li> 
  22.  * <li>其他说明:</li> 
  23.  * <li>完成日期:2010-5-21</li> 
  24.  * <li>修改记录0:无</li> 
  25.  * </ul> 
  26.  *  
  27.  * @version 1.0 
  28.  * @author 许力多 
  29.  */  
  30. public class JOD4DocToPDF extends java.lang.Thread {  
  31.     private File inputFile;// 需要转换的文件  
  32.     private File outputFile;// 输出的文件  
  33.   
  34.     public JOD4DocToPDF(File inputFile, File outputFile) {  
  35.         this.inputFile = inputFile;  
  36.         this.outputFile = outputFile;  
  37.     }  
  38.   
  39.     public void docToPdf() {  
  40.         Date start = new Date();  
  41.         // connect to an OpenOffice.org instance running on port 8100  
  42.         OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);  
  43.         try {  
  44.             connection.connect();  
  45.   
  46.             // convert  
  47.             DocumentConverter converter = new OpenOfficeDocumentConverter(  
  48.                     connection);  
  49.             converter.convert(inputFile, outputFile);  
  50.         } catch (ConnectException cex) {  
  51.             cex.printStackTrace();  
  52.         } finally {  
  53.             // close the connection  
  54.             if (connection != null) {  
  55.                 connection.disconnect();  
  56.                 connection = null;  
  57.             }  
  58.         }  
  59.         long l = (start.getTime() - new Date().getTime());  
  60.         long day = l / (24 * 60 * 60 * 1000);  
  61.         long hour = (l / (60 * 60 * 1000) - day * 24);  
  62.         long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);  
  63.         long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);  
  64.         System.out.println("生成" + outputFile.getName() + "耗费:" + min + "分" + s  
  65.                 + "秒");  
  66.     }  
  67.   
  68.     /** 
  69.      * 由于服务是线程不安全的,所以……需要启动线程 
  70.      */  
  71.     public void run() {  
  72.         this.docToPdf();  
  73.   
  74.     }  
  75.   
  76.     public File getInputFile() {  
  77.         return inputFile;  
  78.     }  
  79.   
  80.     public void setInputFile(File inputFile) {  
  81.         this.inputFile = inputFile;  
  82.     }  
  83.   
  84.     public File getOutputFile() {  
  85.         return outputFile;  
  86.     }  
  87.   
  88.     public void setOutputFile(File outputFile) {  
  89.         this.outputFile = outputFile;  
  90.     }  
  91.   
  92.     /** 
  93.      * @param args 
  94.      */  
  95.     public static void main(String[] args) {  
  96.         JOD4DocToPDF tools = new JOD4DocToPDF(new File("d:/中文的ppt哦.ppt"),  
  97.                 new File("d:/被转换的pdf.pdf"));  
  98.         tools.start();  
  99.   
  100.     }  
  101.   
  102. }  

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

这篇关于现在项目有个需求,要求把ms office和txt在线播放,偶当时就想到了布丁网 然后就问……google…… 结果google告诉偶,简单的办法在windows上是可以实现的,非常简单...不过的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/223661

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h