Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / QR-коды в ZENReport'е / 4 сообщений из 4, страница 1 из 1
05.06.2015, 09:38
    #38977022
Sacry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QR-коды в ZENReport'е
Добрый день.
Есть ли у кого-то опыт вставки генератора QR в ZENReport?
...
Рейтинг: 0 / 0
05.06.2015, 10:57
    #38977131
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QR-коды в ZENReport'е
Sacry ,

В чём именно затык: с генерацией QR-кода или вставкой картинки в отчёт?

PS: в 2015.2 генерация QR уже встроена.
...
Рейтинг: 0 / 0
05.06.2015, 14:29
    #38977449
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QR-коды в ZENReport'е
Sacry ,
Пример генерации QR-кода и вставка его в ZEN ReportInclude %occUtility

Class my.rep Extends %ZEN.Report.reportPage
{

Parameter DEFAULTMODE As STRING [ Constraint = ",html,tohtml,toxslfo,pdf,xml,xslfo,excel,toexcel,ps,pdfprint,xlsx,tiff,displayxlsx,fo2pdf,foandpdf", Flags = ENUM ] = "pdf";

/// Этот XML блок описывает логическое содержание этого отчёта.
XData ReportDefinition [ XMLNamespace = " http://www.intersystems.com/zen/report/definition"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/definition"
  name="QRReport"
  sql="
    select 1 ID,'test' data union
    select 2,'http://sql.ru' union
    select 3,'Какие-то данные из Caché: ăîşţâĂÎŞŢÂ,^''&quot;&quot;'"
  >
  <group name="group">
    <attribute name="ID" field="ID"/>
    <element name="qrcode" field="data" expression='"data:image/png;base64,"_..GenQRCodeBase64(%val)'/>
  </group>
</report>
}

/// Этот XML блок описывает отображение этого отчёта.
/// Это используется для создания XSLT стиля, как для HTML, так и для XSL-FO.
XData ReportDisplay [ XMLNamespace = " http://www.intersystems.com/zen/report/display"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/display"
  name="QRReport"
  title="QR Отчёт">
  <body>
    <p>QR Отчёт</p>
    <group name="group" line="1px">
      <table orient="row" width="4in">
        <item field="@ID" width="2in">
          <caption value="ID:"/>
        </item>
        <img src="!qrcode">
          <caption value="QR-код:"/>
        </img>
      </table>
    </group>
  </body>
</report>
}

/// Write stream -- base64 encoded
ClassMethod EncodeStreamBase64(stream As %Stream.Object) As %String [ Internal, Private ]
{
  ; process stream in groups of 1023 - 
  ; number arbitrary but must be divisible by 3 and 57=76/4*3
  Set out=""
  Do stream.Rewind()
  While 'stream.AtEnd {
    Set len=513  ##; text must be divisible by 3 and 76
    Set text=stream.Read(.len)
    quit:len'>0
    Set out=out_$system.Encryption.Base64Encode(text)
  }
  Quit out
}

ClassMethod GenQRCodeBase64(data) As %String
{
  #dim ex As %Exception.AbstractException
  s filename=##class(%File).TempFilename("png")
  try{
    s f=##class(%Stream.FileBinary).%New()
    s f.Filename=filename
    d f.Write($zcvt(data,"O","UTF8"))
    d f.%Save(0)
    
    s:'$zf(-1,"zint.exe -o "_$$$quoteall(filename)_" -b 58 -w 0 --border=0 --binary -i "_$$$quoteall(filename)) r=..EncodeStreamBase64(f)
  }catch(ex){
    s ^tmp("error")=ex.DisplayString()
  }
  d ##class(%File).Delete(filename)
  q r
}

}
Полученные коды можете расшифровать, например, через ZXing Decoder Online .
...
Рейтинг: 0 / 0
17.07.2015, 17:42
    #39010155
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
QR-коды в ZENReport'е
servitPS: в 2015.2 генерация QR уже встроена. Support For QR Codes
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / QR-коды в ZENReport'е / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]