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

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

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

    無聊人士

    搬家==》www.soapui.cn

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

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

    我的測試例子很簡單,繼承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???????//實際應用中,可以使用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元素,設置其Event Handler Class為剛才寫好的java類,最終得到的rptdesign文件內容如下:
    ?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

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


    posted on 2007-04-07 03:37 mmwy 閱讀(4243) 評論(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文檔上傳一份阿,我想看看,因為現在要做一個關于birt響應客戶要求的東西。謝謝~
    或者發到我郵箱里abcdefg_zhiwenyue@yahoo.com.cn  回復  更多評論
      

    主站蜘蛛池模板: 日韩一级在线播放免费观看| 夜夜爽妓女8888视频免费观看| 久久精品成人免费观看| 亚洲人成人无码网www国产| 污网站免费在线观看| 免费人成视网站在线观看不卡| 国产91成人精品亚洲精品| 免费a在线观看播放| 日韩大片免费观看视频播放| 亚洲欧洲中文日韩久久AV乱码| 成人免费网站视频www| 亚洲色精品88色婷婷七月丁香 | 免费观看成人毛片a片2008| 亚洲香蕉久久一区二区| 免费黄色毛片视频| 美女黄频视频大全免费的| 久久精品夜色噜噜亚洲A∨| 十八禁视频在线观看免费无码无遮挡骂过 | 亚洲男人的天堂在线| 日本成年免费网站| 亚洲日本天堂在线| 亚洲国产成人久久综合碰| a毛片视频免费观看影院| 久久丫精品国产亚洲av| 国产成人免费高清激情视频| 久久人午夜亚洲精品无码区| 亚洲精品无码日韩国产不卡?V| 在线观看黄片免费入口不卡| 18gay台湾男同亚洲男同| 免费的一级片网站| a级毛片免费全部播放无码| 亚洲av无码一区二区三区观看| 色视频色露露永久免费观看| 精品国产污污免费网站入口在线 | 亚洲av成人一区二区三区观看在线| 国产一级淫片a免费播放口之| 国产精品内射视频免费| 91亚洲精品麻豆| 久久精品国产亚洲Aⅴ香蕉 | www.亚洲一区| 99精品视频免费观看|