关于使用pdfObject.js与Itext配合展示后台传递的pdf流遇到的坑*
问题汇总
- 左上角文件名称是如何显示
- 点击下载的文件名如何动态传递名称
一.前端开发步骤
1.html引入js
<script type="text/javascript" src="js/pdfobject.js"></script>
2.css
<style type="text/css">
.pdfobject-container { height: 90rem; border: 1rem solid rgba(0,0,0,.1); }
</style>
3.html元素
<div id="pdfId"></div>
4.渲染pdf在线浏览
var url = "你的后台url路径"
PDFObject.embed(url, "#pdfId");
二.后台代码
图中工具类是自己的Itext的document
ByteArrayOutputStream baos = null;
baos = PwStockOutExportPdfUtil.createPdf(title,pwStockOut,mapList,items,historyList);
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Type", "application/pdf;charset=UTF-8");
response.setContentType("application/pdf;charset=UTF-8");
((HttpServletResponse)response).addHeader("Content-Disposition", "inline;filename="
+ new String((title+DateFormatUtils.format(System.currentTimeMillis(), "yyyyMMdd")).getBytes(),"iso-8859-1") + ".pdf");
OutputStream outStream = response.getOutputStream();
outStream.write(baos.toByteArray());
outStream.flush();
outStream.close();
问题解决
- 左上角的汉字通过Itext
document.addTitle(title);
- 点击下载下载的文件名
((HttpServletResponse)response).addHeader("Content-Disposition", "inline;filename="
+ new String((title+DateFormatUtils.format(System.currentTimeMillis(), "yyyyMMdd")).getBytes(),"iso-8859-1") + ".pdf");
response响应addHeader一定要是inline内联,否则打开浏览界面就会下载 ,这里可以查看inline和atachment区别