亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

動態jsp頁面轉PDF輸出到頁面的實現方法

2024-09-05 00:22:45
字體:
來源:轉載
供稿:網友

最近工作中遇到不少問題??偨Y一下。這段代碼主要功能是將一個生成JSP頁面轉發成PDF輸出到頁面

jsp頁面輸出

需要利用ITEXT

String html = ServletUtils.forward(request,response,"/WEB-INF/jsp/depot/print/jhd.jsp"); //轉發請求到jsp,返回解析之后的內容而不是輸出到瀏覽器//System.out.println(html);byte[] pdf = PDFUtils.html2pdf(html);response.setContentType("application/pdf");response.setHeader("Content-Length",String.valueOf(pdf.length));response.setHeader("Connection","keep-alive");response.setHeader("Accept-Ranges","none");response.setHeader("X-Frame-Options","DENY");OutputStream out = response.getOutputStream();out.write(pdf);out.flush();public class ServletUtils {/*** 此forward方法執行完畢之后不會輸出內容到瀏覽器,而是把輸出到字節流,最后以字符串的形式返回* @param request* @param response* @param src* @return*/public static String forward(HttpServletRequest request, HttpServletResponse response, String src) {try{/* ↓↓↓↓↓重新構造response,修改response中的輸出流對象,使其輸出到字節數組↓↓↓↓↓ */final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();final ServletOutputStream servletOuputStream = new ServletOutputStream() {@Overridepublic void write(int b) throws IOException {byteArrayOutputStream.write(b);}@Overridepublic boolean isReady() {return false;}@Overridepublic void setWriteListener(WriteListener writeListener) {}};final PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(byteArrayOutputStream, "UTF-8"));response = new HttpServletResponseWrapper(response) {public ServletOutputStream getOutputStream() {return servletOuputStream;}public PrintWriter getWriter() {return printWriter;}};/* ↑↑↑↑↑↑重新構造response,修改response中的輸出流對象,使其輸出到字節數組↑↑↑↑↑↑ *///執行forward操作request.getRequestDispatcher(src).forward(request,response);//把字節流中的內容太轉為字符串return new String(byteArrayOutputStream.toByteArray(),"utf-8");}catch (Exception e){throw new RuntimeException(e);}}}import com.itextpdf.text.*;import com.itextpdf.text.pdf.PdfWriter;import com.itextpdf.tool.xml.Pipeline;import com.itextpdf.tool.xml.XMLWorker;import com.itextpdf.tool.xml.XMLWorkerFontProvider;import com.itextpdf.tool.xml.XMLWorkerHelper;import com.itextpdf.tool.xml.exceptions.CssResolverException;import com.itextpdf.tool.xml.html.CssAppliers;import com.itextpdf.tool.xml.html.CssAppliersImpl;import com.itextpdf.tool.xml.html.Tags;import com.itextpdf.tool.xml.parser.XMLParser;import com.itextpdf.tool.xml.pipeline.css.CSSResolver;import com.itextpdf.tool.xml.pipeline.css.CssResolverPipeline;import com.itextpdf.tool.xml.pipeline.end.PdfWriterPipeline;import com.itextpdf.tool.xml.pipeline.html.HtmlPipeline;import com.itextpdf.tool.xml.pipeline.html.HtmlPipelineContext;import java.io.*;/*** pdf工具類*/public class PDFUtils {/*** 把html轉換成pdf,以字節數組的形式返回pdf文件* @param html* @return pdf字節數組* @throws IOException* @throws DocumentException* @throws CssResolverException*/public static byte[] html2pdf(String html) throws IOException, DocumentException,CssResolverException {Document document = new Document(PageSize.A4);ByteArrayOutputStream os = new ByteArrayOutputStream();PdfWriter writer = PdfWriter.getInstance(document,os);document.open();XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(){@Overridepublic Font getFont(String fontname, String encoding, float size, int style) {return super.getFont(fontname == null ? "宋體" : fontname, encoding, size, style);}};fontProvider.addFontSubstitute("lowagie", "garamond");fontProvider.setUseUnicode(true);//使用我們的字體提供器,并將其設置為unicode字體樣式CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());CSSResolver cssResolver = XMLWorkerHelper.getInstance().getDefaultCssResolver(true);Pipeline<?> pipeline = new CssResolverPipeline(cssResolver,new HtmlPipeline(htmlContext, new PdfWriterPipeline(document,writer)));XMLWorker worker = new XMLWorker(pipeline, true);XMLParser p = new XMLParser(worker);p.parse(new InputStreamReader(new ByteArrayInputStream(html.getBytes("gbk"))));document.close();return os.toByteArray();}}

