Мне нужно создать qrcode в соответствии с некоторыми техническими спецификациями, такими как: версия символа qrcode (), модули (), ширина модулей (), уровень ECC () и набор символов (). Я должен использовать библиотеку itextpdf, и то, что я получаю, должно стать и awt.Image.
Я пробовал использовать как QR код, так и Штрих-код. С помощью QRCode я устанавливаю версию символа, модули, ширину модулей и уровень ECC. Затем с помощью BarcodeQRCode я устанавливаю набор символов и могу получить awt.Image.
Проблема в том, что я не могу передать QRCode в BarcodeQRCode. Вы знаете, как решить эту проблему и получить полный qrcode / изображение с помощью этой библиотеки?
Это мой код:
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 );
Спасибо
Мне нужно создать изображение awt с QRCODE
Если вам не нужны функции PDF, вам не следует использовать библиотеку PDF. Вместо этого используйте библиотеку штрих-кодов, например Zxing. iText использует части кода Zxing.
Я должен использовать эту библиотеку. Прости!
Почему вы должны использовать библиотеку, которая имеет только частичную реализацию существующей библиотеки штрих-кода и имеет много накладных расходов, если вы никогда не собираетесь использовать ее основные функции? Я сотрудник iText Software и говорю вам: если в вашем программном обеспечении нет каких-либо функций PDF, пожалуйста, не используйте iText. Мои коллеги по продажам могут не согласиться, но я хочу дать вам хороший совет.
Ты прав. Я знаю Zxing и знаю, что он идеален, но в проекте, над которым я работаю, еще используется библиотека Itext, поэтому предпочтительнее продолжать использовать эту библиотеку, а не использовать две библиотеки различий. В библиотеке Itext есть возможность делать то, что я хочу, так зачем мне менять и не пытаться решить проблему с тем, что у меня есть?
Кстати, а какая версия iText?
Версия - 2.7.1.
Версия 2.7.1 iText не существует. Вы, вероятно, имели в виду 2.1.7, которой уже десять лет, и она больше не поддерживается iText Software, моим работодателем. Я рекомендую вам перейти на более новую версию, либо 5.5.13, которая требует минимальных изменений кода (нужно изменить только импорт с com.lowagie на com.itextpdf), либо до 7.1.4, что может потребовать дополнительных изменений кода, потому что это не наоборот. совместимый.
Извините, я прочитал не ту библиотеку. Я использую itextpdf 5.5.0 e Я использую также lowagie (потому что я использую отчет jasper). Версия яшмы - 6.2.1. Но lowagie не поддерживает qrcode
Я понял как решить проблему. Версия 4 - это версия с 33 модулями (или шириной модулей). Поэтому, когда штрих-код определен, второй и третий параметры задают количество модулей и, следовательно, версию и ширину модуля. В то время как EncodeHintType содержит информацию о символе и исправлении ошибок.
Разместите свой последний комментарий в качестве ответа, и я буду поддерживать




Я понял как решить проблему. Версия 4 - это версия с 33 модулями (или с шириной модулей = 33). Поэтому, когда штрих-код инициализируется, второй и третий параметры задают количество модулей, а значит, также версию и ширину модуля. В то время как EncodeHintType содержит информацию о символе и исправлении ошибок. Таким образом, вся информация используется без использования QR-кода. Это:
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 );
Вам нужно создать PDF-файл со штрих-кодом? Или вам нужно создать изображение (PNG или BMP или ...)?