Geração de QR Code no Crystal Reports usando DLL

Este tutorial não é especificamente sobre o Latromi, mas como esta é um situação muito comum e o Latromi possui integração com o SAP Crystal Reports, vou mostrar como criar um RPT (Relatório do Crystal Reports) usando QR Code.

DLL para o Crystal Reports

O Crystal Reports não possui suporte nativo à geração de QR Code, mas possui suporte a DLL’s desenvolvidas em outras plataformas, que podem expandir o conjunto padrão de Funções.

A Latromi desenvolveu a DLL CRUFL_Latromi.dll usando .NET, que é compatível com o Crystal Reports, e contém duas funções para geração de Código de Barras:

  • LatromiBarCodeInt2of5 (data, height, scale)
  • LatromiBarCodeQRCode (data, size, margin)

Para gerar o QR Code, vamos usar a função LatromiBarCodeQRCode.

Arquivo Temporários

Os arquivo temporários gerados pela DLL ficam no diretório: %temp%\LATROMI\CRUFL\

Licença

A utilização dessa DLL está sujeita aos termos de uso das suas dependências:

Instalação

Antes de utilizar, é necessário baixar e instalar a DLL. Siga os passos abaixo:

  1. Baixe o arquivo LatromiCRLib.zip.
  2. Extraia os arquivos em uma pasta.
  3. Execute o arquivo Install.bat como Administrador.
    image

Crystal Reports

Agora vamos utilizar a função de geração de QR Code em um Relatório do Crystal Reports.

Novo Relatório

Para começar, abra a IDE do SAP Crystal Reports e Crie um novo Relatório.

Configure a Fonte de Dados do Relatório. Neste exemplo, estou usando um Comando SQL com uma coluna chamada “site”, que contém a URL do site da Latromi.

SELECT
 'https://latromi.com.br' AS site

Implementando QR Code

A implementação do QR Code consiste em adicionar uma imagem qualquer no Relatório, e trocar o caminho dela pelo caminho da imagem do QR Code usando uma Fórmula. Isso acontece durante a geração do relatório.

O primeiro passo então, é adicionar uma imagem qualquer no Relatório.

  1. Acesse o menu “Inserir → Imagem…”
  2. Selecione uma imagem qualquer e clique em OK. Procure usar uma imagem com as mesmas dimensões do QR Code que você deseja gerar, para manter a proporção dentro do Relatório.

image

Agora clique com o botão direito do mouse sobre a imagem, vá até a opção “Formatar Gráfico…”. Em seguida selecione a aba “Imagem”, e clique no botão de Fórmula no campo “Local do Gráfico”.

image

No editor de Fórmulas, você vai encontrar a função LatromiBarCodeQRCode no explorador de Funções, no caminho “Funções → Funções Adicionais → UFLs do Visual Basic (u2lcom.dll)”.

Agora basta chamar a função, passando os parâmetros:

  • data: Texto que será transformado em QR Code.
  • size: Tamanho do QR Code em pixels.
  • margin: Espessura da margem em pixels

image.

Pronto! Basta executar o relatório para confererir o resultado:

image

3 curtidas

Olá Daniel. É possível executar em um server sem ter o Crystal Reports instalado? Testei e minha aplicação está crashando quando mando executar o crviewer em um .rpt com a CRUFL.
Localmente roda tranquilo.
Obrigado.

1 curtida

Olá @jamildomitneto.
Seja bem vindo a comunidade.

Além dos arquivos para geração do QR Code, é necessário ao menos ter o runtime do Crystal Reports instalado no computador onde o relatório será gerado.

No caso do LATROMI, os relatórios são gerado através de um Web Service, e neste caso, os arquivos e o runtime precisam estar instalados apenas no servidor.

Ola tudo certo? E me diz uma coisa como é possivel fazer a distribuição dessa DLL junto com a aplicação ?

1 curtida

Olá @Angelo_Stevanelli, seja bem vindo a nossa comunidade!

  • Se você está se referindo a distribuição junto aos Pacotes LCP do LATROMI:

    • Não há suporte. Você precisa instalar as DLL’s no servidor manualmente ou usando algum instalador separado.
  • Se você está se referindo a distribuição junto à outro Software:

    • Adicione os arquivos extraídos no instalador, e ao final da instalação chame o arquivo .bat para registrar os arquivos.

      Ou então, replique os comandos do arquivo .bat para outra linguagem que seja suportada pelo seu Instalador.

No Crystal 10.0.5 não é possível fazer isso né?

1 curtida

Seja bem vindo a comunidade @Daniel_Paixao!

