首先呢,ajax是的请求数据类型时json,html等形式,实际上是字符串类型,而不是流类型(二进制编码),所以后台不能响应下载操作,但是ajax可以读取后台返回的数据。
我使用jquery开发的轻量级web项目,但是有个需求是需要下载项目中计算出来的数据,并按一定排版排布生成pdf或者word文档。由于前端的插件下载的pdf布局比较受限,容易产生不清晰,乱码等问题,所以只能后台进行。既然ajax不能响应,我采取的方式是模拟表单点击,发送数据到后台,然后在后台进行排版并下载pdf。代码如下:
html
然后对模拟表单下载的代码进行封装成一个方法,往里面传入URL,还有需要填充进pdf的数据fileValue,代码如下:
模拟点击方法与点击下载事件
本例是demo,所以使用servlet,进行简单的数据收发。通过如下代码接收数据:
response.setContentType("text/html;charset=utf-8");
String fileName = request.getParameter("fileName");
然后就是后台的工作了,这里可以简单进行说明一下,也可以自己操作,后台实现下载pdf,word需要借助几个jar包:itextpdf-5.5.jar与itext-asian-5.2.0.jar可以下载pdf,另外的两个可以下载word。使用时注意引入问题。
需要的插件
后台需要事先准备一个pdf放入lib或者其他文件夹中,用来做为模板,往里面写入数据;需要封装一个写入数据后在前台生成pdf的方法,同时需要写一个排版数据的方法,由于篇幅有限,这里就不放代码了。效果如下:
pdf效果图
这样一点击下载,数据发送到后台,进入到排布的方法写入模板,同时保存的方法读取该模板,前台就出现保存或自动下载pdf文件了,一份高清的pdf就生成了。
原创不易,欢迎大家点赞,可以互相讨论,共同进步,谢谢!
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/1793381.html