2015-02-16 2 views
0

Я пытаюсь создать PDF с QR-кодами на них с помощью iTextSharp. Проблема, с которой я сталкиваюсь, заключается в том, что размер QR-кода изменяется в зависимости от содержимого, которое я передаю ему. Скажем, у меня есть следующий код:iTextSharp и QR Code sizing

var val = "SER K250102 PNO 1011555-001 WGT 296.00 UNT LB"; 
//val = "SER K237706 PNO 1017401-001EJ08 WGT 365.00 UNT LB"; 

var barcode = new BarcodeQRCode(val, 100, 100, null); 

var content = stamper.GetOverContent(1); 

var image = barcode.GetImage();image.ScaleToFitHeight = false; 
image.SetAbsolutePosition(100f, 100f); 
image.SetDpi(600, 600); 
content.AddImage(image); 

Если я прохожу в первой переменной «ВАЛ» в BarcodeQRCode(), код QR один размер; однако, если я перехожу во вторую переменную «val» (закомментировал, она содержит только 4 дополнительных символа), размер кода qr значительно меньше. Обратите внимание, что я прохожу по фиксированной высоте и ширине, и что я устанавливаю абсолютную позицию.

Когда я говорю, что код qr меньше, я имею в виду, что общая высота/ширина кажутся одинаковыми, но маржа вокруг самого кода намного толще, поэтому сам код меньше. Вид похож на HTML, где ширина элемента CSS может быть 100px, составленная из 90px-контента + 10px margin. Здесь «контент» (код qr) уменьшается, а маржа (окружающее пустое пространство) увеличивается.

Как ни странно, если я добавлю больше текста в переменную «val», размер кода qr увеличивается!

Даже незнакомец, когда я отладки и наблюдать переменную изображения для каждого из этих сценариев, свойства одинаковы: та же ч/б, масштаб и т.д.

Кто-нибудь еще сталкивался с этим размер колеблющегося? Решил? Я пропустил какую-то настройку или не понял что-то о том, как должны выглядеть коды qr?

Благодаря Том

ответ

1

У меня была такая же проблема с размером, так что я проверил исходный код, используя различные ширины и высоты.

Так что я узнал, что это специальные размеры, такие же, как и с большим дополнением. Так я использовал 318 на обоих размерах для лучшего разрешения.

Я использую itextpdf-5.5.6.jar (но я думаю, что это относительно одно и то же). Я нашел свое решение в QRCodeWriter.class, особенно в методе renderResult().

Например, первое различие между 105/106, рядом между 158/159 и так далее. Левая панель - таким образом 30/8, 34/12 и так далее. Трюк - это «multiple» -variable и inputWidth, основанный на версии qrCode.

версия будет рассчитываться по методу initQRCode() из Encoder.class

"numInputBytes" - 121 "ErrorCorrectionLevel" - М "Режим" - Mode.BYTE

Так что в моем случае это версия 7 и входная ширина равна (17 + 4 * версия = 45).

Согласно вашему сообщению, я написал несколько дополнительных сведений.

Я использую Jaspersoft® Studio для создания своих счетов-фактур. В классе код выглядит следующим образом:>java.awt.Image qrCode = new BarcodeQRCode(qrCodeDataString, 318, 318, hints).createAwtImage(Color.BLUE, Color.WHITE);. В переменной hints указаны опции для ERROR_CORRECTION и CHARACTER_SET, а на счете есть квадрат изображения с 74px * 74px. Итак, все qrcodes выглядят одинаково, одинаково, имеет ли строка 60 или 160 символов.

Надеюсь, это поможет.

+0

спасибо! Но я не совсем понимаю. Удалось ли вам сменить код на исходный код или на свой собственный код, который его вызывает? Я хочу, чтобы размеры кода QR были согласованными, но они подпрыгивают повсюду. – ironfist