如何删除zxing生成的QRCode的边距? [英] How to remove margin of QRCode generated with zxing?

查看:222
本文介绍了如何删除zxing生成的QRCode的边距?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用com.google.zxing版本3.3.2使用jasper报告生成QRCode. 生成的QRCode具有空格和边距.如何避免这些空格.

I am using com.google.zxing version 3.3.2 to generate QRCode using jasper report. The generated QRCode is having spaces and margin. How can I avoid those spaces.

我找到了添加EncodeHintType.MARGIN,-1的解决方案,但是如何在jasper报告中的图像表达式中添加它.

I found solutions to add EncodeHintType.MARGIN, -1 but how to add this in image expression in jasper report.

下面是我现在使用的图像表达式.

Below is the image expression as of now I am using.

com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage(
new com.google.zxing.qrcode.QRCodeWriter().encode(
    $F{Code},com.google.zxing.BarcodeFormat.QR_CODE, 300, 300))

推荐答案

添加EncodeHintType.MARGIN是正确的,但您需要输入0(否则将引发错误)

Adding EncodeHintType.MARGIN is correct but you need to put 0 (otherwise it will throw an error)

要添加此内容,您可以使用 QRCodeWriter

To add this you can use the second constructor of QRCodeWriter

public BitMatrix encode(String contents,BarcodeFormat format,
                        int width,int height,Map<EncodeHintType,?> hints) 
                        throws WriterException 

这意味着您需要传递一个使用键和值初始化的Map.创建和初始化地图的一种方法是使用 Guava ,它是 ImmutableMap

This means that you need to pass a Map which is initialize with the key and value. One way of creating and initializing maps is to use use Guava and it's ImmutableMap

com.google.common.collect.ImmutableMap.of(com.google.zxing.EncodeHintType.MARGIN,0)

因此,结果表达式将是

com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage(
    new com.google.zxing.qrcode.QRCodeWriter().encode(
    $F{Code},com.google.zxing.BarcodeFormat.QR_CODE, 300, 300,
    com.google.common.collect.ImmutableMap.of(com.google.zxing.EncodeHintType.MARGIN,0)))

示例(我已在边框处显示了边距0)

jrxml

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="QRCode" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ee443473-56d0-44df-b5d4-ac3fe82fd9bc">
    <queryString>
        <![CDATA[]]>
    </queryString>
    <title>
        <band height="200" splitType="Stretch">
            <image>
                <reportElement x="0" y="0" width="200" height="200" uuid="9236a226-c581-4d35-88d3-c65181090d03"/>
                <box>
                    <pen lineWidth="0.25"/>
                    <topPen lineWidth="0.25" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.25" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.25" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.25" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <imageExpression><![CDATA[com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage(
new com.google.zxing.qrcode.QRCodeWriter().encode(
    "Hello world",com.google.zxing.BarcodeFormat.QR_CODE, 300, 300,com.google.common.collect.ImmutableMap.of(com.google.zxing.EncodeHintType.MARGIN,0)))]]></imageExpression>
            </image>
        </band>
    </title>
</jasperReport>

结果

这篇关于如何删除zxing生成的QRCode的边距?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