QR-код и BarQRCode itextpdf

Мне нужно создать 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 );

Спасибо

Вам нужно создать PDF-файл со штрих-кодом? Или вам нужно создать изображение (PNG или BMP или ...)?

Amedee Van Gasse 14.12.2018 16:30

Мне нужно создать изображение awt с QRCODE

Grancein 14.12.2018 17:15

Если вам не нужны функции PDF, вам не следует использовать библиотеку PDF. Вместо этого используйте библиотеку штрих-кодов, например Zxing. iText использует части кода Zxing.

Amedee Van Gasse 14.12.2018 17:31

Я должен использовать эту библиотеку. Прости!

Grancein 14.12.2018 17:43

Почему вы должны использовать библиотеку, которая имеет только частичную реализацию существующей библиотеки штрих-кода и имеет много накладных расходов, если вы никогда не собираетесь использовать ее основные функции? Я сотрудник iText Software и говорю вам: если в вашем программном обеспечении нет каких-либо функций PDF, пожалуйста, не используйте iText. Мои коллеги по продажам могут не согласиться, но я хочу дать вам хороший совет.

Amedee Van Gasse 14.12.2018 17:48

Ты прав. Я знаю Zxing и знаю, что он идеален, но в проекте, над которым я работаю, еще используется библиотека Itext, поэтому предпочтительнее продолжать использовать эту библиотеку, а не использовать две библиотеки различий. В библиотеке Itext есть возможность делать то, что я хочу, так зачем мне менять и не пытаться решить проблему с тем, что у меня есть?

Grancein 14.12.2018 17:52

Кстати, а какая версия iText?

Amedee Van Gasse 14.12.2018 18:49

Версия - 2.7.1.

Grancein 17.12.2018 09:38

Версия 2.7.1 iText не существует. Вы, вероятно, имели в виду 2.1.7, которой уже десять лет, и она больше не поддерживается iText Software, моим работодателем. Я рекомендую вам перейти на более новую версию, либо 5.5.13, которая требует минимальных изменений кода (нужно изменить только импорт с com.lowagie на com.itextpdf), либо до 7.1.4, что может потребовать дополнительных изменений кода, потому что это не наоборот. совместимый.

Amedee Van Gasse 17.12.2018 09:56

Извините, я прочитал не ту библиотеку. Я использую itextpdf 5.5.0 e Я использую также lowagie (потому что я использую отчет jasper). Версия яшмы - 6.2.1. Но lowagie не поддерживает qrcode

Grancein 17.12.2018 16:07

Я понял как решить проблему. Версия 4 - это версия с 33 модулями (или шириной модулей). Поэтому, когда штрих-код определен, второй и третий параметры задают количество модулей и, следовательно, версию и ширину модуля. В то время как EncodeHintType содержит информацию о символе и исправлении ошибок.

Grancein 17.12.2018 17:44

Разместите свой последний комментарий в качестве ответа, и я буду поддерживать

Amedee Van Gasse 17.12.2018 18:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
12
3 515
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я понял как решить проблему. Версия 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 );

Другие вопросы по теме