QR - код

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
vic7tar
Активист
Сообщения: 153
Зарегистрирован: 09 Февраль 2017, 20:12

QR - код

Сообщение vic7tar » 28 Октябрь 2018, 14:15

Ни в Хроме, ни в Лисе не хочет, а в Торе все нормально, хотя везде стоят одни и те же дополнения, блокировщики...
C10, Win10x64

artgkx
Бывалый
Сообщения: 52
Зарегистрирован: 25 Декабрь 2010, 12:23

QR - код

Сообщение artgkx » 28 Октябрь 2018, 17:39

Qr код нужен для печати на квитанциях. При отправке по Email с внедренным шрифтом получается ерунда. Zint формирует картинку малого размера. Пробовал Zint.exe для проверки. Проверку на сайте Сбера http://sbqr.ru/validator/index.html проходит , но если 1251, отображается все правильно, а если перекодировать в utf-8, кириллица не читаемый текст. В программе конечно нужно с помощью Zint.dll. Попробовал - ошибка ZINT_ERROR_INVALID_OPTION. Где-то в Инете попадалось что у них на сайте не так описана структура. Вообще с помощью Zint можно генерировать много разных кодов и она бесплатна. Cstr Юрия Философова прилагаю.
Вложения
Cstr.zip
(2.15 КБ) 9 скачиваний

Аватара пользователя
vic7tar
Активист
Сообщения: 153
Зарегистрирован: 09 Февраль 2017, 20:12

QR - код

Сообщение vic7tar » 29 Октябрь 2018, 13:32

artgkx писал(а):
28 Октябрь 2018, 17:39
Попробовал - ошибка ZINT_ERROR_INVALID_OPTION. Где-то в Инете попадалось что у них на сайте не так описана структура.
А когда появляется это сообщение и какая структура имеется ввиду?
C10, Win10x64

artgkx
Бывалый
Сообщения: 52
Зарегистрирован: 25 Декабрь 2010, 12:23

QR - код

Сообщение artgkx » 29 Октябрь 2018, 14:20

Структура взятая из zint.h

Код: Выделить всё

Zint_symbol          GROUP,PRE(znt)                      
symbology            LONG                                
height               LONG                                 
whitespase_width     LONG                                 
border_width         LONG                                 
output_options       LONG                                
fgcolour             STRING(10)            
bgcolour             STRING(10)            
outfile              CSTRING(256)                         
scale                SREAL(1.0)                           
option_1             LONG                                  
option_2             LONG                                 
option_3             LONG                                 
show_hrt             LONG(1)                              
input_mode           LONG                                 
eci                  LONG                                  
text                 STRING(128)                          
rows                 LONG                                 
width                LONG                                 
primary              STRING(128)                           
encoded_data         BYTE,DIM(200,143)                    
row_height           LONG,DIM(200)                         
errtxt               STRING(100)                           
bitmap               &STRING                               
bitmap_width         LONG                                 
bitmap_height        LONG                                 
bitmap_byte_length   long                           
dot_size             SREAL                           
rendered             &STRING                              
debug                LONG                                 
                     END          
Продвинулся немного дальше. Теперь 9_ Error 658: Insufficient memory for pixel buffer.
Если кто-то уже использует Zint.dll, поделитесь кодом. А то при моем уровне долго буду биться.

Ал
Ветеран
Сообщения: 775
Зарегистрирован: 08 Июль 2005, 5:48
Откуда: Россия

QR - код

Сообщение Ал » 29 Октябрь 2018, 16:23

а почему именно zint?

kreator
Ветеран
Сообщения: 3106
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

QR - код

Сообщение kreator » 29 Октябрь 2018, 17:20

Сделал у себя:

Код: Выделить всё

