一般情况,pdf类型的文件在前端预览,都是通过前端插件,或者获取源文件浏览器自带的工具预览,由于项目中,是前后端分离,前端不想使用pdf.js类的插件,预览的要求又是只能看不能下载,所以只能另外想别的办法处理,参照之前openoffice将word/excel能转换成html的功能思路,想到能否将pdf也转换成html进行预览
于是就找到了apache的一个pdfbox的工具包能将pdf转换成图片,于是想到一个实现方案
1.将pdf转换成图片,图片保存在文件服务器,能通过get请求和图片地址获取
2.拼接一段html文件的代码,将每一个图片作为img标签的src插入html代码中
3.最后将这段html代码生成一个html文件,预览时,直接获取这个html就能查看
1.引入包
2.转换代码和生成图片代码以及拼接html生成文件代码
public static String pdf2Html(File file, String savePath, String saveUrl) throws Exception {
String htmlFileName = UUID.randomUUID().toString().replace("-", "") + ".html";
String htmlPath = DateUtils.formateDate(new Date(), "yyyy/MM/dd");
String htmlFilePath = "D:/" + htmlFileName;
PDDocument pdf = PDDocument.load(file, (String) null);
//pdf每页转换成一张png图片
StringBuffer buffer= saveImage(pdf,getHtml(), saveUrl);
pdf.close();
buffer.append("
\r\n");
buffer.append("