<small id="oi8o0"></small>
              • <fieldset id="oi8o0"></fieldset>
              • <ul id="oi8o0"></ul>
                莫非
                游離中?。。?/div>

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

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


                運(yùn)行JSP Example 如下圖
                2010-06-24_112926.png (15.38 KB)
                2010-6-24 12:57

                下面我們對demo中的html.jsp進(jìn)行修改 用jatoolsprinter來打印Jasperreport 的報(bào)表
                藍(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>


                因?yàn)?a target="_blank">jatoolsprinter的打印是根據(jù)<div id='page'+數(shù)字>來區(qū)分打印的頁的。而Jasperreport生成的html頁面中又沒有包含這些信息,所以我們就需要修改下Jasperreport的源碼
                由生成的報(bào)表頁面的源碼中我們可以看到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)容
                2010-06-24_115143.png (15.94 KB)
                2010-6-24 12:57


                修改之后的代碼如下
                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放在項(xiàng)目中html.jsp
                <OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255"
                codebase="jatoolsPrinter.cab#version=5,3,0,0"></OBJECT>


                codebase指定的位置這里指定的是和html.jsp同一路徑
                2010-06-24_115501.png (5.74 KB)
                2010-6-24 12:57

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

                2010-06-24_115740.png (16.11 KB)
                2010-6-24 12:57

                點(diǎn)擊安裝

                2010-06-24_115843.png (14.6 KB)
                2010-6-24 12:57

                點(diǎn)擊打印預(yù)覽效果如下
                2010-06-24_115948.png (12.77 KB)
                2010-6-24 12:57



                到此就可以在web頁面中直接打印Jasperreport 報(bào)表了。

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

                評論

                # 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
                今天再研究下套打的實(shí)現(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 瀟湘振宇

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

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

                你這個是要收費(fèi)的ax空間,除了ie其它瀏覽器估計(jì)就不行了吧  回復(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.aygfsteel.com/three-3/archive/2010/07/27/327184.html  回復(fù)  更多評論   

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

                @楊慕
                我一直也在尋求好的報(bào)表控件,國外有家flash搞的很不錯,免費(fèi)版的沒有套打功能,發(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.aygfsteel.com/three-3/archive/2010/07/27/327184.html  回復(fù)  更多評論   

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

                最近一天在研究jasperreport套打,關(guān)于在預(yù)覽時顯示圖片,在打印時不打印圖片,一直困惑很久不知道怎么實(shí)現(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})是可以控制是否打印圖片,這個已嘗試過?,F(xiàn)在就是需要頁面上點(diǎ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)航:
                博客園   IT新聞   Chat2DB   C++博客   博問   管理
                相關(guān)文章:
                • 解決Jasperreport的web打印另一種方法
                • 簡表(JOR),開源報(bào)表工具
                 

                Powered by:
                BlogJava
                Copyright © 楊慕

                <2010年6月>
                日一二三四五六
                303112345
                6789101112
                13141516171819
                20212223242526
                27282930123
                45678910

                導(dǎo)航

                • BlogJava
                • 首頁
                • 新隨筆
                • 聯(lián)系
                • 聚合
                • 管理

                統(tǒng)計(jì)

                • 隨筆 - 3
                • 文章 - 11
                • 評論 - 34
                • 引用 - 0

                常用鏈接

                • 我的隨筆
                • 我的評論
                • 我的參與
                • 最新評論

                留言簿(3)

                • 給我留言
                • 查看公開留言
                • 查看私人留言

                隨筆分類(3)

                • DATA (rss)
                • Flex (rss)
                • J2EE(1) (rss)
                • 報(bào)表(2) (rss)

                隨筆檔案(3)

                • 2010年7月 (1)
                • 2010年6月 (1)
                • 2009年10月 (1)

                文章檔案(11)

                • 2008年9月 (2)
                • 2008年8月 (2)
                • 2008年7月 (4)
                • 2008年6月 (3)

                搜索

                •  

                最新評論

                • 1.?re: 解決Jasperreport的web 套打[未登錄]
                • 殺殺菌的卡是打算
                • --張三
                • 2.?re: 解決Jasperreport的web打印另一種方法
                • 同樣搞軟件開發(fā)的,最近在學(xué)習(xí)使用JasperReports,麻煩樓主把Demo發(fā)一下,
                  本人郵箱: hslh22@163.com
                • --灰色
                • 3.?re: 解決Jasperreport的web 套打
                • 貌似最近又出了一個免費(fèi)版的,還是不錯的~~贊一個
                • --gdTo
                • 4.?re: 解決Jasperreport的web打印另一種方法
                • 貌似很不錯的樣子,謝謝分享
                • --gdTo
                • 5.?re: 解決Jasperreport的web打印另一種方法[未登錄]
                • 可以把源碼發(fā)給我看看嗎 ?謝謝
                  305220554@qq.com
                • --CC

                閱讀排行榜

                • 1.?解決Jasperreport的web打印另一種方法(16582)
                • 2.?解決Jasperreport的web 套打(15260)
                • 3.?簡表(JOR),開源報(bào)表工具(7365)

                評論排行榜

                • 1.?解決Jasperreport的web打印另一種方法(21)
                • 2.?簡表(JOR),開源報(bào)表工具(8)
                • 3.?解決Jasperreport的web 套打(5)
                狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频
                主站蜘蛛池模板: 梅州市| 柘荣县| 泰安市| 安宁市| 新郑市| 安西县| 罗田县| 墨竹工卡县| 宜川县| 汝阳县| 太康县| 和静县| 萝北县| 南丹县| 阜新市| 保康县| 广汉市| 武汉市| 万盛区| 定西市| 天峻县| 香格里拉县| 库伦旗| 正定县| 玉门市| 长沙县| 永嘉县| 外汇| 尚志市| 普洱| 台州市| 清涧县| 湖州市| 壤塘县| 东乌珠穆沁旗| 凤庆县| 陕西省| 西吉县| 法库县| 方正县| 姜堰市|
                <strike id="iq2yk"><input id="iq2yk"></input></strike>
              • <ul id="iq2yk"></ul>
                <fieldset id="iq2yk"><input id="iq2yk"></input></fieldset>
                <tfoot id="iq2yk"><input id="iq2yk"></input></tfoot>
                • <fieldset id="iq2yk"></fieldset>