LOC:TempString = 'Кларион велик' 
len# = len(clip(LOC:TempString))
LOC:String1 &= new(cstring(len# * 2))
LOC:String2 &= new(cstring(len# * 2))
i# = MultiByteToWideChar(CP_ACP, 0, address(LOC:TempString), len#, address(LOC:String2), len#*2)
if i#
  i# = WideCharToMultiByte(CP_UTF8, 0, address(LOC:String2), i#, address(LOC:String1), len#*2, 0, 0)
  LOC:QRCode = GetQRCode(LOC:String1)
end  
Код можете попробовать распознать мобилой.
qrcode.png
qrcode.png (3.62 КБ) 345 просмотров
We are hard at work… for you. :)

artgkx
Бывалый
Сообщения: 52
Зарегистрирован: 25 Декабрь 2010, 12:23

QR - код

Сообщение artgkx » 29 Октябрь 2018, 17:21

Генерит очень много кодов. Бесплатно. Создает картинки малого размера. Пробовал qrcodelib.dll - FastQRCode , картинка ~160 кб, Zint - если .BMP то ~ 2 с чем-то кб, если .PNG меньше 1 кб. Пробовал QRCodeFont.dll - требуется устанавливать шрифт, невозможно отослать кому-то документ с QR кодом, т.к. нужно отсылать еще и шрифт. А если рассылаю квитанции на оплату несколько тысяч. Zint позволяет формировать код в Buffer.
Мне например нужно печатать QR и Code128B. Code128 печатаю с помощью Taboga. QR другим. Zint.exe получается, но мелькает черное DOS окно.
Если научиться с помощью Zint.dll, то можно сформировать практически любой штрих код. Список см. у них на сайте. Я думаю полезно было-бы всем. Валерий Будько на ClaList вроде-бы пользует. Если-бы поделился своим классом с сообществом как Юрий Философов - то думаю многие ему были-бы благодарны.

kreator
Ветеран
Сообщения: 3106
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

QR - код

Сообщение kreator » 29 Октябрь 2018, 17:31

artgkx писал(а):
29 Октябрь 2018, 17:21
Пробовал QRCodeFont.dll - требуется устанавливать шрифт, невозможно отослать кому-то документ с QR кодом, т.к. нужно отсылать еще и шрифт.
Решение для нас. Генеришь wmf, конвертишь его в png или в pdf. А в чём (в каком формате) рассылаются документы?
We are hard at work… for you. :)

artgkx
Бывалый
Сообщения: 52
Зарегистрирован: 25 Декабрь 2010, 12:23

QR - код

Сообщение artgkx » 29 Октябрь 2018, 17:38

Мобильник сдох, пока пользуюсь кнопочным. На Qrrd проверил, читается правильно. Значит что-то не так у меня. Если не сложно отошли или покажи Clarion.env.
В ProgramSetup

Код: Выделить всё

Locale('Windows')
system{prop:charset}=charset:cyrillic
SYSTEM{PROP:FontCharSet + PROP:TipsFont} = CHARSET:CYRILLIC
Может здесь собака зарыта?

kreator
Ветеран
Сообщения: 3106
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

QR - код

Сообщение kreator » 29 Октябрь 2018, 18:04

Причём тут Clarion.env. Может Program.env? Да и то не причём. В описании qr-кода написано, что строка может содержать кодировку win1251 или utf-8. Но возможно конвертеры и считыватели этого не хотят знать. Скорее проблема со считывателем. Конвертеру по барабану. Utf-8 должен работать железно. Что нужно подсунуть этому zint'у? Строку в utf-8? Проверь на всякий случай свою формируемую строку. ИМХО, надо начать со строки utf-8.
We are hard at work… for you. :)

Аватара пользователя
vic7tar
Активист
Сообщения: 153
Зарегистрирован: 09 Февраль 2017, 20:12

QR - код

Сообщение vic7tar » 29 Октябрь 2018, 18:24

artgkx писал(а):
29 Октябрь 2018, 14:20
Zint_symbol GROUP, pre(znt)
...
show_hrt LONG(1)
input_mode LONG
eci LONG
...

Код: Выделить всё

// zint.h
        ...
        int show_hrt;
        int fontsize;
        int input_mode;
        int eci;
        ...
C10, Win10x64

Ответить