用java將簡單的word文檔換成pdf文檔

來源:互聯網
上載者:User

標籤:cat   pen   commons   系統安裝   opd   簡化   mon   group   col   

用java將簡單的word文檔換成pdf文檔的方式很多,因為很多都沒有實際測試過,所以這裡就先泛泛的說一下

整體上來看分兩種:

  1.純java代碼實現,有很多優秀的開源軟體可以用,比如poi,itext,xdocreport,docx4j等等。主要缺點是只能處理簡單的文檔

  2.通過在作業系統安裝轉換軟體,在java代碼中調用軟體命令來實現轉換。常用的有OpenOffice,Pandoc,Jacob(限於Windows環境)等軟體,優點是對於複雜的文檔也能很好的處理。缺點是會麻煩一點,有的不能跨平台,速度上可能也會慢一點

 

這裡主要說一下我用xdocreport將word文檔轉成pdf文檔的代碼,xdocreport其實是對poi和itext的封裝,進一步簡化代碼。下面看我的maven依賴

        <!--Maven依賴,只多不少-->        <dependency>            <groupId>commons-codec</groupId>            <artifactId>common-codec</artifactId>            <version>1.5</version>        </dependency>        <dependency>            <groupId>dom4j</groupId>            <artifactId>dom4j</artifactId>            <version>1.6.1</version>        </dependency>        <dependency>            <groupId>fr.opensagres.xdocreport</groupId>            <artifactId>fr.opensagres.xdocreport.itext.extension</artifactId>            <version>1.0.4</version>        </dependency>        <dependency>            <groupId>com.lowagie</groupId>            <artifactId>itext</artifactId>            <version>2.1.7</version>        </dependency>        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>ooxml-schemas</artifactId>            <version>1.1</version>        </dependency>        <dependency>            <groupId>fr.opensagres.xdocreport</groupId>            <artifactId>org.apache.poi.xwpf.converter.core</artifactId>            <version>1.0.4</version>        </dependency>        <dependency>            <groupId>fr.opensagres.xdocreport</groupId>            <artifactId>org.apache.poi.xwpf.converter.pdf</artifactId>            <version>1.0.4</version>        </dependency>        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi</artifactId>            <version>3.9</version>        </dependency>        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi-ooxml</artifactId>            <version>3.9</version>        </dependency>        <dependency>            <groupId>javax.xml.stream</groupId>            <artifactId>stax-api</artifactId>            <version>1.0-2</version>        </dependency>        <dependency>            <groupId>org.apache.xmlbeans</groupId>            <artifactId>xmlbeans</artifactId>            <version>3.0.0</version>        </dependency>    

maven依賴的版本很多都比較老了,但這不重要,能實現功能就是好的,要是換成其他更高的版本可能會報錯,另外裡面可能有個別依賴不是必須的,你有興趣可以自己試一試。下面上代碼

import org.apache.poi.xwpf.converter.pdf.PdfConverter;import org.apache.poi.xwpf.converter.pdf.PdfOptions;import org.apache.poi.xwpf.usermodel.XWPFDocument;import java.io.*;import java.util.HashMap;import java.util.Map;public class WordToPDF {    /**     * 將word文檔, 轉換成pdf, 中間替換掉變數     * @param source 源為word文檔, 必須為docx文檔     * @param target 目標輸出     * @throws Exception     */    public static void wordConverterToPdf(InputStream source, OutputStream target) throws Exception {        XWPFDocument doc = new XWPFDocument(source);        PdfOptions options = null;//因為是簡單處理,該參數就設定成了null,有需要的可以研究一下        PdfConverter.getInstance().convert(doc, target, options);    }    //測試    public static void main(String[] args) {        String filepath = "F:\\temp\\test.docx";        String outpath = "F:\\temp\\test.pdf";        InputStream source;        OutputStream target;        try {            source = new FileInputStream(filepath);            target = new FileOutputStream(outpath);            Map<String, String> params = new HashMap<String, String>();            wordConverterToPdf(source, target);        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (Exception e) {            e.printStackTrace();        }    }}

至此就算實現了將簡單word文檔轉成pdf文檔的功能。最後再說一下注意的地方,

1.如果你改變了maven依賴的版本可能會有報錯,

2.注意word文檔中漢字的字型

這裡會顯示你文檔的漢字字型名稱,其中有一些字型在轉換的時候會消失,不能顯示,就我知道有"宋體(本文)",注意它不同於“宋體”。

有錯誤歡迎指出,有好代碼希望能分享一下。

 

附上參考資料地址:https://github.com/opensagres/xdocreport/wiki/DocxReportingJavaMainConverter

用java將簡單的word文檔換成pdf文檔

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.