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:\software\OpenOffice 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文檔測試運行一下,應該是可以的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM