QR - код

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7326
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

QR - код

Сообщение Игорь Столяров »

Андрей писал(а): 24 Октябрь 2017, 16:21Никогда не пробовал сей штуки
В ClaList недавно это тему тёрли полгода: https://groups.google.com/forum/#!topic ... eV0QihTMWs
Посмотри, там в принципе всё, что нужно расписали в конце-концов ... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

QR - код

Сообщение kreator »

Андрей писал(а): 24 Октябрь 2017, 16:21 Надо сделать на квитанциях QR-код для считывания квитанций в Сбербанковских терминалах. Никогда не пробовал сей штуки, вот эту тему старую только нашел. А будет работать через OLE Ocvita Barcode ActiveX по примеру https://infostart.ru/public/604539/ ?
А библиотека в начале этой темы не заработала?
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

QR - код

Сообщение Андрей »

Да хотел через OLE, вроде там попроще - никаких столбцов и строк и прямо примерчик что нужно мне - под Сбербанк
В общем попробовал - на окне OLE работает, но объясните мне пожалуйста - а как мне в REPORT-е то его разместить ?
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

QR - код

Сообщение Ал »

Андрей писал(а): 25 Октябрь 2017, 9:16 Да хотел через OLE, вроде там попроще - никаких столбцов и строк и прямо примерчик что нужно мне - под Сбербанк
В общем попробовал - на окне OLE работает, но объясните мне пожалуйста - а как мне в REPORT-е то его разместить ?
в репорте тож есть окно...
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

QR - код

Сообщение kreator »

Андрей писал(а): 25 Октябрь 2017, 9:16 Да хотел через OLE, вроде там попроще - никаких столбцов и строк и прямо примерчик что нужно мне - под Сбербанк
В справке явно записано, что контрол OLE не доступен в репорте. Надо из оконного OLE попробовать скинуть код, например, в рисунок.
Что касается той библиотеки, то просто делается контрол TEXT и всё. Один раз надо настроить его размер. чтобы считывался и другим надписям не мешал. К сожалению, в выбранный размер (если сначала определить этот контрол) автоматически не впишется. Масштабирования нет. Ну и шрифт специальный нужно иметь на компе, либо подгружать.
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

QR - код

Сообщение kreator »

Ал писал(а): 25 Октябрь 2017, 11:58 в репорте тож есть окно...
Где оно? Шутить изволите?
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

QR - код

Сообщение Андрей »

kreator писал(а): 25 Октябрь 2017, 12:05
Андрей писал(а): 25 Октябрь 2017, 9:16 Да хотел через OLE, вроде там попроще - никаких столбцов и строк и прямо примерчик что нужно мне - под Сбербанк
В справке явно записано, что контрол OLE не доступен в репорте. Надо из оконного OLE попробовать скинуть код, например, в рисунок.
Вот те раз... а я то обрадовался, что контрол нашел удобный. А в 1С делается оказывается на 1-2-3
"Вставляем в макет "Таблица" - "Рисунки" - "Вставить объект" - "Элемент управления" - "Ocvita Barcode". Называем этот объект именем Штрихкод."
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

QR - код

Сообщение Ал »

Андрей писал(а): 25 Октябрь 2017, 15:41
kreator писал(а): 25 Октябрь 2017, 12:05
Андрей писал(а): 25 Октябрь 2017, 9:16 Да хотел через OLE, вроде там попроще - никаких столбцов и строк и прямо примерчик что нужно мне - под Сбербанк
В справке явно записано, что контрол OLE не доступен в репорте. Надо из оконного OLE попробовать скинуть код, например, в рисунок.
Вот те раз... а я то обрадовался, что контрол нашел удобный. А в 1С делается оказывается на 1-2-3
"Вставляем в макет "Таблица" - "Рисунки" - "Вставить объект" - "Элемент управления" - "Ocvita Barcode". Называем этот объект именем Штрихкод."
:?: разместить на window репорта, ....сформировать..., выдать в репорте...
Аватара пользователя
Alex
Старожил
Сообщения: 210
Зарегистрирован: 29 Август 2005, 14:54
Откуда: Белоруссия

QR - код

Сообщение Alex »

Кто опробовал пример , то увидел , что процедура формирования кода PDF417 из PDF417Font.dll возвращает код ,у которого в конце надпись 'MW6Demo'.
Вот поправленный dll:
PDF417Font.zip
(22.79 КБ) 186 скачиваний
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

QR - код

Сообщение Андрей »

Попробовал через QRCodeFont.dll, вроде как все Ок, по- крайней мере проверку на сайте Сбербанка проходит. А что там за параметр Mask (в примере Mask=l:rows=3) ? А errCorLev нужно бывает ставить >0 ?
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

QR - код

Сообщение kreator »

Андрей писал(а): 30 Октябрь 2017, 14:04 Попробовал через QRCodeFont.dll, вроде как все Ок, по- крайней мере проверку на сайте Сбербанка проходит. А что там за параметр Mask (в примере Mask=l:rows=3) ? А errCorLev нужно бывает ставить >0 ?
По-моему, там есть описания этих параметров. Уже не помню, но по-моему влияют на размер и качество. У меня вот такие параметры:

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

_enQRCode(LOC:QRString, 4, 0, 3)
We are hard at work… for you. :)
artgkx
Бывалый
Сообщения: 58
Зарегистрирован: 25 Декабрь 2010, 12:23

QR - код

Сообщение artgkx »

Clarion 6.3 ABC
Прошу помощи у сообщества.
Задача сделать отчет с QR кодом и отправить по эл.почте.
Печатать QR научил KREATOR, за что ему огромное спасибо. Но т.к. на приемной стороне
невозможно устанавливать у всех шрифт, (рассылаются квитанции на оплату), решил сделать
конвертацию в PNG а затем в PDF, т.к. PDF у всех должен читаться. Посмотрел советы в форуме.
Вот код:

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

ReturnValue = PARENT.EndReport() 
  I2PDF_License(CodeLicence)
  I2PDF_SetCreationDate()
  I2PDF_DeleteImagesOnConvert()
  I2PDF_SetDPI(150)
  My1ClaRunExt &= NEW ClaRunExtClass
  loop I#=1 to records(SELF.PreviewQueue)
    GET(SELF.PreviewQueue,I#)
    LOC:FileName2=CLIP(loc:path) &clip(vdisk.GetFileNameOnly(SELF.PreviewQueue.Filename))&'.png'
    err#=My1ClaRunExt.ImageToPNG(SELF.PreviewQueue.Filename,LOC:FileName2)
    a#=I2PDF_AddImage(LOC:FileName2)
  end
  Dispose(My1ClaRunExt)
  ToName = CLIP(loc:path) & loc:lsts & '.pdf'
  b#=I2PDF_MakePDF(ToName,1,ErrorText,256)
Файл PDF формируется, но при этом в каталоге \APPData\Local\Temp\ создаются файлы CLAxxxx.tmp, которые
не удаляются автоматически. И удалить их нельзя пока не закрыть приложение. Оригинальные ХХХ_orig.wmf
создаются и удаляются автоматически.
Также Отчет не должен печататься, а только формироваться PDF, и закрыться. Судя по форуму многие уже делают
такое. Опыта не хватает, а то уже задолбался.
Есть также функция
FullQRCode(bool autoConfigurate,bool AutoFit,long backColor,long barColor,long IN,long correctionLevel,long encoding,long marginpixels,long moduleWidth,long Height,long Width,longF),PASCAL,DLL,NAME('FullQRCode')
из qrcodelib.dll. Может кто знает как правильно подставить параметры?
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

QR - код

Сообщение kreator »

artgkx писал(а): 26 Март 2018, 16:56 Печатать QR научил KREATOR, за что ему огромное спасибо.
Приятно, конечно, но не заслужил :D . Может "svru", сделавший функцию?
По делу. Я не любитель костылей. Поэтому предлагаю воспользоваться классами и шаблонами от С10. Либо попытаться как-то мягко вставить их в 6.3, либо сгенерить отдельную dll на С10. Я делал такое. Есть стандартный отчёт (с предварительным просмотром, с возможностью экспортировать его в разные форматы). Но иногда нужно, ничего на экран не выдавая, сформировать PDF-файл и отправить его куда надо. Всё реализуется стандартными шаблонами и классами. Причём процедура репорта та же, только параметр на входе другой. Есть ещё радикальный способ - перейти полностью на C10.
We are hard at work… for you. :)
artgkx
Бывалый
Сообщения: 58
Зарегистрирован: 25 Декабрь 2010, 12:23

