今天由于打印需求,需要将一些word文件转为pdf文件后打印,于是查询了相关资料,进行相关改进后实现了word批量转pdf
1. 所需依赖
<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.实现代码
public static void main(String[] args) {
String inputFolderPath = "C:\\Users\\leking\\Desktop\\新建文件夹 (2)";// 输入目录
String outputFolderPath = "C:\\Users\\leking\\Desktop\\新建文件夹 (2)"; // 输出目录
try {
Files.createDirectories(Paths.get(outputFolderPath)); // 无输出目录则创建输出目录
Files.walk(Paths.get(inputFolderPath))
.filter(Files::isRegularFile)
.filter(path -> path.toString().endsWith(".docx") || path.toString().endsWith(".doc"))// 过滤出需要转换的文件
.forEach(inputPath -> {
try {
File inputWord = inputPath.toFile();
String outputFileName = inputWord.getName().substring(0, inputWord.getName().lastIndexOf('.')) + ".pdf";// 设置转换后的文件名
File outputPdf = new File(outputFolderPath, outputFileName);
InputStream docInputStream = new FileInputStream(inputWord);
OutputStream outputStream = new FileOutputStream(outputPdf);
IConverter converter = LocalConverter.builder().build();
DocumentType docType = inputWord.getName().endsWith(".docx") ? DocumentType.DOCX : DocumentType.DOC;
converter.convert(docInputStream).as(docType).to(outputStream).as(DocumentType.PDF).execute();
docInputStream.close();
outputStream.close();
System.out.println("Converted " + inputWord.getName() + " to " + outputPdf.getName());
} catch (Exception e) {
e.printStackTrace();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}