一、依赖
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-local</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-transformer-msoffice-word</artifactId>
<version>1.0.3</version>
</dependency>
二、代码
import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.LocalConverter;
import java.io.*;
public class WordToPdf {
public static void word2pdf(String wordPath, String pdfPath) throws IOException {
InputStream docxInputStream = null;
OutputStream outputStream = null;
System.out.println("wordPath:" + wordPath);
System.out.println("pdfPath:" + pdfPath);
String osName = System.getProperty("os.name");
System.out.println("osName:" + osName);
if (osName.contains("Windows")) {
IConverter converter = LocalConverter.builder().build();
try {
// 原word地址
docxInputStream = new FileInputStream(wordPath);
// 转换后pdf生成地址
outputStream = new FileOutputStream(pdfPath);
converter.convert(docxInputStream)
.as(DocumentType.DOCX)
.to(outputStream)
.as(DocumentType.PDF).execute();
// 关闭
outputStream.close();
// 关闭
docxInputStream.close();
} catch(Exception e){
System.out.println("[documents4J] word转pdf失败:" + e.toString());
} finally{
if (outputStream != null) {
outputStream.close();
}
if (docxInputStream != null) {
docxInputStream.close();
}
// 关闭
converter.shutDown();
}
}else{
int i = wordPath.lastIndexOf("/");
String substring = wordPath.substring(0, i+1);
String command = "libreoffice7.1 --headless --invisible --convert-to pdf:writer_pdf_Export " + wordPath + " --outdir " + substring;
Runtime.getRuntime().exec(command);
}
}