利用OpenOffice.org工具实现预览效果
来源:互联网 发布:合肥软件测试工资待遇 编辑:程序博客网 时间:2024/05/22 02:20
第一:在官网下载OpenOffice.org这个工具
第二:编码,本人附上实际开发中用到的编码
创建连接也就是和工具创建连接public static XComponentContext createContext() throws Exception, BootstrapException { String oooExeFolder = "C:/Program Files/OpenOffice.org 3/program/"; return BootstrapSocketConnector.bootstrap(oooExeFolder); }
//加载工具
public static XComponentLoader createLoader(XComponentContext context) throws Exception { XMultiComponentFactory mcf = context.getServiceManager(); Object desktop = mcf.createInstanceWithContext("com.sun.star.frame.Desktop", context); return (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, desktop); }
//加载文件
public static Object loadDocument(XComponentLoader loader, String inputFilePath) throws Exception { PropertyValue[] propertyValues = new PropertyValue[1]; propertyValues[0] = new PropertyValue(); propertyValues[0].Name = "Hidden"; propertyValues[0].Value = new Boolean(true);
File inputFile = new File(inputFilePath); String inputUrl = "file:///"+ inputFile.getAbsolutePath().replace('\\', '/'); System.out.println("inputUrl地址" + inputUrl); return loader.loadComponentFromURL(inputUrl, "_blank", 0, propertyValues); }
//设置转换成的目标文件的属性 具体属性可以参考官网api
public static void convertDocument(Object doc, String outputFilePath, String convertType) throws Exception {
// Preparing properties for converting the document PropertyValue[] propertyValues = new PropertyValue[2]; // Setting the flag for overwriting propertyValues[0] = new PropertyValue(); propertyValues[0].Name = "Overwrite"; propertyValues[0].Value = new Boolean(true); // Setting the filter name propertyValues[1] = new PropertyValue(); propertyValues[1].Name = "FilterName"; propertyValues[1].Value = convertType;
//Composing the URL by replacing all backslashs File outputFile = new File(outputFilePath); String outputUrl = "file:///"+ outputFile.getAbsolutePath().replace('\\', '/'); // Getting an object that will offer a simple way to store // a document to a URL. XStorable storable = (XStorable) UnoRuntime.queryInterface(XStorable.class, doc); // Storing and converting the document // storable.storeAsURL(outputUrl, propertyValues); storable.storeToURL(outputUrl, propertyValues);
}
//关闭文件
public static void closeDocument(Object doc) throws Exception { //Closing the converted document. Use XCloseable.clsoe if the //interface is supported, otherwise use XComponent.dispose XCloseable closeable = (XCloseable) UnoRuntime.queryInterface(XCloseable.class, doc); if (closeable != null) { closeable.close(false); } else { XComponent component = (XComponent) UnoRuntime.queryInterface(XComponent.class, doc); component.dispose(); } }
关键代码:也就是实际调用上面几个方法进行文件转换
String convertType = "writer_pdf_Export"; //设置转换成的文件是PDF,也可以转换成html具体可以参考api说明
XComponentContext context = JOD4DocToHTML.createContext();
XComponentLoader compLoader = JOD4DocToHTML.createLoader(context);Object doc = JOD4DocToHTML.loadDocument(compLoader,"源文件");JOD4DocToHTML.convertDocument(doc,"输出的目标文件",convertType);JOD4DocToHTML.closeDocument(doc);
在上面的代码中省略的部分是获取文件流也就是读文件之后进行转换。具体可以动手实践下。
注意bootstrapconnector这个会出现错误。 解决的办法就是重新编译这个jar包。因为jar包的下载的时候版本可能不一样。
若需要jar可以流程。这里貌似不好上传jar包
- 利用OpenOffice.org工具实现预览效果
- centos6.5下安装openoffice+jodconverter+swftool+flexpaper工具实现在线预览文档功能
- Java实现在线预览--openOffice实现
- java实现附件预览(openoffice+swfTools+FlexPaper)
- Openoffice+swfTools+flexPaper实现在线预览
- SPRINGMVC实现在线预览功能(openOffice)
- java实现附件预览(openoffice+swfTools+FlexPaper)
- openoffice实现pdf上传文件预览功能
- java实现附件预览(openoffice+swftools+flexpaper)
- Java office在线预览实现--openoffice
- OpenOffice+SWFTools+ FlexPaper实现文件预览
- 利用OpenOffice.org和Swftools进行实现—doc-->pdf-->swf--格式的转换
- OpenOffice.org
- 为OpenOffice.org安装3D转换效果的插件
- openoffice实现office文件转换为pdf实现文件预览
- openoffice+pdf2swf实现在线转换office文档,实现在线预览
- PHP利用openoffice实现文档装换
- PHP利用openoffice实现文档装换
- 《C++ GUI Programming with Qt4》.1.Getting Started
- 用JAVA打印当前月份的日历
- 琐碎
- Android一个版本问题的解决
- 年月日时分秒星期的设置方法
- 利用OpenOffice.org工具实现预览效果
- 敏捷开发一千零一问系列之十:总体架构什么时机进行?(下)
- TX Text Control文字处理教程(1)- 使用Visual Studio 2008开发产品
- 多线程设计要点
- ibatis(mybatis)简单实例
- thinkphp 各种应用
- Difference between Externalizable and Serializable in Java
- Decimal与double类型误差
- 两个正在运行的activity之间的通信