<pre id="yyy6u"></pre>
          <kbd id="yyy6u"><pre id="yyy6u"></pre></kbd>
          • <samp id="yyy6u"></samp>
            • <tr id="yyy6u"></tr>
              莫非
              游離中?。。?/div>

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

              昨天下了jasperreport的最新版本3.7.3看了下。弄了半天還是沒能習慣他的報表制作方式??戳讼滤?span id="wmqeeuq" class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B4%F2%D3%A1">打印是利用applet的來打印的。而且還需要客戶端安裝 十幾MB的 jre 關于這個好壞,每個人都有自己的看法。今天我這里要說的是利用jatoolsprinter控件來打印jasperreport的報表??丶笮≈挥?00k左右         關于jasperreport的報表制作這里不做說明,我是在環境中跑了下jasperreport的demo運行界面如下
              2010-06-24_111901.png (24.77 KB)
              2010-6-24 12:57


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

              下面我們對demo中的html.jsp進行修改 用jatoolsprinter來打印Jasperreport 的報表
              藍色部分為控件需要的內容
              <%@ 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 :    '杰創軟件擁有版權
              [url=]www.jatools.com'[/url]              // 版權聲明,必須

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

              <br>
              <input type="button" value="打印預覽...">
              <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的打印是根據<div id='page'+數字>來區分打印的頁的。而Jasperreport生成的html頁面中又沒有包含這些信息,所以我們就需要修改下Jasperreport的源碼
              由生成的報表頁面的源碼中我們可以看到Jasperreport是利用<a name="JR_PAGE_ANCHOR_?_?"></a>來區分頁數的我們可以找到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的結束標志
              writer.write("</div>\n");
              以上代碼藍色部分為后添加的內容
              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放在項目中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

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

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

              點擊安裝

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

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



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

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

              評論

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

              en 受教了~~~~~~~  回復  更多評論   

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

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

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

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

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

              @凌晨風
              分頁沒有問題的,不會掉字。。。
                回復  更多評論   

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

              @rox
              今天再研究下套打的實現。。。  回復  更多評論   

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

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

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

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

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

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

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

              @來如風
              看了一下 chrome 和Firefox 都支持的
                回復  更多評論   

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

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

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

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

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

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

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

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

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

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

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

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

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

              郵箱:leiflvll@sina.com  回復  更多評論   

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

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

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

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

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

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

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

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

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

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

              新用戶注冊  刷新評論列表  

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


              網站導航:
              博客園   IT新聞   Chat2DB   C++博客   博問   管理
              相關文章:
              • 解決Jasperreport的web打印另一種方法
              • 簡表(JOR),開源報表工具
               

              Powered by:
              BlogJava
              Copyright © 楊慕

              <2015年1月>
              日一二三四五六
              28293031123
              45678910
              11121314151617
              18192021222324
              25262728293031
              1234567

              導航

              • BlogJava
              • 首頁
              • 新隨筆
              • 聯系
              • 聚合
              • 管理

              統計

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

              常用鏈接

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

              留言簿(3)

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

              隨筆分類(3)

              • DATA (rss)
              • Flex (rss)
              • J2EE(1) (rss)
              • 報表(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打印另一種方法
              • 同樣搞軟件開發的,最近在學習使用JasperReports,麻煩樓主把Demo發一下,
                本人郵箱: hslh22@163.com
              • --灰色
              • 3.?re: 解決Jasperreport的web 套打
              • 貌似最近又出了一個免費版的,還是不錯的~~贊一個
              • --gdTo
              • 4.?re: 解決Jasperreport的web打印另一種方法
              • 貌似很不錯的樣子,謝謝分享
              • --gdTo
              • 5.?re: 解決Jasperreport的web打印另一種方法[未登錄]
              • 可以把源碼發給我看看嗎 ?謝謝
                305220554@qq.com
              • --CC

              閱讀排行榜

              • 1.?解決Jasperreport的web打印另一種方法(16584)
              • 2.?解決Jasperreport的web 套打(15262)
              • 3.?簡表(JOR),開源報表工具(7367)

              評論排行榜

              • 1.?解決Jasperreport的web打印另一種方法(21)
              • 2.?簡表(JOR),開源報表工具(8)
              • 3.?解決Jasperreport的web 套打(5)
              狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频
              主站蜘蛛池模板: 清河县| 阿拉尔市| 靖安县| 瓮安县| 龙海市| 商水县| 神木县| 兴安盟| 余庆县| 金秀| 玉田县| 通许县| 德江县| 乃东县| 凤山县| 江永县| 南江县| 蓬安县| 田东县| 崇阳县| 福鼎市| 扬州市| 阿拉善左旗| 资兴市| 江阴市| 凤翔县| 穆棱市| 荃湾区| 云阳县| 静海县| 垫江县| 五家渠市| 沐川县| 澜沧| 兰西县| 和平县| 武隆县| 芒康县| 墨竹工卡县| 清徐县| 瓦房店市|
              • <ul id="mocoq"><pre id="mocoq"></pre></ul>
                • <samp id="mocoq"></samp><kbd id="mocoq"></kbd>
                • <kbd id="mocoq"><center id="mocoq"></center></kbd>