以上所述是小編給大家介紹的動態jsp頁面轉PDF輸出到頁面的實現方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产中文字幕在线观看| 深夜精品寂寞黄网站在线观看| 精品国产一区二区三区久久狼黑人| 欧美激情精品久久久久久变态| 九九视频这里只有精品| 亚洲xxxx视频| 日韩精品视频观看| 日韩欧美国产高清91| 亚洲国产成人精品久久| 欧美黄色小视频| 国产精品激情自拍| 日韩精品中文在线观看| 国产一区玩具在线观看| 日本午夜精品理论片a级appf发布| 国产日韩精品综合网站| 日韩精品视频在线免费观看| 亚洲精品一区二三区不卡| 国产日韩欧美夫妻视频在线观看| 91国偷自产一区二区三区的观看方式| 久久精品91久久久久久再现| 九九久久精品一区| 亚洲精品成人av| 久久久国产精品x99av| 中文字幕亚洲欧美一区二区三区| 国产精品美女av| 国产成人精品综合久久久| 国产精品视频公开费视频| 国产精品一区二区3区| 91精品免费久久久久久久久| 欧洲精品在线视频| 亚洲无av在线中文字幕| 成人精品一区二区三区电影免费| 疯狂蹂躏欧美一区二区精品| 国产欧美精品va在线观看| 亚洲精品乱码久久久久久按摩观| 日韩一区二区三区xxxx| 大伊人狠狠躁夜夜躁av一区| 欧美性受xxxx黑人猛交| 亚洲成年人影院在线| 欧美性猛交xxxx乱大交| 日韩成人小视频| 日韩精品中文字幕在线观看| www.欧美免费| 国产精品男人的天堂| 日本一区二区不卡| 精品动漫一区二区| 亚洲成人网av| 日韩电影在线观看免费| 国产精品r级在线| 欧美成人午夜视频| 一本一本久久a久久精品牛牛影视| 亚洲成色999久久网站| 国产亚洲视频中文字幕视频| 亚洲最大福利视频网| 最新的欧美黄色| 亚洲精品丝袜日韩| 欧美超级免费视 在线| 久久亚洲精品小早川怜子66| 久久久久久香蕉网| 日韩黄在线观看| 亚洲国内精品在线| 毛片精品免费在线观看| 欧美性极品xxxx做受| 亚洲第一在线视频| 欧美日韩亚洲一区二区三区| 97在线观看免费高清| 国产一区二中文字幕在线看| 性欧美激情精品| 亚洲美女视频网| 亚洲精品suv精品一区二区| 欧美第一页在线| 国产精品久久二区| 欧美在线www| 成人免费视频在线观看超级碰| 亚洲精品小视频在线观看| 成人久久久久爱| 成人乱人伦精品视频在线观看| 国产成人一区二区三区| 精品亚洲夜色av98在线观看| 久久99热精品这里久久精品| 亚洲成人av片在线观看| 久久视频在线播放| 久久久久久久久久久免费| 日本国产一区二区三区| 日韩av资源在线播放| 狠狠久久亚洲欧美专区| 欧美性69xxxx肥| 久久69精品久久久久久久电影好| 亚洲男子天堂网| 国产精品欧美一区二区三区奶水| 国产精品扒开腿爽爽爽视频| 国产一区二区在线免费视频| 亚洲人成欧美中文字幕| 久久久久久久久久亚洲| 成人网欧美在线视频| 91精品国产高清久久久久久91| 欧美日韩国产成人在线观看| 岛国视频午夜一区免费在线观看| 亚洲а∨天堂久久精品9966| 日韩美女视频免费在线观看| 久久久久999| 欧美成人性色生活仑片| 欧美老女人在线视频| 国产精品中文字幕在线观看| 97热在线精品视频在线观看| 日韩亚洲一区二区| 亚洲欧洲一区二区三区在线观看| 国产在线高清精品| 精品亚洲永久免费精品| 91免费精品视频| 国产精品亚洲欧美导航| 国产性色av一区二区| 精品国产91久久久久久老师| 精品免费在线观看| 国产精品久久久久久久美男| 亚洲成人999| 国产一区视频在线播放| 国产精品一区二区久久| 国产日韩欧美夫妻视频在线观看| 欧美伊久线香蕉线新在线| 国产精品人人做人人爽| 欧美精品情趣视频| 亚洲一区二区福利| 亚洲欧美日韩综合| 精品成人国产在线观看男人呻吟| 色综合久久88色综合天天看泰| 精品久久久久久久久久久久| 日韩精品在线免费| 国产欧美最新羞羞视频在线观看| 精品视频在线观看日韩| 亚洲国产精品久久久久| 久久亚洲欧美日韩精品专区| 久久久精品久久| 精品视频偷偷看在线观看| 欧美精品在线看| 日韩在线欧美在线国产在线| 日韩在线观看免费全| 日韩av不卡在线| 久久大大胆人体| 国产va免费精品高清在线观看| 性色av一区二区三区免费| 宅男66日本亚洲欧美视频| 国产精品久久综合av爱欲tv| 国产精品黄色影片导航在线观看| 青青草成人在线| 波霸ol色综合久久| 国产美女主播一区| 国产一区av在线| 亚洲国产精品999| 国产69精品99久久久久久宅男| 国产精品稀缺呦系列在线| 国产综合久久久久| 美女视频黄免费的亚洲男人天堂| 日韩精品丝袜在线| 国产91色在线免费| 久久精品成人一区二区三区| 国产视频福利一区| 精品高清美女精品国产区| 亚洲人成电影网站色xx| 亚洲人成网站免费播放| 亚洲最大的成人网| 欧美日韩国产色视频| 亚洲自拍另类欧美丝袜| 成人黄色大片在线免费观看|