2011-10-02 14 views
14

में google.zxing बारकोड जनरेटर मैं अपने पृष्ठ में एक बारकोड डालना चाहता हूं और इसका पूर्वावलोकन कर सकता हूं। बारकोड जनरेटर google.zxing और मेरा रिपोर्टिंग टूल iReport है।iReport

लेकिन मुझे नहीं पता है, iReport में Image Expression और एक छवि के Expression Class को कॉन्फ़िगर कैसे करें।

+0

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

+0

@AlexK: मैंने पहले कोशिश की, लेकिन यह स्पष्ट नहीं है – deepmax

+0

आपको कम से कम हमें बताएं कि किस प्रकार का बारकोड आप कोशिश कर रहे हैं उत्पन्न करें ... –

उत्तर

7

प्रासंगिक छवि बनाने के लिए दो महत्वपूर्ण विचार जावा कोड लिखने के लिए सबसे पहले हैं और फिर इस कोड को उचित रूप से संदर्भित करने के लिए रिपोर्ट को डिज़ाइन करने के लिए। शायद सबसे आसान तरीका छवि उत्पन्न करने के लिए इस तरह की एक स्क्रिप्टलेट में है:

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(); 
     } 
    } 
} 

कि हार्ड-कोडेड कुरूपता से भरा हुआ है, लेकिन प्रमुख विचारों सभी दिखाए जाते हैं। तो फिर तुम इस तरह की रिपोर्ट निर्धारित करने होंगे:

  1. नमूना क्वेरी: select 'some text' as barcode_text मैं मुद्दा यह है कि मेरी स्क्रिप्टलेट कड़ी मेहनत से कोड फ़ील्ड नाम barcode_text सुदृढ़ करने के लिए यह केवल शामिल थे। (यह खराब है।)
  2. परिवर्तनीय: BarCodeImage प्रकार java.awt.image.BufferedImage की गणना System के साथ। यह नाम स्क्रिप्टलेट में भी कड़ी-कोडित है। (यह भी उतना ही बुरा है।)
  3. iReport के classpath में जोड़ें:
    • संकलित स्क्रिप्टलेट .jar फ़ाइल
    • core.jar (ZXing से)
    • javase.jar (ZXing से)
  4. अभिव्यक्ति $V{BarCodeImage} के साथ रिपोर्ट में एक छवि तत्व जोड़ें।

    Generated QR-Code

    मैं एक नमूना है कि मैंने देखा है जो चीजों को और अधिक सफाई से करता है याद करते हैं:

परिणाम आपके उत्पन्न JasperReport में एक खुश खुश क्यूआर कोड है। इसमें वास्तव में एक अच्छा प्लग-इन शामिल था ताकि आप कम से कम प्रयास के साथ iReport में इस कार्यक्षमता को आसानी से इंस्टॉल कर सकें। अगर मैं इसे ट्रैक कर सकता हूं, तो मैं इस पोस्ट को अपडेट कर दूंगा। लेकिन तब तक यह कम से कम सभी महत्वपूर्ण बिंदुओं को शामिल करता है।

+0

अतिरिक्त अध्याय 15 में बहुत अच्छी मार्गदर्शिका है, स्क्रिप्टलेट कैसे बनाएं http://www.opus-college.net/devcorner/iReport-Ultimate-Guide-3.pdf –

2

छवि अभिव्यक्ति को java.awt.Image के किसी उप-वर्ग को वापस करना चाहिए। इसे प्राप्त करने का सबसे आसान तरीका छवि उत्पन्न करने के लिए अपने स्वयं के सहायक वर्ग का उपयोग करना है। आप एक स्थिर विधि बना सकते हैं जो String से बारकोड उत्पन्न करता है और उस विधि को आईरपोर्ट से कॉल करता है।

जेएक्सिंग के मामले में मुझे उपयोग करने की विधि नहीं पता है, लेकिन मैं बता सकता हूं कि मैं बारबेक्यू लाइब्रेरी का उपयोग करके ImageExpression के रूप में क्या उपयोग करता हूं।

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

MyBarcodeGenerator वर्ग विधि getFromString(...) कि मेरे मामले में एक net.sourceforge.barbecue.Barcode रिटर्न एक net.sourceforge.barbecue.linear.code39.Code39Barcode

Expression Class को नजरअंदाज कर दिया जाता है।

--Edited:

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

ZXing आप MatrixToImageWriter

का उपयोग करना चाहिए निम्नलिखित कोड एक BufferedImage जो आप छवि अभिव्यक्ति क्षेत्र में उपयोग कर सकते हैं में एक QRCode सांकेतिक शब्दों में बदलना होगा में एक छवि सांकेतिक शब्दों में बदलना करने के लिए

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^