1. 程式人生 > >Java實現各種檔案轉PDF(使用OpenOffice)

Java實現各種檔案轉PDF(使用OpenOffice)

最近遇到一個學習平臺的專案,涉及到各種文件,為了站點資源的安全性,文件全部需要轉成pdf,只供使用者瀏覽。翻閱了很多資料,看了一個博主寫的使用open office實現的方式,簡單明瞭,這裡也分享一下。

這裡介紹在win環境下的openoffice使用。

百度搜索:open office就可以找到下載檔案。安裝後,啟動服務就可以使用了。

程式碼:

/** 
     * 將Office文件轉換為PDF. 執行該函式需要用到OpenOffice, OpenOffice下載地址為 
     * http://www.openoffice.org/ 
     *  
     * <pre> 
     * 方法示例: 
     * String sourcePath = "F:\\office\\source.doc"; 
     * String destFile = "F:\\pdf\\dest.pdf"; 
     * Converter.office2PDF(sourcePath, destFile); 
     * </pre> 
     *  
     * @param sourceFile 
     *            原始檔, 絕對路徑. 可以是Office2003-2007全部格式的文件, Office2010的沒測試. 包括.doc, 
     *            .docx, .xls, .xlsx, .ppt, .pptx, .txt 等. 示例: F:\\office\\source.doc 
     * @param destFile 
     *            目標檔案. 絕對路徑. 示例: F:\\pdf\\dest.pdf 
     * @return 操作成功與否的提示資訊. 如果返回 -1, 表示找不到原始檔, 或url.properties配置錯誤; 如果返回 0, 
     *         則表示操作成功; 返回1, 則表示轉換失敗 
     */  
    public static int office2PDF(String sourceFile, String destFile) {  
        try {  
            File inputFile = new File(sourceFile);  
            if (!inputFile.exists()) {  
                return -1;// 找不到原始檔, 則返回-1  
            }  
  
            // 如果目標路徑不存在, 則新建該路徑  
            File outputFile = new File(destFile);  
            if (!outputFile.getParentFile().exists()) {  
                outputFile.getParentFile().mkdirs();  
            }  
  
            String OpenOffice_HOME = "C:\\Program Files (x86)\\OpenOffice 4";//這裡是OpenOffice的安裝目錄, 在我的專案中,為了便於拓展介面,沒有直接寫成這個樣子,但是這樣是絕對沒問題的  
            // 如果從檔案中讀取的URL地址最後一個字元不是 '\',則新增'\'  
            if (OpenOffice_HOME.charAt(OpenOffice_HOME.length() - 1) != '\\') {  
                OpenOffice_HOME += "\\";  
            }  
            // 啟動OpenOffice的服務  
            String command = OpenOffice_HOME  
                    + "program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";  
            Process pro = Runtime.getRuntime().exec(command);  
            // connect to an OpenOffice.org instance running on port 8100  
            OpenOfficeConnection connection = new SocketOpenOfficeConnection(  
                    "127.0.0.1", 8100);  
            connection.connect();  
  
            // convert  
            DocumentConverter converter = new OpenOfficeDocumentConverter(  
                    connection);  
            converter.convert(inputFile, outputFile);  
  
            // close the connection  
            connection.disconnect();  
            // 關閉OpenOffice服務的程序  
            pro.destroy();  
  
            return 0;  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
            return -1;  
        } catch (ConnectException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        
        return 1;  
    }  
demo下載地址: http://download.csdn.net/download/qq_17770183/10156416 參考博文url: http://titanseason.iteye.com/blog/1471606

相關推薦

Java實現各種檔案PDF使用OpenOffice

最近遇到一個學習平臺的專案,涉及到各種文件,為了站點資源的安全性,文件全部需要轉成pdf,只供使用者瀏覽。翻閱了很多資料,看了一個博主寫的使用open office實現的方式,簡單明瞭,這裡也分享一下。 這裡介紹在win環境下的openoffice使用。 百度搜索:open

java實現各種資料統計圖柱形圖,餅圖,折線圖

最近在做資料探勘的課程設計,需要將資料分析的結果很直觀的展現給使用者,這就要用到資料統計圖,要實現這個功能就需要幾個第三方包了: 1.       jfreechart-1.0.13.jar 2.       jcommon-1.0.16.jar 3.       gnuj

JAVA實現開啟檔案對話方塊可以指定所需開啟檔案的格式

  package com.test.filetest; import java.io.File; import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; public clas

java實現簡單二維迷宮2

blog 成員 new 構建 push port ava amp use 這次是改良版本。 將地圖封裝,老鼠封裝。是對Java基礎的一個練習吧。 這次實現也遇到了一些問題。主要是棧。封裝的mouse類中有成員變量i,j代表了老鼠的坐標。將mouse類對象m入棧的時候,總是入

8皇后以及N皇后演算法探究,回溯演算法的JAVA實現,遞迴方案

八皇后問題,是一個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於1848年提出:在8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 高斯認為有76種方案。1854年在柏林的象棋雜誌

Java實現平衡二叉樹AVLTree的構建

        最近在學習資料結構上關於平衡二叉樹的知識,看了嚴老師的思路,感覺用java寫出遞迴的構建方式有點困難,因為其中的遞迴需要把引用傳進去,所以感覺是要實現起來比較麻煩,所以就首先想到使用非遞迴的方式來實現構建平衡二叉樹。        使用非遞迴的方式,思路也很

java實現字母的大小寫轉換ASCII

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in);

