一:首先项目要添加maven依赖
<!-- pdf start -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.10</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<!-- pdf end -->
二:需要在前台页面引入pdfobject.js
js的下载地址:
1:我已经打包下载好的下载地址:https://download.youkuaiyun.com/download/sgl520lxl/11246388
2:官方github下载地址:https://github.com/pipwerks/PDFObject/
三:下载好js源码请在你要用的前台页面引入pdfobject.js
<!--引入pdfobject.js-->
<script type="text/javascript" src="/assets/pdfobject/pdfobject.js"></script>
<!--这是设置浏览pdf页面的大小-->
<style>
.pdfobject-container { height: 800rem; border: 1rem solid rgba(0,0,0,.1); }
</style>
<!--设置一个div用来存放展示页面-->
<div id="pdfId"></div>
//生成pdf浏览(后台生成返回流的action接口地址)
$("#selectSeach").click(function(){
var url = [[@{/print/createPdfStream}]];
url = url +"?date="+s_payDate;
//把流画到id为pdfId div中展示pdf
PDFObject.embed(url, "#pdfId");
});
四:后台action接口,返回把数据以流返回
/**
* @Author Ni Klaus
* @Description //TODO 根据条件生成pdf流
* @Date 下午 14:58 2019/6/17 0017
* @Param [response, request, session]
* @return void
**/
@RequestMapping("createPdfStream")
public void getCloudAutQRCode(HttpServletResponse response, HttpServletRequest request, HttpSession session) throws IOException {
//数据库查询出来的数据,我这里直接省略了查询的代码,直接生成对象
StatisticsResult statisticsResult = new StatisticsResult();
statisticsResult.setTime(date);
statisticsResult.setWindowStr(windowName);
List<ChargeResult> list = new ArrayList<>();
try {
Document document =new Document();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter.getInstance(document,baos);
//设置字体
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
com.itextpdf.