Testamos utilizando o Crystal Reports 2008 para desenvolvimento do RPT e o Runtime ≥ 13 para geração dos relatórios.

Não testamos em outras versões.

Salve @daniel.giacomelli
Usei aqui e em tempo de designe tudo funcionou, mas quanto publiquei no IIS rodando em 64 bits, não localiza o componente.
É uma pena, pois me economizaria um certo tempo.
Caso alguém já tenha passado por este problema, por favor, ajudem ai.
Vlw, e até a próximo.

1 curtida

Seja bem vindo a comunidade @AlexBorges!
Qual o erro que está ocorrendo?

O UFL 'u212com.dll' que implementa essa função está ausente. Erro no arquivo etiqueta6J 2556_976_{C3DABAE7-DF9F-41D5-BC75-418BB78D6586}.rpt: Erro na fórmula Graphic_Location: 'LatromiBarCodeQRCode ({@qrCode}, 143, 0)' O UFL 'u212com.dll' que implementa essa função está ausente.

Mesmo que tenha executado a instalação corretamente.
Notei que se mudar no VS2019 para que o IIS use 64 bits localmente, o erro se manifesta. O que não acontece se executar em 32 bits

No LATROMI, o serviço que gera os relatórios do Crystal fica em um site separado, que roda com o Pool de Aplicativos habilitado para 32-bits no IIS, por isso não realizamos testes em 64-bits.

Mas como o projeto com as DLLs é compilado como Any CPU, imagino que seja alguma questão de configuração no registro.

Olá Daniel, tbm estou com esse problema minha aplicação roda em 64 bits e ocorre o mesmo erro, existe alguma configuração para isso ou outra dll em 64 bits?

Obrigado
Marcio

Olá Márcio,

como resolveu esta questão. Estou com o mesmo problema. Se utilizar numa aplicação 32bits imprime sem problema, numa aplicação de 64bits ocorre o erro.

Obrigado,
Artur

Olá Artur, utilizando essa dll não consegui resolver, o que fiz foi usar a api do google, inseri uma imagem e fiz a chamada, segue o link que usei como modelo

qualquer coisa

Marcio

1 curtida

No meu windows 11, com o visual studio 2022, a função não aparece. Mas no ambiente que tenho com windows 10, visual studio 2019 aparece. Será que o componente não é compatível?

Olá Emanuel!

Essa solução foi desenvolvida para ser usada com a IDE do Crystal Reports, que roda em 32-bits.
Talvez o problema seja que o Visual Studio esteja rodando em 64-bits.

Vou compartilhar a documentação que foi utilizada como base para desenvolver essa solução, assim talvez você consiga desenvolver uma solução própria para a sua versão de Visual Studio:

Valeu, mas acho que algo sobre u2lcom.dll.
Mesmo que a aplicação seja em 32 bits, a dll só aparece no visual studio 2019.
Já instalei ambas as versões do crystal, do 2019, do 2022, em 32 e em 64 bits.
Se abrir o mesmo projeto no 2019, funciona normalmente; abriu no 2022, não consegue encontrar a função.
Acredito que o problema está na versão de instalação do crystal reports do vs 2022.
Tanto que o instalador instala primeiro e apenas a versão 64 bits. Esperar a SAP corrigir logo.

Ola Daniel. Voce tem algum doc mostrando como gerar o barcode no Crystal? Esse pra gerar QR Code foi tranquilo, mas tenho duvida de como usar LatromiBarCodeInt2of5 (data, height, scale), é da mesma forma, com picture?
Muito obrigado
Alberto

Olá @Alberto!
Seja bem vindo à nossa comunidade!

Sim, a forma de usar a função LatromiBarCodeInt2of5 segue o mesmo padrão da função LatromiBarCodeQRCode.

O parâmetro “height” é altura máxima do código de barras, e o parâmetro “scale” é a escala da largura em relação a largura original (calculada automaticamente). Para o parâmetro “scale” é preciso passar um valor maior ou igual a 1.

Exemplos:

Data '0123456789', Height 20, Scale 1

6B810A8CA2BAA70603E7CD646A4205FB810D53

Data '0123456789', Height 40, Scale 1

4B409C54F26279607BDD27C2C496DE3B6A7078

Data '0123456789', Height 20, Scale 2

71CC416E9ECAC32B5B17BBD7ACC25F605B9075

Boa tarde,
Sei que o tópico é antigo mas será que podem me ajudar?
Estou usando a dll com o crystal e funcionou corretamente no windows 10, quando coloquei em produção usando meu sistema em windows server tanto 2016 quanto 2019 não funciona, simplesmente fecha o sistema, alguém já teve problema nessa versão do windows?
Obrigado