<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 楊慕 閱讀(15249) 評論(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 張三

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


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


    網站導航:
     
    <2010年7月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(3)

    隨筆分類(3)

    隨筆檔案(3)

    文章檔案(11)

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产成人精品日本亚洲专区61| 欧美在线看片A免费观看| 亚洲av无码不卡私人影院| 一本色道久久88亚洲精品综合| 青青视频观看免费99| 久久亚洲精品国产亚洲老地址 | 边摸边吃奶边做爽免费视频99| 四虎影视精品永久免费| 国产大陆亚洲精品国产| 免费国产怡红院在线观看| 美女视频黄频a免费大全视频| 又黄又爽无遮挡免费视频| eeuss影院免费直达入口| 国产亚洲精品久久久久秋霞| 日韩精品无码免费专区午夜| 亚洲AV无码1区2区久久| 精品国产污污免费网站aⅴ| 亚洲成年网站在线观看| 国产一区二区三区在线免费观看| 一级毛片aaaaaa视频免费看| 亚洲色大成网站WWW久久九九| 日本免费大黄在线观看| 亚洲国产综合精品中文第一| 亚洲av片一区二区三区| 国产成人AV免费观看| 亚洲伊人久久大香线焦| 美女视频黄是免费的网址| 国产成人亚洲精品91专区高清| 亚洲色婷婷综合久久| 一本岛高清v不卡免费一三区| 亚洲爆乳AAA无码专区| 亚洲一区二区三区国产精品| 久久免费视频99| 亚洲经典千人经典日产| 亚洲午夜久久久久久久久久| 久久精品免费一区二区| 特a级免费高清黄色片| 精品亚洲麻豆1区2区3区| 国产真人无遮挡作爱免费视频| 国产成人无码区免费内射一片色欲 | 亚洲精品成人av在线|