目录
1、引入maven依赖
在pom文件中增加如下依赖
<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>
2、本地安装office或wps
linux :
sudo yum install libreoffice
windows:
安装wps或office都行
3、编写转换
IConverter converter = LocalConverter.builder().build();
InputStream docxInputStream = new FileInputStream(inPath); // 读取文件 //设置输出的目录 OutputStream outputStream = new FileOutputStream(pdfFilePath)
// 进行转换
converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute();
工具类如下:
import com.documents4j.api.DocumentType; import com.documents4j.api.IConverter; import com.documents4j.job.LocalConverter; import java.io.*; import java.util.List; import java.util.UUID; public class WordExtractUtils { private static IConverter converter; /** * 需要安装sudo yum install libreoffice */ static { converter = LocalConverter.builder().build(); } public static String extract(String inPath,String out,List<Integer> extractPageNum){ File file = new File(out); if(!file.exists() || file.isDirectory()){ file.mkdirs(); } String pdfFilePath = out+File.separator+UUID.randomUUID().toString()+ ".pdf"; String finalPdfPath = out+File.separator+UUID.randomUUID().toString()+ ".pdf"; try ( InputStream docxInputStream = new FileInputStream(inPath); OutputStream outputStream = new FileOutputStream(pdfFilePath) ) { if(converter == null){ converter = LocalConverter.builder().build(); } converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute(); System.out.println("word to pdf success"); } catch (Exception e) { e.printStackTrace(); }finally { file.delete(); } return finalPdfPath; } public static void main(String[] args) throws FileNotFoundException { converter.convert(new FileInputStream("F:\\download\\20230912111517毓秀学府施工总承包工程222控制价.docx")).as(DocumentType.DOCX).to(new FileOutputStream("F:\\download\\20230912111517毓秀学府施工总承包工程222控制价1.docx")).as(DocumentType.DOCX).execute(); } }