我需要按照一些技术规范创建一个qrcode,例如:qrcode符号版本(),模块(),模块宽度(),ECC级别()和字符集()。
我必须使用itextpdf库,获得的内容必须成为awt.Image。

我尝试同时使用QRCode和BarcodeQRCode。使用QRCode可以设置符号版本,模块,模块宽度和ECC级别。然后使用BarcodeQRCode设置字符集,我可以获得awt.Image。

问题是我无法将QRCode传递给BarcodeQRCode。
您知道如何解决此问题并使用该库获取完整的二维码/图像吗?

这是我的代码:

       StringBuffer sb = new StringBuffer ();
    sb.append ( QRCODE_IDENTIFICATIVO );
    // other lines with the content of qrcode

    QRCode qrCode = new QRCode ();
    qrCode.setVersion ( versione );
    qrCode.at ( modulesWidth, modulesHeight );
    qrCode.setMatrixWidth ( modulesWidth );
    qrCode.setECLevel ( ErrorCorrectionLevel.M );

    Map<EncodeHintType, Object> qrParam = new HashMap<EncodeHintType, Object> ();
    qrParam.put ( EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M );
    qrParam.put ( EncodeHintType.CHARACTER_SET, "UTF-8" );

    BarcodeQRCode qrcode = new BarcodeQRCode ( sb.toString (), (int) mmToPt ( 30f ), (int) mmToPt ( 30f ), qrParam );
    return qrcode.createAwtImage ( Color.BLACK, Color.WHITE );


谢谢

最佳答案

我了解如何解决问题。
版本4是具有33个模块(或模块宽度= 33)的版本。因此,在初始化barQRcode时,第二个参数和第三个参数设置模块的数量,从而设置版本和模块宽度。而EncodeHintType具有有关字符和错误纠正的信息。这样,无需使用QRcode就可以使用所有信息。它是:

 StringBuffer sb = new StringBuffer ();
sb.append ( QRCODE_IDENTIFICATIVO );
// other lines with the content of qrcode

Map<EncodeHintType, Object> qrParam = new HashMap<EncodeHintType, Object> ();
qrParam.put ( EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M );
qrParam.put ( EncodeHintType.CHARACTER_SET, "UTF-8" );

BarcodeQRCode qrcode = new BarcodeQRCode ( sb.toString (), 33, 33, qrParam );
return qrcode.createAwtImage ( Color.BLACK, Color.WHITE );

08-03 21:43