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

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

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

    解決Jasperreport的web打印另一種方法

    昨天下了jasperreport的最新版本3.7.3看了下。弄了半天還是沒能習(xí)慣他的報表制作方式。看了下他的打印是利用applet的來打印的。而且還需要客戶端安裝 十幾MB的 jre 關(guān)于這個好壞,每個人都有自己的看法。今天我這里要說的是利用jatoolsprinter控件來打印jasperreport的報表。控件大小只有100k左右         關(guān)于jasperreport的報表制作這里不做說明,我是在環(huán)境中跑了下jasperreport的demo運行界面如下


    運行JSP Example 如下圖

    下面我們對demo中的html.jsp進(jìn)行修改 用jatoolsprinter來打印Jasperreport 的報表
    藍(lán)色部分為控件需要的內(nèi)容
    <%@ page contentType="text/html; charset=gb2312" language="java" %>
    <%@ page errorPage="error.jsp" %>
    <%@ page import="datasource.*" %>
    <%@ page import="net.sf.jasperreports.engine.*" %>
    <%@ page import="net.sf.jasperreports.engine.util.*" %>
    <%@ page import="net.sf.jasperreports.engine.export.*" %>
    <%@ page import="net.sf.jasperreports.j2ee.servlets.*" %>
    <%@ page import="java.util.*" %>
    <%@ page import="java.io.*" %>
    <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 ={
            documents: document,    // 打印頁面(div)們在本文檔中
            copyrights :    '杰創(chuàng)軟件擁有版權(quán)
    [url=]www.jatools.com'[/url]              // 版權(quán)聲明,必須

           };
             
        // 調(diào)用打印方法
        if(how == '打印預(yù)覽...')
        jatoolsPrinter.printPreview(myDoc,true );   // 打印預(yù)覽
                     
       else if(how == '打印...')
          jatoolsPrinter.print(myDoc ,true);   // 打印前彈出打印設(shè)置對話框
                   
       else
          jatoolsPrinter.print(myDoc ,false);       // 不彈出對話框打印
    }
    </script>
    <body>

    <br>
    <input type="button" value="打印預(yù)覽...">
    <input type="button" value="打印...">
    <input type="button" value="打印">
    <br>


    <%
    File reportFile = new File(application.getRealPath("/reports/WebappReport.jasper"));
        if (!reportFile.exists())
       throw new JRRuntimeException("File WebappReport.jasper not found. The report design must be compiled first.");
    JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
    Map parameters = new HashMap();
    parameters.put("ReportTitle", "Address Report");
    parameters.put("BaseDir", reportFile.getParentFile());
       
    JasperPrint jasperPrint =
       JasperFillManager.fillReport(
        jasperReport,
        parameters,
        new WebappDataSource()
        );
       
    JRHtmlExporter exporter = new JRHtmlExporter();
    session.setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);

    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
    exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "../servlets/image?image=");

    exporter.exportReport();
    %>
    </body>
    </html>


    因為jatoolsprinter的打印是根據(jù)<div id='page'+數(shù)字>來區(qū)分打印的頁的。而Jasperreport生成的html頁面中又沒有包含這些信息,所以我們就需要修改下Jasperreport的源碼
    由生成的報表頁面的源碼中我們可以看到Jasperreport是利用<a name="JR_PAGE_ANCHOR_?_?"></a>來區(qū)分頁數(shù)的我們可以找到package net.sf.jasperreports.engine.export 下的JRHtmlExporter.java 找到代碼中的exportReportToWriter方法里的如下片段
    writer.write("<a name=\"" + JR_PAGE_ANCHOR_PREFIX + reportIndex + "_" + (pageIndex + 1) + "\"></a>\n");
    在這段代碼之后加上
    writer.write("<div id='page"+ (pageIndex + 1)+"'>\n");
    然后找到源碼中的
    exportPage(page);
    在他之后加上div的結(jié)束標(biāo)志
    writer.write("</div>\n");
    以上代碼藍(lán)色部分為后添加的內(nèi)容


    修改之后的代碼如下
    writer.write("<a name=\"" + JR_PAGE_ANCHOR_PREFIX + reportIndex + "_" + (pageIndex + 1) + "\"></a>\n");
         
         writer.write("<div id='page"+ (pageIndex + 1)+"'>\n");
         

          /*   */
          exportPage(page);
         
         
    writer.write("</div>\n");
    修改完這些之后我們就把jatoolsPrinter.cab放在項目中html.jsp
    <OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255"
    codebase="jatoolsPrinter.cab#version=5,3,0,0"></OBJECT>


    codebase指定的位置這里指定的是和html.jsp同一路徑

    現(xiàn)在打開IE 運行 demo
    第一次運行會提示安裝jatoolsprinter控件 選擇安裝ActiveX控件


    點擊安裝


    點擊打印預(yù)覽效果如下



    到此就可以在web頁面中直接打印Jasperreport 報表了。

    posted on 2010-06-24 13:08 楊慕 閱讀(16567) 評論(21)  編輯  收藏 所屬分類: 報表

    評論

    # re: 解決Jasperreport的web打印另一種方法 2010-06-24 22:07 18傲骨中文

    en 受教了~~~~~~~  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-06-25 08:33 rox

    呵呵,謝謝,這個比applet是要簡單些。  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-06-25 09:17 凌晨風(fēng)

    正常分頁沒問題嗎?字體換行不會掉字吧?  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-06-25 11:27 楊慕

    @凌晨風(fēng)
    分頁沒有問題的,不會掉字。。。
      回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-06-25 11:28 楊慕

    @rox
    今天再研究下套打的實現(xiàn)。。。  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-06-25 12:01 凌晨風(fēng)

    jasperReport我搞了很長時間,主要是使用在國內(nèi)的保單打印上,典型的套打,雖然使用applet和數(shù)字簽名搞定,但是畢竟龐大,希望和樓主共同探討  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-06-29 13:05 瀟湘振宇

    確實挺不錯,以前也弄過Jasperreport,而且一直在用,但總覺得其applet的打印方式實在笨重!
    有時間也嘗試一下下樓主說方式  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-07-05 23:28 來如風(fēng)

    你這個是要收費的ax空間,除了ie其它瀏覽器估計就不行了吧  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-07-23 15:26 打印

    @來如風(fēng)
    看了一下 chrome 和Firefox 都支持的
      回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-07-27 09:25 楊慕

    @凌晨風(fēng)
    前段時間一直忙別的事情,沒有顧上,今天套打的做了一個簡單的例子。  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-07-27 09:26 楊慕

    @楊慕
    http://www.tkk7.com/three-3/archive/2010/07/27/327184.html  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-07-27 09:32 凌晨風(fēng)

    @楊慕
    我一直也在尋求好的報表控件,國外有家flash搞的很不錯,免費版的沒有套打功能,發(fā)我一個demo吧,laoshulin@gmail.com  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-07-29 09:31 楊慕

    @凌晨風(fēng)
    關(guān)于套打的文章在這里,如果你需要模板文件或者jsp代碼的話我發(fā)給你。。。
    jasperrreprot的版本我用的是最新的。不知道跟你的會不會有什么區(qū)別。  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2010-07-29 09:31 楊慕

    @楊慕
    http://www.tkk7.com/three-3/archive/2010/07/27/327184.html  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2011-03-23 17:25 類風(fēng)

    最近一天在研究jasperreport套打,關(guān)于在預(yù)覽時顯示圖片,在打印時不打印圖片,一直困惑很久不知道怎么實現(xiàn),希望博主能夠給個模板文件和jsp代碼參考一下,謝謝!  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2011-03-23 17:25 類風(fēng)

    郵箱:leiflvll@sina.com  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2011-03-23 18:11 凌晨風(fēng)

    @類風(fēng)
    1. 添加一個參數(shù)去動態(tài)控制是否顯示圖片 BPrintShow
    2. 設(shè)置圖片的屬性中 Print When expression為 Boolean.valueOf($P{BPrintShow})
    此時iReport中就可以測試通過,代碼中只要設(shè)置相應(yīng)的參數(shù)即可,無法貼圖給你,如果還有不明白的可以mail我laoshulin@gmail.com
      回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2011-03-24 13:22 類風(fēng)

    在iReport中通過設(shè)置Print When expression為 Boolean.valueOf($P{BPrintShow})是可以控制是否打印圖片,這個已嘗試過。現(xiàn)在就是需要頁面上點擊【打印】按鈕時傳遞這個參數(shù)BPrintShow=false ,不知道在jatoolsprinter的那個位置加上這句代碼?  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法[未登錄] 2011-12-28 15:41 CC

    可以把源碼發(fā)給我看看嗎 ?謝謝
    305220554@qq.com  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2013-07-02 12:39 gdTo

    貌似很不錯的樣子,謝謝分享  回復(fù)  更多評論   

    # re: 解決Jasperreport的web打印另一種方法 2015-01-27 10:03 灰色

    同樣搞軟件開發(fā)的,最近在學(xué)習(xí)使用JasperReports,麻煩樓主把Demo發(fā)一下,
    本人郵箱: hslh22@163.com  回復(fù)  更多評論   


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


    網(wǎng)站導(dǎo)航:
     
    <2013年7月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(3)

    隨筆分類(3)

    隨筆檔案(3)

    文章檔案(11)

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲七七久久精品中文国产| 又粗又黄又猛又爽大片免费 | 久久精品国产亚洲av麻豆图片| 人妻无码一区二区三区免费| 亚洲成av人影院| 香港a毛片免费观看| 亚洲国色天香视频| 一本无码人妻在中文字幕免费 | 夜夜亚洲天天久久| 最近新韩国日本免费观看| 亚洲国产精品成人精品软件 | 久久青青草原亚洲av无码| 一级午夜a毛片免费视频| 久久久久久久尹人综合网亚洲| 一道本在线免费视频| 国产亚洲色视频在线| 久久久久高潮毛片免费全部播放| 亚洲日韩中文字幕天堂不卡 | 黄桃AV无码免费一区二区三区| 国产成人亚洲综合无码精品| 蜜臀98精品国产免费观看| 亚洲精品国产国语| 情侣视频精品免费的国产| 四虎精品成人免费视频| 亚洲AV人人澡人人爽人人夜夜| 久久www免费人成看片| 亚洲狠狠婷婷综合久久蜜芽| 亚洲国产精品一区二区三区久久| 日本免费在线中文字幕| 亚洲人成77777在线观看网| 亚洲一区二区三区免费| 亚洲综合av一区二区三区| www.亚洲精品| 亚洲高清免费在线观看| 美女视频黄频a免费观看| 成人黄18免费视频| 日本视频免费观看| 亚洲国产精品无码久久久| 在线观看亚洲精品福利片| 国产一级a毛一级a看免费人娇| 亚洲精品**中文毛片|