Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The two key ideas are first to write a bit of Java code to create the relevant image and then to design the report to reference this code appropriately. Perhaps the simplest way to generate the image is in a scriptlet like this:</p> <pre><code>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(); } } } </code></pre> <p>That's full of hard-coded ugliness, but the key ideas are all shown. Then you need to define the report like this:</p> <ol> <li>Sample query: <code>select 'some text' as barcode_text</code> I included this only to reinforce the point that my scriptlet hard-codes the field name <code>barcode_text</code>. (This is bad.)</li> <li>Variable: <code>BarCodeImage</code> of type <code>java.awt.image.BufferedImage</code> with calculation <code>System</code>. This name is hard-coded in the scriptlet too. (This is equally bad.)</li> <li>Add to iReport's classpath: <ul> <li>The compiled scriptlet .jar file</li> <li>core.jar (from ZXing)</li> <li>javase.jar (from ZXing)</li> </ul></li> <li>Add an Image element to the report with Expression <code>$V{BarCodeImage}</code>.</li> </ol> <p>The result is a happy happy QR-code in your generated JasperReport:</p> <p><img src="https://i.stack.imgur.com/zDHcr.png" alt="Generated QR-Code"></p> <p>I recall a sample that I have seen which does things much more cleanly. It actually included a nice plug-in so you could easily install this functionality into iReport with minimal effort. If I can track that down, then I'll update this post. But until then this at least covers all of the critical points.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload