Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

Nfc-E - Gerar Qrcode


  • Este tópico foi criado há 2692 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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

Link to comment
Share on other sites

  • Consultores

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
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • 4 weeks later...

 

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!
Link to comment
Share on other sites

  • 1 month later...
  • Este tópico foi criado há 2692 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.