java實現word轉pdf
網上有很多word轉pdf的工具和程式碼,比如:poi, itext, jacob, openoffice, xdocreport等等 我記得還有日本一個開源工具word轉pdf。
今天說說我自己專案中使用的是xdocreport真正的核心程式碼比較簡單。先上核心程式碼吧。
package com.icitic.jd.common.convert;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.poi.xwpf.converter.pdf.PdfConverter;
import org.apache.poi.xwpf.converter.pdf.PdfOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
public class DocxToPdf {
public static void convertPdf(String docxFilePath,String pdfFilePath) throws Exception{
File docxFile=new File(docxFilePath);
File pdfFile=new File(pdfFilePath);
//轉換pdf檔案
if(docxFile.exists()){
if(!pdfFile.exists()){
InputStream inStream=new FileInputStream(docxFilePath);
XWPFDocument document = new XWPFDocument(inStream);
//HWPFDocument document = new HWPFDocument(inStream);
OutputStream out = new FileOutputStream(pdfFilePath);
PdfOptions options = PdfOptions.create();
ExtITextFontRegistry fontProvider=ExtITextFontRegistry.getRegistry();
options.fontProvider(fontProvider);
PdfConverter.getInstance().convert(document, out, options);
}else{
System.out.println("PDF檔案已存在,無需再次轉換");
}
}else{
}
}
}
因為使用了XWPFDocument 這個 只能支援docx轉pdf 不支援doc轉 我改成HWPFDocument好像也不行哦
maven中引用jar 其實只有後面兩個jar包 不過有一些依賴的jar哦 記得下載 第一個模板引擎引用的jar的使用freemarker技術生產動態word才使用的。
<!-- 模版引擎用到的jar包 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.25-incubating</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>org.apache.poi.xwpf.converter.pdf</artifactId>
<version>1.0.4</version>
</dependency>