<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    解決Jasperreport的web 套打

     

    前段時間寫了一篇 解決Jasperreportweb打印另一種方法http://m.tkk7.com/three-3/archive/2010/06/24/324329.html 
    關于在web中的打印 套打是經常被提到的,這個需求很廣泛,中間忙了一些其他的事情,到今天才把在Jasperreport實現web套打的內容整理好。

    在讀這篇文章之前最好先讀一下上一篇文章,里面有些設計到jatoolsprinter的內容需要了解一下。

            下面開始講述一下整個套打的過程

    1:首先用ireport制作一張套打的報表如下圖


     

    如下模板所示 在一個image組件上放上要打印的內容,我這里的演示是從數據庫中取到的字段打印出來。



     

    至于ireport模板的制作,我這里不做介紹,因為我自己也沒有接觸多久,會的不一定比你多。

     

    2:創建JSP文件 代碼如下

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding
    ="utf-8"%>
    <%@ page import="net.sf.jasperreports.engine.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="net.sf.jasperreports.engine.util.*"%>
    <%@ page import="net.sf.jasperreports.engine.export.*"%>

    <html>
        
    <head>
            
    <!-- 插入打印控件 -->
            
    <OBJECT ID="jatoolsPrinter"
                CLASSID
    ="CLSID:B43D3361-D975-4BE2-87FE-057188254255"
                codebase
    ="jatoolsPrinter.cab#version=5,3,0,0"></OBJECT>
        
    </head>
        
    <script type="text/javascript">
     function doPrint(how)
                    

                    
    //打印文檔對象
                    var myDoc =
                        
    {
                        settings:
                            
    {
                            pageWidth: 
    2100,    //自定義紙張寬度(單位為十分之一毫米)
                            pageHeight: 1400,  //自定義紙張高度(單位為十分之一毫米)
                            orientation: 1     //打印方向
                            }
    ,
                        enableScreenOnlyClass:
    true// 使所有使用 screen-only 樣式類的對象,只在預覽、顯示時可見,打印時隱藏
                        documents: document, // 打印頁面(div)們在本文檔中
                        marginIgnored: true,
                       settingsID: 
    'mydocc'//打印設置的ID保存在注冊表中
                        copyrights: '杰創軟件擁有版權   www.jatools.com' // 版權聲明必須
                        }
    ;
        
    // 調用打印方法
        if(how == '打印預覽')
            jatoolsPrinter.printPreview(myDoc,
    true );   // 打印預覽
                     
           
    else if(how == '打印')
               jatoolsPrinter.print(myDoc ,
    true);   // 打印前彈出打印設置對話框
                    
           
    else
               jatoolsPrinter.print(myDoc ,
    false);       // 不彈出對話框打印
    }

    </script>
        
    <body bgcolor="white">

            
    <br>
            
    <input type="button" value="打印預覽" onClick="doPrint('打印預覽')">
            
    <input type="button" value="打印" onClick="doPrint('打印')">
            
    <input type="button" value="打印" onClick="doPrint('打印')">
            
    <br>




            
    <%
                        File reportFile 
    = new File(application
                        .getRealPath(
    "/jasper/taoda.jasper"));
                JasperReport jasperReport 
    = (JasperReport) JRLoader
                        .loadObject(reportFile.getPath());
                Map parameters 
    = new HashMap();

                Class.forName(
    "com.mysql.jdbc.Driver");
                Connection conn 
    = DriverManager.getConnection(
                        
    "jdbc:mysql://localhost:3306/DataName""user""password");
                JasperPrint jasperPrint 
    = JasperFillManager.fillReport(
                        jasperReport, parameters, conn);

                JRXhtmlExporter exporter 
    = new JRXhtmlExporter();
                StringBuffer sbuffer 
    = new StringBuffer();

                Map imagesMap 
    = new HashMap();
                session.setAttribute(
    "IMAGES_MAP", imagesMap);

                exporter
                        .setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
                exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
                exporter
                        .setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
                String imgServDirUrl 
    = "/images/";
                File imgRealDir 
    = new File(request.getRealPath(File.separator)
                        
    + imgServDirUrl);
                
    if (!imgRealDir.exists()) {
                    imgRealDir.mkdirs();
                }

                exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request
                        .getContextPath()
                        
    + imgServDirUrl);
                exporter.setParameter(JRHtmlExporterParameter.IMAGES_DIR,
                        imgRealDir);
                exporter.setParameter(
                        JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR,
                        Boolean.TRUE);

                exporter.setParameter(
                        JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
                        Boolean.FALSE);
                exporter.exportReport();
                conn.close();
            
    %>


    其中以下內容為jatoolsprinter所需代碼

    <OBJECT ID="jatoolsPrinter"
                CLASSID
    ="CLSID:B43D3361-D975-4BE2-87FE-057188254255"
                codebase
    ="jatoolsPrinter.cab#version=5,3,0,0"></OBJECT>



    function doPrint(how)
                    

                    
    //打印文檔對象
                    var myDoc =
                        
    {
                        settings:
                            
    {
                            pageWidth: 
    2100,    //自定義紙張寬度(單位為十分之一毫米)
                            pageHeight: 1400,  //自定義紙張高度(單位為十分之一毫米)
                            orientation: 1     //打印方向
                            }
    ,
                        enableScreenOnlyClass:
    true// 使所有使用 screen-only 樣式類的對象,只在預覽、顯示時可見,打印時隱藏
                        documents: document, // 打印頁面(div)們在本文檔中
                        marginIgnored: true,
                       settingsID: 
    'mydocc'//打印設置的ID保存在注冊表中
                        copyrights: '杰創軟件擁有版權   www.jatools.com' // 版權聲明必須
                        }
    ;
        
    // 調用打印方法
        if(how == '打印預覽')
            jatoolsPrinter.printPreview(myDoc,
    true );   // 打印預覽
                     
           
    else if(how == '打印')
               jatoolsPrinter.print(myDoc ,
    true);   // 打印前彈出打印設置對話框
                    
           
    else
               jatoolsPrinter.print(myDoc ,
    false);       // 不彈出對話框打印


     

    起先在在jasperreprot中輸出格式為html 背景圖一直不顯示,單獨放一張圖片,圖片上不要有其他組件,就會顯示,一直沒搞清楚這個問題是什么原因,但是輸出格式為xhtml的時候圖片就會顯示。


     

    3:修改JRXhtmlExporter代碼


     

    根據jatoolsprinter的規范,需要在打印的內容的div 命名規則必須為<div id='page'+數字>

    Jasperreport是利用<a name="JR_PAGE_ANCHOR_?_?"></a>來區分頁數所以我們在代碼中找到輸出JR_PAGE_ANCHOR_?_? 的位置在他之后加上

    writer.write("<div id='page"+ (pageIndex + 1)+"'>"n");

        exportPage(page);

    writer.write("</div>"n");


     

    4:預覽可見,打印不可見。

    這樣打印的頁面jatoolsprinter就可以找到了。可是還有個問題,套打一般的問題都是希望那個底圖在預覽的時候可見而打印的時候不打印,那么這個問題在jatoolsprinter中是這樣處理的。

    找到輸出img信息的位置如下圖



     

    在輸出img 的信息中添加 writer.write(" class=\"screen-only\"");現在底圖就不會被打印出來了。

    5:啟動tomcatweb下運行



     

    點擊打印預覽




    最后打印效果如下




     

    這篇文章只是對在JsperReport中進行套打進行了介紹。套打當中還會設計到其他的一些問題可以參照早先錄的一個視頻一步一步教你做web套打(http://www.56.com/u11/v_NTA2MjcyMDM.html),這個就和JsperReport沒有任何關系了。



     

    posted on 2010-07-27 09:24 楊慕 閱讀(15247) 評論(5)  編輯  收藏 所屬分類: J2EE

    評論

    # re: 解決Jasperreport的web 套打 2011-03-18 11:17 清風劍客

    不錯,但樓主好像沒有說如何讓預覽時顯示Image組件的圖像,而打印時不打印圖像。  回復  更多評論   

    # re: 解決Jasperreport的web 套打 2011-03-23 17:29 類風

    不明白模板文件jasper中的image怎么定義和設置參數,希望樓主給個模板文件參考一下,謝謝!  回復  更多評論   

    # re: 解決Jasperreport的web 套打 2011-07-25 14:28 阿斯蒂芬

    jatoolsprinter是收費的,所以還是放棄吧。。。。。。。。。。。  回復  更多評論   

    # re: 解決Jasperreport的web 套打 2013-07-29 15:05 gdTo

    貌似最近又出了一個免費版的,還是不錯的~~贊一個  回復  更多評論   

    # re: 解決Jasperreport的web 套打[未登錄] 2016-06-03 16:58 張三

    殺殺菌的卡是打算  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2013年7月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    導航

    統計

    常用鏈接

    留言簿(3)

    隨筆分類(3)

    隨筆檔案(3)

    文章檔案(11)

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: h在线观看视频免费网站| 国产免费131美女视频| 亚洲Av永久无码精品一区二区| 免费人成在线观看视频播放| 中文日本免费高清| 亚洲人成小说网站色| 亚洲国产精品一区二区第四页 | 国产免费一区二区视频| 久久久无码精品亚洲日韩京东传媒| 青青久在线视频免费观看| 一级免费黄色毛片| 亚洲av无码专区在线| 亚洲综合无码精品一区二区三区| 波多野结衣中文字幕免费视频| 亚洲AV综合色区无码二区偷拍| 国产在线19禁免费观看| 中文字幕久精品免费视频| 亚洲国产成人精品无码区二本| 亚洲A∨无码一区二区三区| 美女被免费视频网站a国产| 99re在线精品视频免费| 一边摸一边桶一边脱免费视频 | 亚洲AV无码专区电影在线观看| 最近中文字幕mv手机免费高清| 中文字幕免费观看全部电影| 亚洲欧美日韩一区二区三区在线| 亚洲精品无码精品mV在线观看| 国产成人免费手机在线观看视频 | 男人的天堂av亚洲一区2区| 亚洲精品自在线拍| 亚洲无线码在线一区观看| 日本人的色道www免费一区| 美女内射毛片在线看免费人动物 | 女人被男人桶得好爽免费视频 | 精品国产免费观看一区| 最近免费中文字幕高清大全| 久青草视频在线观看免费| 成人婷婷网色偷偷亚洲男人的天堂| 亚洲成a人片在线观| 亚洲一二成人精品区| 最新亚洲成av人免费看|