java web將數(shù)據(jù)導(dǎo)出為pdf格式文件代碼片段
此片段達(dá)到的效果是:訪問(wèn)此請(qǐng)求,瀏覽器將打開(kāi)新的界面并顯示pdf文件預(yù)覽,在文件預(yù)覽界面可以下載該pdf文件。
1、jsp界面代碼
<input type="button" class="btn btn-info" onclick="getVerPdf();" target="_blank" value="導(dǎo)出為pdf文件" />
2、js代碼
function getVerPdf() { window.open('/pms/jsp/version/getPrdVerListPdf?page=' + $("#getPage").html() + '&key=' + $("#select").val()); }
3、java代碼
/** * * Purpose :將產(chǎn)品版本列表導(dǎo)出為pdf格式 * * @param req * 請(qǐng)求 * @param resp * 應(yīng)答 * @param page * 當(dāng)前頁(yè)數(shù) */ @RequestMapping(value = "getPrdVerListPdf") public void getPrdTypeList(HttpServletRequest req, HttpServletResponse resp, Integer page, String key) { resp.setContentType("application/pdf"); // 彈框選擇保存路徑和文件名 // resp.setHeader("content-disposition", // "attachment;filename=PrdVerList.pdf"); // 得到當(dāng)前頁(yè)的數(shù)據(jù) List<Version> verList = prdVersionSer.getAllPrdVersion(key); if (verList.size() == 0) { // 如果沒(méi)有數(shù)據(jù),則返回主界面并顯示提示消息 req.setAttribute("getFileMsg", "沒(méi)有符合條件的信息!"); req.setAttribute("select", key); try { req.getRequestDispatcher("/jsp/version/ver_list.jsp").forward(req, resp); } catch (Exception e) { e.printStackTrace(); } } else { // 如果有數(shù)據(jù),則顯示pdf文件 JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(verList); String reportPath = null; Map<String, Object> map = new HashMap<String, Object>(); if (key != "") { map.put("prdName", verList.get(0).getPrdName()); } else { map.put("prdName", ""); } reportPath = req.getServletContext().getRealPath("/reports/prdVerListByPrdName.jasper"); InputStream is = null; try { is = new FileInputStream(reportPath); JasperRunManager.runReportToPdfStream(is, resp.getOutputStream(), map, ds); } catch (Exception e) { e.printStackTrace(); } finally { if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
超詳細(xì)講解Java秒殺項(xiàng)目登陸模塊的實(shí)現(xiàn)
這是一個(gè)主要使用java開(kāi)發(fā)的秒殺系統(tǒng),項(xiàng)目比較大,所以本篇只實(shí)現(xiàn)了登陸模塊,代碼非常詳盡,感興趣的朋友快來(lái)看看2022-03-03MyBatis-Plus自動(dòng)填充字段的詳細(xì)教程
今天編寫(xiě)一個(gè)詳細(xì)的教程來(lái)介紹如何在?Spring?Boot?項(xiàng)目中使用?MyBatis-Plus?實(shí)現(xiàn)自動(dòng)填充時(shí)間字段(如創(chuàng)建時(shí)間?createTime?和更新時(shí)間?updateTime),可以分為以下幾個(gè)部分,這個(gè)教程將涵蓋從項(xiàng)目配置到自動(dòng)填充的完整過(guò)程,需要的朋友可以參考下2024-08-08mybatis 一對(duì)多嵌套查詢的實(shí)現(xiàn)
本文主要介紹了mybatis 一對(duì)多嵌套查詢的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07mybatis調(diào)用存儲(chǔ)過(guò)程的實(shí)例代碼
這篇文章主要介紹了mybatis調(diào)用存儲(chǔ)過(guò)程的實(shí)例,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-10-10