viernes, 17 de octubre de 2014

Imprimir codigos QR con delphi y Report builder

Buscando información para generar mis propios codigos QR he encontrado una herramienta referenciada desde la web:

http://www.digital-metaphors.com:8080/RCL/BarCode/QR_Code

que permite generar los codigos QR utilizando delphi y report builder.

El componente es:

1. Quricol: Open source QR Code generator that uses QRencode library.  Requires a DLL file in order to function which must be deployed with your application.

y el se presenta así: 


Quricol is an open source freeware QR code generator library for C++, Microsoft .NET and Delphi based on qrencode - QR Code encoder by Kentaro Fukuchi.The library contains methods to save the generated image to Bitmap or PNG file or generate images on-fly and save it to the stream. Both 32 and 64 bits compiled versions available along with source code.

1- Descargaremos los fuentes de: 

http://users.telenet.be/ws36637/download/quricol.zip

(este enlace lo podemos encontrar desde la url: http://delphi32.blogspot.com.es/2011/11/quricol-qr-code-generator-library.html)

2.- Descomprimiremos el contenido en nuestro equipo por ejemplo en c:\. Resultando una ruta de ficheros como: C:\quricol\Delphi\Source

3.- Para usarlo basta con:

   3.1- Añadir al path de nuestro proyecto la carpeta:  

             C:\quricol\Delphi\Source (Suponiendo que tengamos descomprimido en c:\ la carpeta de fuentes) 

   3.2- Compilar e instalar  el paquete de la carpeta: C:\componentes\quricol\Delphi\Packages

en mi caso me ha valido instalar el paquete Quricol180.dpk para la version de delphi 11.

   3.3.- Copiar las DLL de la carpeta  C:\quricol\Binaries en SYSWOW o System32 para tenerlas en el sistema. También podremos ponerlas en el directorio donde tengamos nuestra aplicación final.
    
   3.4.- Descargar el ejemplo desde: http://www.digital-metaphors.com/tips/QRCodeExample.zip

       Aqui he tenido que corregir alguna cosilla como añadir al uses del ejemplo el pas: QuricolAPI porque no me reconocía el tipo: TErrorCorretion definido en dicho pas. También tuve que eliminar unas referencia a un objeto de tipo TppDesignLayer o similar que no reconocia mi sistema. Lo eliminé sin mas. Una vez completado esto pude ejecutar el ejemplo correctamente

Solo lo he probado con delphi y report builder pero también proporciona soporte para  c++ y .NET. 

Servidor propio de descargas: http://djmad.es/Blog/Programacion/Delphi/Componentes/Quricol/

3 comentarios:

  1. Hola como estas Jesus.
    He etsado haciendo los mismos pasos que pones y me atasco en "compilar e instalar" la carpeta C:\componentes\quricol\Delphi\Packages

    ResponderEliminar
  2. Ya se que el post tiene mucho tiempo, pero gracias a esto pude generar el QR con delphi 7 + Report Builder para la impresión de la AFIP.

    El report builder tiene un componente para código QR, pero no funciona bien y si es "muy grande" da error: QRCode: Insufficient Code Version/ECC Level.

    Bajé el Quricol de acá y de su web oficial por si había alguna mejora...

    Tuve que hacer algunos cambios, primero en el fuente QuricolCode.pas tuve que sacarle los "static" a los métodos de clase y a las propiedades.

    Lugo me daba error al instalar, tuve que colocar la quricol32.dll de quricol\Binaries en C:\Program Files (x86)\Borland\Delphi7\Projects\Bpl y ahí funcionó bien.

    Luego en el código del sistema, una vez que ya tengo el json en base 64, en un campo TGraphicField cargo el bmp:

    procedure CargarImagenQR(const DataQR: String);
    var
    lBitmap: TBitmap;
    lQRCode: TQRCode;
    begin
    lQRCode := TQRCode.Create;
    try
    lBitmap := lQRCode.GetBitmapImage(DataQR, 4, 3, QualityStandard);
    TGraphicField(TablaVentas.FieldByName('ImagenCodigoQR')).Assign(lBitmap);
    finally
    lQRCode.Free;
    end;
    end;

    De nuevo... muchas gracias.

    ResponderEliminar
    Respuestas
    1. Hola
      Por los cambios de AFIP debo realizar la actualización del pie de comprobantes
      Por lo cual necesito generar una imagen con el QR
      baje el Quricol e intenté instalar pero no me fue posible. Borre la palabra static y copie la dll a C:\Program Files (x86)\Borland\Delphi7\Projects\Bpl

      pero me tira error en

      class property BackgroundColor : TColor read GetBgColor write SetBgColor;

      Error: PROCEDURE or FUNCTION expected

      alguna idea para ayudarme a instalarlo?

      Gracias

      Eliminar

Jesús Moreno - Ingeniero Ténico Informático - consultor Informático

Hola, soy Jesús Moreno Ingeniero Técnico Informático en sistemas por la US y propietario de éste blog. Mi trabajo en los ultimos años se ...