On-line: Andrey, гостей 0. Всего: 1 [подробнее..]
АвторСообщение



Пост N: 141
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 24.05.18 18:05. Заголовок: Печать QR-кода


Кто освоил работу с QR-кодом, поделитесь решением.
Необходимо его генерировать и печатать.
Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 4 [только новые]


администратор




Пост N: 6832
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.05.18 18:52. Заголовок: http://clipper.borda..

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 349
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 25.05.18 08:31. Заголовок: *******************..



********************************************************************************
* ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ БИБЛИОТЕКИ ПЕЧАТИ QR КОДОВ СОВМЕСТНО С ТЕКСТОМ
/*
Пример печати простого статичного слипа формата
< произвольный текст >
<текст> картинка QR <текст>
< произвольный текст >

Самое главное, что управление печатью текста:
oPrinter:NewLine() // перевод на следующую строку
oPrinter:TextOut( Padc(cTxt,80) ) // выводим текстовую строку
и печатью картинки могут быть независмыми процессами
oBmp:Draw(oPrinter,{1500,1000,1700,1200})
или
oBmp:Rect:= { 200,2000, 2000, 1500 }
oPrn:DrawBitMap( oBmp )
*/
//*** На время включаю директивы препроцессора - затем отключаю
#define FORM_A4 9
#define PS_SOLID 0
#define RGB( nR,nG,nB ) ( nR + ( nG * 256 ) + ( nB * 256 * 256 ) )
#define BLACK RGB( 0x0 ,0x0 ,0x0 )
PROC pPintQR()
LOCA cBmp:="qr.bmp", cTxt:="произвольный текст", cT:="текст"
LOCA nLeftStr:=0, nLeftCol:=0, nRightStr:=0, nRightCol:=0 // Координаты в пикселях
LOCA aPos:={}, nI:=0
LOCA oPrint, oBmp, cPrinter:=""

cPrinter := GetDefaultPrinter() // Определяю принтер, используемый по умолчанию в системе
oPrinter := Win32Prn():New( cPrinter ) // Определяем имя объекта класса для принтера, установленного по умолчанию в системе

// В случае успешного создания определяю свойства класса. Эти и свойства (BitNumber,PaperLanght,PaperWidht) должны быть определены до Create
oPrinter:Landscape := .F. // портретная ориентация
oPrinter:FormType := FORM_A4 // А4
oPrinter:Copies := 1 // число копий... но всё равно делаю по моим алгоритмам

// Создаем экземпляр класса и проверка успешности создания... после надо уничтожить его
IF !oPrinter:Create() // Не создан экземпляр класса
ErrMess("Не создан виртуальный принтер! М/б их нет?",cError)
RETU
ENDI

// Обязательно-проверка успешности постановки в очередь с именем
IF !oPrinter:startDoc("Printering USLand")
ErrMess("Класс startDoc не смог поставить в очередь печати. Смотрите свойства принтеров, например автономность - обращайтесь к системному администратору!",cError)

// Уничтожаем раннее созданный экземпляр объекта (класса).
oPrinter:Destroy()
RETU
ENDI

// Определяем перо для рисования линий (толщина шрифта) - форма линий (сплошная, тонкая, черная)
oPrinter:SetPen(PS_SOLID, 1, BLACK)

// Установка шрифта, в зависимости от сжатия текста. В массиве определяется толщина шрифта и высота... подбор эксперимент
oPrinter:SetFont("Courier New",10,{4,-43}) // Обычный и без сжатия
oPrinter:Charset(255) // ОБЯЗАТЕЛЬНО - кодировка OEM... иначе козебяки

//!*** ПРОЦЕССЫ ПЕЧАТИ ТЕКСТА, УПРАВЛЯЕМЫЕ ПЕРЕХОДОМ НА НОВУЮ СТРОКУ И ПЕЧАТЬ КАРТИНОК !!!НЕЗАВИСИМЫЕ!!!

// Печатаем текстовую информацию и лишь по причине пробелов помещаю печать картинки ниже
oPrinter:NewLine() // перевод на следующую строку
oPrinter:TextOut( Padc(cTxt,80) ) // выводим текстовую строку
FOR nI := 1 TO 5
oPrinter:NewLine()
oPrinter:TextOut( " " )
NEXT nI
oPrinter:NewLine()
oPrinter:TextOut( Padc(cT,10)+Spac(60)+Padc(cT,10) )
FOR nI := 1 TO 5
oPrinter:NewLine()
oPrinter:TextOut( " " )
NEXT nI
oPrinter:NewLine() // перевод на следующую строку
oPrinter:TextOut( Padc(cTxt,80) ) // выводим текстовую строку

// Печатую bmp файл используя соответствующий класс в конкретных координатах 2000*500 и размера 700*700
oBmp := Win32BMP():new() // создаю объект
IF oBmp:loadFile( cBmp ) // загружаю файл
oBmp:Draw(oPrinter,{2000,400,360,360}) // печатаю в координатах пикселях на листе. 15mm
ENDI
oBmp:Destroy() // уничтожаю объект

* После закрытия печати сам прогоняет? oPrinter:NewPage() // делаю прогон страницы
oPrinter:endDoc() // Закрываю печать документа
oPrinter:Destroy() // Уничтожаю объект принтера
RETU

// Отключаю директивы препроцессора
#undef FORM_A4
#undef PS_SOLID
#undef RGB
#undef BLACK


/*
Генерация QR кода по переданному тексту и маршруту вывода в файл *.bmp
До вызова на ПК должна быть установлена библиотека QRCodelib и доступен
для вызова DLL файл библиотеки

Параметры:
cText Преобразуемый в QR Code текст
cPath Маршрут вывода картиник кода
cBmp Имя файла картинки
Возвращает: Имя файла картинки с маршрутом
*/
FUNC cQRGen(cText,cPath,cBmp)
STAT qrDLL
LOCA cFile:="", nResp:=0

#Define DC_CALL_STD 0x0020
DEFAULT cPath TO "", cBmp TO "QR.BMP", cText TO "http://check.egais.ru?id=UUID&dt=0404161630&cn=Common_Name"
cFile := cPath+cBmp

IF !File("QRCodelib.Dll") THEN RETU ""

qrDLL := LoadLibrary("QRCodelib.Dll" ) // Подгружается библиотека из DLL файла
nResp := DllCall(qrDLL,DC_CALL_STD,"FastQRCode",cText,cFile) // Формирование и вывод в файл
FreeLibrary(qrDLL) // Освобождение из памяти ресурсов занятых библой
RETU (cFile)


Взять библиотеку можно тут: https://olegon.ru/attachment.php?attachmentid=9008&d=1510037931

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 619
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 26.05.18 19:16. Заголовок: Освоил и пользуюсь &..


Освоил и пользуюсь \hb\contrib\hbzebra - гениальное по своей идее решение.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 142
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 28.05.18 05:30. Заголовок: Спасибо за информаци..


Спасибо за информацию

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 26
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет