背景:这里的项目需求是要生成pdf文件以供预览和下载,由于前端不太好操作,所以这里是后端负责转化的,相比doc,pdf更加方便简单。
1.首先引进pom依赖
2.然后进行转化,这里的入参为要输出的文件地址以及html页面内容,前端将回填数据后的dom树内容传过来,这里的html需要
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
作为头,并且所有标签都要闭合。
3.如步骤2红字,为了字体的正确展示,需要把.ttc文件放入项目中,前端的html页面body的style也要是simsun。
解决完需求后的思考:
当时的第一方案其实是前端给个html页面的url地址,后端跳转到页面并且走页面里的请求查询数据再动态加载数据并且回填,之后再进行转化。这样做的好处是前端给的入参只是一个url连接而已而非上述的html内容,这样就减少网络传输。
只是因为页面加载数据时是ajax异步请求回填的,导致转化后的pdf是回填前的内容,也就是这里没法控制:先请求接口回填数据-->再走转化方法为pdf。
以此记录一下吧。