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

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

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

    無聊人士

    搬家==》www.soapui.cn

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      32 隨筆 :: 0 文章 :: 60 評論 :: 0 Trackbacks
    條碼顯示,在birt中最常見的有兩種方法:1、使用條碼字體(對pdf無效);2、用barcode的開源包,生成barcode,然后在報表里用動態(tài)地址去取圖片。

    今晚看birt文檔(第 23 章 使用 Java 編寫事件處理程序),例子中用java實現(xiàn)了一個LabelEventAdapter的適配器,對標簽元素進行事件控制。腦子里靈光一現(xiàn),似乎條碼有著落了。

    我的測試例子很簡單,繼承ImageEventAdapter類,重載onCreate方法,以進行條形碼處理

    ?1?package?cn.ynzc.common.birt.test;
    ?2?
    ?3?import?java.io.File;
    ?4?import?java.io.FileOutputStream;
    ?5?
    ?6?import?jbarcodebean.Code128;
    ?7?import?jbarcodebean.JBarcodeBean;
    ?8?
    ?9?import?org.apache.commons.codec.digest.DigestUtils;
    10?import?org.eclipse.birt.report.engine.api.script.IReportContext;
    11?import?org.eclipse.birt.report.engine.api.script.eventadapter.ImageEventAdapter;
    12?import?org.eclipse.birt.report.engine.api.script.instance.IImageInstance;
    13?
    14?public?class?MyLabelClass?extends?ImageEventAdapter?{
    15?
    16???public?void?onCreate(IImageInstance?image,?IReportContext?reportContext)?{
    17?????try?{
    18???????//實際應(yīng)用中,可以使用image.getRowData().getColumnValue("columnname")獲得字段值
    19???????String?code?=?"ABCDEF123-2222";
    20???????//似乎windows文件名中不允許使用“-”等符號,干脆將code進行md5散列處理
    21???????File?file?=?new?File(System.getProperty("java.io.tmpdir"),?DigestUtils.md5Hex(code));
    22???????//避免每次都進行條碼文件生成
    23???????if?(!file.exists())?{
    24?????????JBarcodeBean?bb?=?new?JBarcodeBean();
    25?????????bb.setCodeType(new?Code128());
    26?????????bb.setShowText(true);
    27?????????bb.setBarcodeHeight(45);?//條碼高度
    28?????????bb.setCode(code);
    29?????????bb.gifEncode(new?FileOutputStream(file));
    30???????}
    31???????image.setFile(file.getAbsolutePath());
    32?????}
    33?????catch?(Exception?e)?{
    34???????e.printStackTrace();
    35?????}
    36???}
    37?
    38?}
    39?

    測試用的birt報表文件簡單得要死,就往上面扔了個image元素,設(shè)置其Event Handler Class為剛才寫好的java類,最終得到的rptdesign文件內(nèi)容如下:
    ?1?<?xml?version="1.0"?encoding="UTF-8"?>
    ?2?<!--?Written?by?Eclipse?BIRT?2.0?-->
    ?3?<report?xmlns="http://www.eclipse.org/birt/2005/design"?version="3.2.6"?id="1">
    ?4?????<property?name="createdBy">Eclipse?BIRT?Designer?Version?2.1.2.v20070205-1728?Build?&lt;20070205-1728></property>
    ?5?????<property?name="units">in</property>
    ?6?????<page-setup>
    ?7?????????<simple-master-page?name="Simple?MasterPage"?id="2"/>
    ?8?????</page-setup>
    ?9?????<body>
    10?????????<image?id="4">
    11?????????????<property?name="eventHandlerClass">cn.ynzc.common.birt.test.MyLabelClass</property>
    12?????????</image>
    13?????</body>
    14?</report>

    運行測試,條形碼出來了
    birt.jpg

    遺留問題:
    這次是調(diào)用org.eclipse.birt.report.engine.api.script.instance.IImageInstance.setFile()來解決問題,從javadoc可以看到,IImageInstance有很多方法可以調(diào)用,其它方法分別有什么作用?比如我嘗試了半天的setData(byte[])方法,一開始以為是用這個方法直接把圖形數(shù)據(jù)set進去就ok,結(jié)果未成功。


    posted on 2007-04-07 03:37 mmwy 閱讀(4231) 評論(4)  編輯  收藏 所屬分類: 報表(Birt、crystal。。)

    評論

    # re: 在birt2.1.2中顯示條形碼 2007-04-08 13:25 mmwy
    寫在birt的腳本里面也行

    <image id="4">
    <method name="onCreate"><![CDATA[
    importPackage(java.io);
    importPackage(Packages.jbarcodebean);
    importPackage(Packages.org.apache.commons.codec.digest);

    code="ABCDEF-01234567-ZYX";
    f = new java.io.File(java.lang.System.getProperty("java.io.tmpdir"), "barcode_" + DigestUtils.md5Hex(code) + ".gif");
    //條碼緩存1小時
    if (!f.exists() || java.lang.System.currentTimeMillis() - f.lastModified() > 1000 * 60 * 60) {
    bb = new JBarcodeBean();
    bb.setCodeType(new Code128());
    bb.setShowText(true);
    bb.setBarcodeHeight(45);
    bb.setCode(code);
    bb.gifEncode(new FileOutputStream(f));
    }
    this.file=f.getAbsolutePath();
    ]]>
    </method>
    </image>

      回復  更多評論
      

    # re: 在birt2.1.2中顯示條形碼 2007-07-21 01:50 Sutra
    寫在birt的腳本里面也行:

    測試過了,這樣寫絕對通不過,真不知道為什么,是JAR沒導入嗎?  回復  更多評論
      

    # re: 在birt2.1.2中顯示條形碼 2007-09-20 16:23 TT
    什么啊,根本不好用, bb.gifEncode(new FileOutputStream(file));有問題。  回復  更多評論
      

    # re: 在birt2.1.2中顯示條形碼 2008-07-05 12:43 zhiwenyue
    能不能將你的birt文檔上傳一份阿,我想看看,因為現(xiàn)在要做一個關(guān)于birt響應(yīng)客戶要求的東西。謝謝~
    或者發(fā)到我郵箱里abcdefg_zhiwenyue@yahoo.com.cn  回復  更多評論
      

    主站蜘蛛池模板: 成人一区二区免费视频| 在线91精品亚洲网站精品成人| 中文字幕a∨在线乱码免费看| 又爽又黄无遮挡高清免费视频| 久久久久久亚洲精品无码| 最近的免费中文字幕视频 | 色噜噜AV亚洲色一区二区| 国产免费一区二区三区免费视频| 亚洲成av人片天堂网老年人| 九九视频高清视频免费观看| 国产成人精品久久亚洲高清不卡 | 国产高潮流白浆喷水免费A片 | 亚洲爽爽一区二区三区| 日韩免费视频一区二区| 亚洲色大成网站www永久| 中国xxxxx高清免费看视频| 亚洲www在线观看| 国产又黄又爽又刺激的免费网址 | 国产亚洲一区区二区在线| 99在线免费观看| 亚洲网红精品大秀在线观看| 国产四虎免费精品视频| www亚洲精品久久久乳| 亚洲精品色午夜无码专区日韩| 欧洲精品99毛片免费高清观看| 亚洲国产精品成人久久久| 国产成人在线免费观看| 两个人看www免费视频| 亚洲午夜在线一区| 国产又黄又爽又猛的免费视频播放| 在线观看免费无码视频| 亚洲免费闲人蜜桃| 亚洲色婷婷综合开心网| 亚洲免费视频网址| 免费一级做a爰片久久毛片潮| 亚洲午夜久久久精品影院| 国产资源免费观看| 88av免费观看| 五月婷婷免费视频| 色婷五月综激情亚洲综合 | 亚洲综合小说久久另类区|