PDF展示,下载,Java用 PDFObject 实现数据直接以流返回前台直接展示并提供下载(PDF文件)

本文介绍了如何在Java项目中通过PDFObject库,将PDF数据以流形式返回前端,实现在页面上直接展示PDF内容,并提供下载功能。首先,需要在项目中添加对应的Maven依赖。接着,详细讲解了后台action接口如何处理,以流方式返回PDF数据。最终实现了前端可以直接浏览PDF,同时支持用户下载PDF文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:首先项目要添加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.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值