zoukankan      html  css  js  c++  java
  • java 如何将 word,excel,ppt如何转pdf --openoffice (1)

    承上启下,可折叠

      上一篇说的是:服务器是windows server时,用jacob将msoffice(指的是word,excel,ppt)转换成pdf。

      若被部署项目的服务器是centOS等linux server时,就不能用之前的上述说的那种方式了。

      在上一篇说到openoffice将msoffice转成pdf的时候会存在排版错位的问题,或者有的内容消失了,这是因为msoffice中的一些特有格式,openoffice不识别解析不了导致的。当然大部分的普通msoffice文档转换成pdf时,效果还是令人满意的。

      所以这次说一下怎么用openoffice完成msoffice到pdf的转换。

    PS:本文说的是java如何调用本机(当前服务器)的openoffice服务进行文档转换;调用其他服务器上的openoffice进行文档转换下一次再说。

    1.前提条件

      本机测试,本机安装一个openoffice软件即可。

      若是被部署项目的服务器,可以在服务器本地安装一个openoffice软件;也可以在其他服调用其他服务器上的openoffice服务进行文档转换。

      openoffice的下载地址:http://www.openoffice.org/

      我本机的openoffice软件安装目录:D:softwareOpenOffice 4 ,如下图所示:

    2.创建项目,引入jar包

      1) maven项目。我本地的pom.xml配置如下:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>indi.johnny</groupId>
        <artifactId>openoffice-convert</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>19.0</version>
            </dependency>
    
    
            <dependency>
            <groupId>com.github.livesense</groupId>
            <artifactId>jodconverter-core</artifactId>
            <version>1.0.5</version>
            </dependency>
        </dependencies>
    </project>

      2) 普通java项目 将下图中的jar包从这个地址下载下来引入项目即可: http://www.mvnrepository.com/artifact/com.github.livesense/jodconverter-core/1.0.5 ; guava包也可以在  http://www.mvnrepository.com搜到,下载引入项目即可。

      大概的jar包如图所示:

    3.上代码

    package indi.johnny.convert;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    
    import org.artofsolving.jodconverter.OfficeDocumentConverter;
    import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
    import org.artofsolving.jodconverter.office.OfficeManager;
    
    
    //转换文档为pdf
    public class OpenOfficePdfConvert {
    
        /**
         * @param args
         */
        private static OfficeManager officeManager;
        private static String OFFICE_HOME = "D:/software/OpenOffice 4/";
        private static int port[] = { 8100 };
        
        public void convert2PDF(String inputFile, String outputFile) throws FileNotFoundException {
           
            startService();
            System.out.println("进行文档转换转换:" + inputFile + " --> " + outputFile);
            
            OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
            converter.convert(new File(inputFile), new File(outputFile));
            
            stopService();
            System.out.println();
    
        }
    
        // 打开服务器
        public static void startService() {
            DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
            try {
                System.out.println("准备启动服务....");
                configuration.setOfficeHome(OFFICE_HOME);// 设置OpenOffice.org安装目录
                configuration.setPortNumbers(port); // 设置转换端口,默认为8100
                configuration.setTaskExecutionTimeout(1000 * 60 * 5L);// 设置任务执行超时为5分钟
                configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);// 设置任务队列超时为24小时
    
                officeManager = configuration.buildOfficeManager();
                officeManager.start(); // 启动服务
                System.out.println("office转换服务启动成功!");
            } catch (Exception ce) {
                System.out.println("office转换服务启动失败!详细信息:" + ce);
            }
        }
    
        // 关闭服务器
        public static void stopService() {
            System.out.println("关闭office转换服务....");
            if (officeManager != null) {
                officeManager.stop();
            }
            System.out.println("关闭office转换成功!");
        }
    
        public static void main(String[] args) throws Exception {
            String path = "C:/Users/johnny/Desktop/文档/20170420/test/001/";
            OpenOfficePdfConvert opc = new OpenOfficePdfConvert();
            opc.convert2PDF(path+"1.docx", path+"1.pdf");
        }
    
    }

    将代码中的  OFFICE_HOME换成自己的openoffice的安装路径,端口8100不用动。

     找一个msoffice文档测试运行一下,应该是可以的。

  • 相关阅读:
    如何方便的下载youtube视频?
    88. Merge Sorted Array
    83. Remove Duplicates from Sorted List
    70. Climbing Stairs
    用opencv+python全屏进行显示图片
    58. Length of Last Word
    numpy的resize和reshape区别
    Opencv的绘图
    Python的slice问题
    jqgrid一次性加载
  • 原文地址:https://www.cnblogs.com/xxyfhjl/p/6775137.html
Copyright © 2011-2022 走看看