QR - код

Сообщение artgkx »

В Clarion 6.3 тоже есть экспорт в PDF, но кириллица не воспроизводится и QR код получается как-бы полосками.
Поэтому и попробовал через экспорт в PNG, а затем в PDF. Тогда и кириллица на месте и QR как картинка.
А CLAxxxx.tmp файлы создает ClaRunExt.ImageToPNG , причем если err# , то TEMP файлы автоматически удаляются.
Похоже где-то глюк в классе. Я не опытный программист, а так учусь. Может ГУРУ посмотрят и подправят класс. Думаю
другим пригодится. ClaRunExt взят от С10.
Если в конце куска кода вставить:
ReturnValue = Level:Cancel
Return ReturnValue
Выход без печати. а .PDF сформирован выглядит красиво, можно отправлять. Все это делается в фоновом режиме.
Для конвертации в utf-8 хорош класс Юрия Философова cstr.
Но подсмотрел где-то у 1С-ников функцию и приспосбил для Clarion:

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

fToUTF8              PROCEDURE  (p1)                       ! Declare Procedure
! Start of "Data Section"
! [Priority 4000]
strOut   &CString
strin    &CString
l:ret    CSTRING(4096) !возвращаемая строка
a        string(1)
! End of "Data Section"
  CODE
! Start of "Processed Code"
! [Priority 4000]
  strIn &= New CString(LEN(p1)+2)
  strIn = p1
  strOut &= New CString(LEN(p1)*2+2)
  j# = 1
    LOOP i#=1 TO LEN(strin) !LEN(p1)
        a = SUB(strin,i#,1)
        sh# = VAL(a)
        IF (sh# > 191) AND (sh# < 224) 
            strOut[j# : j#+1] = CHR(208)&CHR(sh#-48)
            j# = j#+2
        Elsif (sh# > 223) AND (sh# < 240) 
            strOut[j# : j#+1] = CHR(208)&CHR(sh#-48)
            j# = j#+2
        Elsif (sh# > 239) AND (sh# < 256) 
            strOut[j# : j#+1] = CHR(209)&CHR(sh#-112)
            j# = j#+2
        Elsif (a = '¨') OR (a = '¸')
            strOut[j# : j#+1] = CHR(208)&CHR(sh#-39)
            j# = j#+2
        Elsif (a = '¹')
            strOut[j# : j#+2] = CHR(226)&CHR(132)&CHR(150)
            j# = j#+3
        Else
            strOut[j#] = a
            j# = j#+1
        End
    End
  l:ret = Clip(strOut)
  Dispose(strOut)
  Dispose(strin)
  Return Clip(l:ret)
! End of "Processed Code"
Может кому пригодится.
А функция FullQRCode из qrcodelib.dll чем должна быть хороша, тем что формирует QR сразу как картинку, которую можно
потом вставлять в любой документ и он будет правильно отображаться. Только не знаю всех параметров. Искал но что-то
не нашел. Если кто знает просьба откликнуться.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

QR - код

Сообщение kreator »

Всё же непонятно, что подправлять? В С10 всё работает. При конвертации в PDF есть опция "Use Scan Copy Mode?". Для конвертации в utf и обратно есть функции MultiByteToWideChar и WideCharToMultiByte. В сухом остатке - на данный момент что не работает, что не так?
We are hard at work… for you. :)
Ответить