2011-10-02 25 views
14

Sayfamda bir barkod koymak istiyorum ve önizleme yapabilirim. Barkod oluşturucu google.zxing ve raporlama aracım iReport'dir.iReport'ta google.zxing barkod jeneratörü

Ama iReport içinde resmin Image Expression ve Expression Class nasıl yapılandırılacağı, bilmiyorum.

+0

http://groups.google.com/group/zxing/browse_thread/thread/e8fbcde52f9efd80 –

+0

@AlexK: Bunu daha önce denedim ama net değil – deepmax

+0

En azından bize ne tür bir Barkod denediğinizi söylemelisiniz. ... –

cevap

7

İki temel fikir, önce ilgili görüntüyü oluşturmak için bir miktar Java kodu yazıp, daha sonra bu kodu uygun şekilde referans gösterecek şekilde tasarlamaktır. kodlanmış çirkinlik dolu

package com.jaspersoft.alliances.mdahlman; 
import com.google.zxing.BarcodeFormat; 
import com.google.zxing.WriterException; 
import com.google.zxing.common.BitMatrix; 
import com.google.zxing.qrcode.QRCodeWriter; 
import com.google.zxing.client.j2se.MatrixToImageWriter; 
import net.sf.jasperreports.engine.JRDefaultScriptlet; 
import net.sf.jasperreports.engine.JRScriptletException; 

public class QRCodeScriptlet extends JRDefaultScriptlet { 
    public void afterDetailEval() throws JRScriptletException { 
     QRCodeWriter writer = new QRCodeWriter(); 
     BitMatrix matrix = null; 
     try { 
      matrix = writer.encode(getFieldValue("barcode_text").toString(), BarcodeFormat.QR_CODE, 256, 256); 
      this.setVariableValue("BarCodeImage", MatrixToImageWriter.toBufferedImage(matrix)); 
     } catch (WriterException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

, ancak anahtar fikirler tüm gösterilir: Belki görüntüyü oluşturmak için basit yolu böyle bir scriptlet içindedir. Sonra böyle bir rapor tanımlamak gerekir:

  1. Örnek sorgu: select 'some text' as barcode_text O benim scriptlet sert kodları alan adını barcode_text noktayı pekiştirmek için bu sadece dahil. (Bu bozuk.)
  2. Değişken: java.awt.image.BufferedImage hesap System hesaplamayla. Bu ad, senaryoda da kodlanmıştır. (Bu eşit derecede kötü.)
  3. İReport en Sınıfyoluna ekleyin:
    • derlenmiş scriptlet .jar dosya
    • core.jar (ZXing'de)
    • javase.jar (ZXing'de)
  4. İfade $V{BarCodeImage} ile rapora bir Görüntü öğesi ekleyin.

    Generated QR-Code

    ben çok daha temiz şeyler yapar ki gördük bir örnek hatırlama:

sonuç Oluşturulan JasperReport mutlu bir mutlu QR-koddur. Gerçekten güzel bir eklenti içeriyordu, böylece bu işlevi en az çabayla iReport'a kolayca yükleyebilirsiniz. Eğer bunu takip edebilirsem, bu mesajı güncelleyeceğim. Fakat o zamana kadar bu en azından tüm kritik noktaları kapsar.

+0

Ek bölüm 15'de çok iyi bir kılavuz var, senaryo oluşturma http://www.opus-college.net/devcorner/iReport-Ultimate-Guide-3.pdf –

2

Resim ifadesi, java.awt.Image'un herhangi bir alt sınıfını döndürmelidir. Bunu başarmanın en kolay yolu, Resmi oluşturmak için kendi yardımcı sınıfınızı kullanmaktır. String'dan bir barkod üreten ve bu yöntemi İttifak'tan çağıran statik bir yöntem oluşturabilirsiniz.

ZXing kullanılması durumunda, kullanmanın yöntemini bilmiyorum, ancak Barbecue kütüphanesini kullanarak ImageExpression olarak kullandığımı söyleyebilirim.

 net.sourceforge.barbecue.BarcodeImageHandler.getImage(
MyBarcodeGenerator.getFromString($F{field}) 

MyBarcodeGenerator sınıf benim durumumda bir net.sourceforge.barbecue.linear.code39.Code39Barcode

Expression Class ihmal edilir bir net.sourceforge.barbecue.Barcode döndüren yöntem getFromString(...) içerir.

--Edited:

MatrixToImageWriter.toBufferedImage(new QRCodeWriter().encode("BARCODE CONTENT", BarcodeFormat.QR_CODE,  400 /*Width*/, 400/*Height*/)); 
:

aşağıdaki kodu Görüntü İfade alanında kullanabileceğiniz bir BufferedImage içine QRCode kodlar MatrixToImageWriter

kullanmalıdır ZXing bir resim kodlamak için