Jump to content

Nova Loja Oficial
loja.projetoacbr.com.br
Ajude o projeto a crescer, com estilo

Comprar

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Recommended Posts

Encontrei muitos perguntando como gerar ou que ferramenta usar para gerar o qrCode. Creio que encontrei

uma forma simples de faze-lo.

 

Utilizei uma função da DarumaFramework.dll que gera um bmp instantaneamente contendo os dados necessários. Depois é só

carrega-lo para um componente qrImage do QuickReport ou equivalente.

 

1) Baixe o pacote com a DarumaFramework.dll do site desenvolvedores Daruma.

 

2) Salve-os na pasta do sistema ou em windows/system

 

3) Declare a função logo abaixo de {$R *.DFM} dessa forma :

    Function eGerarQrCodeArquivo_DUAL_DarumaFramework(sCaminhoArquivo,sDados :pChar): Integer; StdCall; External 'DarumaFramework.dll';

 

4) Para gerar o bmp contendo o qrCode . por exemplo :

    sDados:='http://www4.fazenda.rj.gov.br/consultaNFCe/paginas/consultaChaveAcesso.faces numero_chave_acesso etc';

    eGerarQrCodeArquivo_DUAL_DarumaFramework('c:\sistema\qrcode.bmp',pAnsiChar(sDados));

 

abçs

Share this post


Link to post
Share on other sites

Encontrei muitos perguntando como gerar ou que ferramenta usar para gerar o qrCode. Creio que encontrei

uma forma simples de faze-lo.

 

Utilizei uma função da DarumaFramework.dll que gera um bmp instantaneamente contendo os dados necessários. Depois é só

carrega-lo para um componente qrImage do QuickReport ou equivalente.

 

1) Baixe o pacote com a DarumaFramework.dll do site desenvolvedores Daruma.

 

2) Salve-os na pasta do sistema ou em windows/system

 

3) Declare a função logo abaixo de {$R *.DFM} dessa forma :

    Function eGerarQrCodeArquivo_DUAL_DarumaFramework(sCaminhoArquivo,sDados :pChar): Integer; StdCall; External 'DarumaFramework.dll';

 

4) Para gerar o bmp contendo o qrCode . por exemplo :

    sDados:='http://www4.fazenda.rj.gov.br/consultaNFCe/paginas/consultaChaveAcesso.faces numero_chave_acesso etc';

    eGerarQrCodeArquivo_DUAL_DarumaFramework('c:\sistema\qrcode.bmp',pAnsiChar(sDados));

 

abçs

Bom dia Jairo Vianna!

 

Não é preciso tanto esforço assim!

primeiro entre na pasta Fontes/ACBrDiversos, lá vai encontrar o arquivo ACBrDelphiZXingQRCode.pas

 

Bom agora é só declarar ele na sua uses ACBrDelphiZXingQRCode e fazer o seguinte código:

var
  QRCode: TDelphiZXingQRCode;
  QRCodeBitmap: TBitmap;
  Row, Column: Integer;
begin
  QRCode       := TDelphiZXingQRCode.Create;
  QRCodeBitmap := TBitmap.Create;
  try
    QRCode.Data      := 'AQUI INFORMA O TEXTO';
    QRCode.Encoding  := qrUTF8NoBOM;
    QRCode.QuietZone := 1;

    //QRCodeBitmap.SetSize(QRCode.Rows, QRCode.Columns);
    QRCodeBitmap.Width  := QRCode.Columns;
    QRCodeBitmap.Height := QRCode.Rows;

    for Row := 0 to QRCode.Rows - 1 do
    begin
      for Column := 0 to QRCode.Columns - 1 do
      begin
        if (QRCode.IsBlack[Row, Column]) then
          QRCodeBitmap.Canvas.Pixels[Column, Row] := clBlack
        else
          QRCodeBitmap.Canvas.Pixels[Column, Row] := clWhite;
      end;
    end;

    APict.Assign(QRCodeBitmap);
  finally
    QRCode.Free;
    QRCodeBitmap.Free;
  end;

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
http://www.juliomarmarchetti.com.br
Embarcadero MVP

Share this post


Link to post
Share on other sites

 

Bom dia Jairo Vianna!

 

Não é preciso tanto esforço assim!

primeiro entre na pasta Fontes/ACBrDiversos, lá vai encontrar o arquivo ACBrDelphiZXingQRCode.pas

 

Bom agora é só declarar ele na sua uses ACBrDelphiZXingQRCode e fazer o seguinte código:

var
  QRCode: TDelphiZXingQRCode;
  QRCodeBitmap: TBitmap;
  Row, Column: Integer;
begin
  QRCode       := TDelphiZXingQRCode.Create;
  QRCodeBitmap := TBitmap.Create;
  try
    QRCode.Data      := 'AQUI INFORMA O TEXTO';
    QRCode.Encoding  := qrUTF8NoBOM;
    QRCode.QuietZone := 1;

    //QRCodeBitmap.SetSize(QRCode.Rows, QRCode.Columns);
    QRCodeBitmap.Width  := QRCode.Columns;
    QRCodeBitmap.Height := QRCode.Rows;

    for Row := 0 to QRCode.Rows - 1 do
    begin
      for Column := 0 to QRCode.Columns - 1 do
      begin
        if (QRCode.IsBlack[Row, Column]) then
          QRCodeBitmap.Canvas.Pixels[Column, Row] := clBlack
        else
          QRCodeBitmap.Canvas.Pixels[Column, Row] := clWhite;
      end;
    end;

    APict.Assign(QRCodeBitmap);
  finally
    QRCode.Free;
    QRCodeBitmap.Free;
  end;

Por gentileza como eu altero o tamanho do QrCode, quando gerado com a função acima? já tentei de todas as formas, estou criando uma imagem e tentando alterar o tamanho antes de gravar, porém depois de gravado não consigo fazer a leitura. Se fizer a gravação do tamanho normal funciona a leitura, mais não fica em um bom tamanho para impressão na não fiscal da bematech.

 

Image1.Canvas.Brush.Color := clWhite;
    Image1.Canvas.FillRect(Rect(0, 0, Image1.Width, Image1.Height));
    if ((QRCodeBitmap.Width > 0) and (QRCodeBitmap.Height > 0)) then
    begin
      if (Image1.Width < Image1.Height) then
      begin
        Scale := Image1.Width / QRCodeBitmap.Width;
      end else
      begin
        Scale := Image1.Height / QRCodeBitmap.Height;
      end;
 
      Image1.Canvas.StretchDraw(Rect(0, 0, Trunc(Scale * QRCodeBitmap.Width), Trunc(Scale * QRCodeBitmap.Height)), QRCodeBitmap);
    end;
 
Obrigado!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...