【问题标题】:Using barcode or qcode with Jasper report在 Jasper 报告中使用条形码或 qcode
【发布时间】:2015-10-13 15:01:16
【问题描述】:

我有一个使用 JSF 和 PrimeFaces 开发的项目。我需要使用 Jasper 在 PDF 上显示条形码。我怎样才能做到这一点?

【问题讨论】:

  • 你的努力是什么?
  • 征求意见 SO ; )

标签: jasper-reports barcode


【解决方案1】:

我建议您使用barcode4j 生成条形码(注意IReport 已经可以处理这些,但我将向您展示java 方式)。

制作一个返回条形码(图像)es的方法。

public static synchronized Image getGS1_128Production(String codeProduzione) {

    if (codeProduzione==null){
        return null;
    }
    GS1_128 g = new GS1_128(codeProduzione);
    //Start personalizzing barcode
    int dpi = 150;
    if (code.length()>40){
        dpi = 100;
    }
    if (code.length()>57){
        dpi = 75;
    }

    c.doQuietZone(true);
    c.setQuietZone(5);
    c.setFontSize(2d);

    boolean antiAlias = false;
    int orientation = 0;

    BitmapCanvasProvider canvas = new BitmapCanvasProvider(dpi, BufferedImage.TYPE_BYTE_BINARY, antiAlias, orientation);
    c.generateBarcode(canvas, code);

    return canvas.getBufferedImage();
}

然后在你的 jrxml 中

<image scaleImage="Clip" hAlign="Center" vAlign="Middle" isUsingCache="false" onErrorType="Blank">
            <reportElement positionType="Float" x="65" y="66" width="405" height="82">
                <printWhenExpression><![CDATA[new Boolean($F{GS1_128}!=null)]]></printWhenExpression>
            </reportElement>
            <imageExpression class="java.awt.Image"><![CDATA[jdd.trace.barcode.BarCode4J.getGS1_128Production($F{GS1_128})]]></imageExpression>
</image>

注意:在我的示例中,静态方法 getGS1_128Production 在我的班级内 BarCode4J 包中的 jdd.trace.barcode

此外,您可以自然地使用非静态方法,例如将条形码图像作为参数传递或将您的对象作为参数传递到 jrxml。

这些图像是可打印和可读的(用条形码阅读器测试),但如果你喜欢高分辨率图像,我建议你使用 SVG 而不是 Image

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多