13 de enero de 2011

Códigos de Barras QR usando la API de Google

Un pequeño ejemplo de como utilizar la API de Google para generar códigos de barras de dos dimensiones de tipo QR:

** Este seria el contenido de informacion del QR
lcDato =[?re=XAXX010101000%26rr=XAXX010101000%26tt=1234567890.123456] + ;
  [%26id=ad662d33-6934-459c-a128-BDf0393f0f44]
** Ancho x Alto
lcDimensiones = '300x300'
** Donde quieren guardar la imagen, ojo, es PNG
lcImagen = PUTFILE('QRCode','QRCode','png')

IF EMPTY(lcImagen)
  RETURN
ENDIF

IF GoogleQR(lcDato,lcDimensiones,lcImagen) == 0
  MESSAGEBOX('Descarga Exitosa',0+64,'GoogleQR')
ELSE
  MESSAGEBOX('Error en la generacion del Codigo QR',0+16,'GoogleQR')
ENDIF

FUNCTION GoogleQR(pDato,pDimensiones,pImagen)
  WAIT WINDOW "Generando y descargando Código QR, espere por favor..." NOWAIT
  DECLARE LONG URLDownloadToFile IN "urlmon";
    LONG pCaller,;
    STRING szURL,;
    STRING szFileName,;
    LONG dwReserved,;
    LONG lpfnCB
  sURL ="https://chart.googleapis.com/chart?cht=qr&chs=" + ;
    pDimensiones + "&chld=Q&chl=" + STRTRAN(pDato,'&','%26')
  nRetVal = URLDownloadToFile (0, sURL, pImagen, 0, 0)
  WAIT CLEAR
  RETURN nRetVal
ENDFUNC
Más información:
Google API
Gracias a Luis María Guayán por el tip de esta API de Google
Baltazar Moreno

2 comentarios :

  1. Una consulta;
    Tengo que utilizar la API de Google, pero el en el contenido del dato que envío, hay diferentes campos concatenados y separado por algunos caracteres de control no imprimibles ASCII (RS=30, GS=29 y EOT=04). El caso es que me da error y no los acepta. Entiendo que por que la API funciona con un formato de caracteres UTF-8 y posiblemente este formato no acepte este tipo de caracteres. Por lo tanto necesitaría traspasar el dato que envío a desde ASCII a UTF-8. Como podría hacerlo..?

    Gracias...

    ResponderBorrar
  2. Como puedo reducir el margen que le da al qr. ?

    ResponderBorrar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.