此方法可以将所有打开的html页面生成为PDF文件,生成的文件与正常PDF无异。
PDF样式完全由html页面决定;可自行修改html内容
调用系统程序需要的hutool
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.20</version>
</dependency>
生成PDFjava代码具体内容自行实现
// 获取资源路径
String path="";
PathMatchingResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
Resource[] pathArray = resourceResolver.getResources("classpath:");
path = pathArray[0].getURI().getPath();
log.info("获取资源路径: " +path);
//Windows系统下替换路径头
if(path.contains("/D:/")){
path = path.replace("/D:/","D:/");
}
// 拼接报告名称
String fileName=name+"-"+mobile+"-"+date+"-体检报告.pdf";
path=path+fileName;
log.info("--PDF文件生成地址: " +path);
// 获取报告页面地址处理
String doctorUrl="www.baidu.com/person/medreport_detailAnalyzeRpt.action?param1={param1}¶m2={param2}";
doctorUrl=doctorUrl.replace("{id}", id).replace("{personId}", personId);
//Windows 系统下生成PDF报告
// String str = RuntimeUtil.execForStr("D:\\develop\\wkhtmltox-0.12.6-1.mxe-cross-win64\\wkhtmltox\\bin\\wkhtmltopdf.exe "+doctorUrl+" "+path);
//Linux 系统下生成PDF报告
String str = RuntimeUtil.execForStr("wkhtmltopdf "+doctorUrl+" "+path);
log.info("PDF文件生成结果: " +str);
//将报告上传到文件系统
File file = new File(path);
log.info("PDF文件保存路径:"+file.getPath());
String fileUrl= "www.baidu.com/file/uploadFile";
String result= UploadFile.uploadFile(fileUrl,"",file);
log.info("PDF文件上传返回结果: " +result);
//删除报告文件
boolean delete = file.delete();
log.info("删除临时PDF文件结果: " +delete);
wkhtmltox文件安装包地址
网盘地址
部署Linux时需要安装以及配置
导出pdf所需要的依赖安装过程
当程序调用wkhtmltopdf时,显示无此命令则需按以下步骤进行安装:
将rpm离线安装包上传到服务器tmp中
yum install -y libX11 libXext libXrender libjpeg xorg-x11-fonts-75dpi xorg-x11-fonts-Type1
rpm -ivh wkhtmltox-0.12.6-1.centos7.x86_64.rpm
安装中文字体
mkdir /usr/share/fonts/chinese
vi /etc/fonts/fonts.conf
在font dir list中加入以下设置
<dir>/usr/share/fonts/chinese</dir>
将windows中的中文字体复制到文件夹中
上传到服务器/tmp下
mv /tmp/chinese /usr/share/fonts
fc-cache