java 單鏈表list 反轉 普通與遞迴

單鏈表的轉置 (反轉)   普通方法  通過迴圈與臨時變數來轉置   優點是節省記憶體開銷 public void commonReverse(){ Node curr = head; Node reve = null; while(curr

Java實現Redis的雜湊Hash命令

本編文章知識簡單的實現了redis 的增刪改查,指令不是很全還請大家見諒 package com.huadian.Hash; import com.huadian.redisUntil.JedisPoolUntil; import org.junit.After; i

java實現二叉搜尋樹BST包含增刪和遍歷操作

二叉搜尋樹基本知識可以看演算法導論第三版163頁,也可以百度搜索下,程式碼如下: package com.ma.al.binaryTree; /** * @author xiaoma * */ public class MyBinarySearchTree {

Java實現面向物件程式設計(入門)

四、■介面1、介面中的屬性都是全域性靜態常量,介面中的方法都是全域性抽象方法,介面中沒有構造方法。  ★Java中實現介面的定義語法和類實現介面的語法如下:∵[修飾符] interface 介面名 extends 父介面1,父介面2,……{//常量定義//方法定義 }∴cl

java實現自動化測試介面訪問

一、前置準備: 二、程式碼實現 1. 使用PostMan輸入訪問的介面,取得需要的欄位,items,和items中repository的欄位id,和full_name(可以自己獲取想要的欄位)

Java 實現String語句的執行Jexl

咖啡 -c literal apache money ram class title auto https://www.jianshu.com/p/1000719e49fa 1.maven 導入庫 <dependency> <groupId>o

Java 讀取圖片檔案的型別MimeType

一、問題描述 在專案開發的時候,我們經常會遇到一類檔案上傳的問題,就是獲取圖片是哪種格式。很多情況下,很多人都是用字尾名去判斷,如下所示。 if(filename.endsWith(".png") || filename.endsWith(".jpg")) { //儲存圖片 }else

PDF技術-Java實現Office系列檔案PDF檔案

最近,公司要求做個檔案轉pdf的調研報告,於是在網上找了一些實現方法,現在將這些方法做個對比,並記錄下來,以後或許有用呢,哈哈。 首先說一下需求,產品要求不能使用第三方軟體實現,因為這種實現方式效率不高,所以需要使用“純Java程式碼”實現。同時也對跨平臺有要求,系統需要執行在linux系統

java 實現word PDF 採用第三方技術 IText、Poi、Jsoup

    先講講思路:                        第一步:使用 poi 將word轉換成 html,這裡程式碼一搜一堆沒什麼好說的,千篇一律。                         (值得注意的地方是IText 根據html生成pdf檔案的時候

WordPDFJava實現

目前在做一個與文件有關的專案,網上看到的都是利用OpenOffice來轉化word為pdf的,其實侷限性很大,下載那麼大一個軟體,卻只是為了它的服務。所以決定找一下有沒有別的方法,終於遇到了docx4j這個神一樣的JAR包,完美解決了我的問題!不說了,直接上程式

Java語言實現wordPDF10分鐘解決

前言: 經常做OA辦公專案的同學一定和我一樣被各種線上的office操作整瘋了。基本上涉及到Java操作office的時候就會想到POI和openoffice.這兩種方案都是需要找各種jar包,然後用裡面繁雜的api。關鍵是做出來的檔案格式有各種各樣的問題,有時生成的檔案打

實現wordpdf,HTMLpdf探索篇

ner ase node eth ack line prope fin -o 筆者找依賴的jar包,找的好辛苦。 ITextRenderer、ITextFontResolver這兩個類依賴的jar包到底是哪個,還有怎麽下載?苦苦糾結了3個小時。終於找到你了!記錄個網址:ht

Java實現zip檔案壓縮單個檔案、資料夾以及檔案和資料夾的組合壓縮

Java實現zip檔案壓縮(單個檔案、資料夾以及檔案和資料夾的組合壓縮) 2016年10月04日 23:22:24 ljheee 閱讀數:13215 標籤: 壓縮javazip 更多 個人分類: Java應用 版權宣告:本文為博