依赖
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-local</artifactId>
<version>1.1.5</version>
</dependency>
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-transformer-msoffice-word</artifactId>
<version>1.1.5</version>
</dependency>
工具类
PdfUtil
文件类型为doc和docx后缀转pdf格式,支持图片转换
public class PdfUtil {
/**
* 本地文件word转pdf
* @param wordFilePath word文件路径
* @param pdfFilePath pdf文件路径
* @param suffix 文件后缀
* @return 成功或失败
*/
public static boolean doc2Pdf(File wordFilePath, File pdfFilePath, String suffix) {
boolean result = false;
try {
InputStream inputStream = new FileInputStream(wordFilePath);
OutputStream outputStream = new FileOutputStream(pdfFilePath);
IConverter converter = LocalConverter.builder().build();
// 工具后缀进行转换
if(suffix.equals(".doc")){
converter.convert(inputStream).as(DocumentType.DOC).to(outputStream).as(DocumentType.PDF).execute();
} else if(suffix.equals(".docx")){
converter.convert(inputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute();
} else if(suffix.equals(".txt")){
converter.convert(inputStream).as(DocumentType.TEXT).to(outputStream).as(DocumentType.PDF).execute();
}
outputStream.close();
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
ResponseUtil
浏览器在线预览工具类
public class ResponseUtil {
public static void responseBrowser(File file, HttpServletResponse response){
//下面的是进行响应客户端的测试代码
try {
FileInputStream fileInputStream = new FileInputStream(file);
//设置Http响应头告诉浏览器下载这个附件,下载的文件名也是在这里设置的
System.out.println("file.getName() >>>"+file.getName());
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(file.getName(), "UTF-8"));
// response.setHeader("Content-Disposition", "inline;fileName=" + URLEncoder.encode(file.getName(), "UTF-8"));
System.out.println("file.getPath() >>>>>>"+file.getPath());
OutputStream outputStream = null;
outputStream = response.getOutputStream();
byte[] bytes = new byte[2048];
int len = 0;
while ((len = fileInputStream.read(bytes))>0){
outputStream.write(bytes,0,len);
}
fileInputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件响应出错,读写出错");
}
}
public static void onlineReader(File file, HttpServletResponse response){
if (file.exists()){
byte[] data = null;
try {
response.setHeader("Content-Disposition", "inline;fileName=" + URLEncoder.encode(file.getName(), "UTF-8"));
FileInputStream input = new FileInputStream(file);
data = new byte[input.available()];
input.read(data);
response.getOutputStream().write(data);
input.close();
} catch (Exception e) {
System.out.println(e);
}
}else{
System.out.println("文件不存在");
}
}
}