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

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

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

    解決Jasperreport的web 套打

     

    前段時間寫了一篇 解決Jasperreportweb打印另一種方法http://www.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)

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 午夜不卡久久精品无码免费| 99久久成人国产精品免费 | 中文字幕免费在线| 免费一级国产生活片| WWW亚洲色大成网络.COM| 日韩伦理片电影在线免费观看| 国产一级淫片视频免费看| 亚洲欧洲日产专区| 麻豆一区二区免费播放网站| 亚洲精品美女久久久久| 青草草色A免费观看在线| 亚洲乱码一二三四区乱码| 成人午夜视频免费| 边摸边吃奶边做爽免费视频网站 | 亚洲www77777| 国产成人精品免费视频软件| 国产精品亚洲精品日韩电影| 亚洲日韩国产成网在线观看| 99久久免费国产特黄| 久久精品国产亚洲AV无码偷窥 | 国产精品免费久久久久久久久 | 永久黄网站色视频免费| 欧美亚洲精品一区二区| 久久精品国产精品亚洲| 四虎国产精品永久免费网址 | 日韩一区二区三区免费体验| 日韩亚洲人成在线| 免费精品国产自产拍观看| 国产精品hd免费观看| 亚洲精品在线免费观看| 麻豆精品国产免费观看| 久久最新免费视频| avtt天堂网手机版亚洲| 亚洲日韩中文在线精品第一| 毛片无码免费无码播放| 亚洲av日韩综合一区二区三区| 91嫩草免费国产永久入口| 菠萝菠萝蜜在线免费视频| 久久精品国产亚洲| 中文字幕影片免费在线观看 | 男女猛烈xx00免费视频试看|