problemas al exportar a pdf reporte con imagen de QR

591 views
Skip to first unread message

Jorge

unread,
Jan 19, 2021, 2:58:59 PM1/19/21
to publicesvfoxpro
Hola Grupo :

Estoy usando la libreria foxbarcodeqr para generar codigos qr para factura electronica de Afip .
Pude llegar a obtener el ejemplo que esta en la pagina de afip .
Para exportar reportes a PDF utilizo la libreria  XFRX que la vengo usando sin problemas con los comprobantes con el codigo de barra vigente hoy en dia en Afip .El problema lo tengo con las imagenes que contienen el Qr .
Al exportarlas a PDF  lo que se ve en lugar del QR es una imagen en blanco de color verde .
Lo raro es que en la vista previa del reporte la imagen del qr se ve perfecta . Utilizando la impresora virtual PDF CReator genera el pdf con las imagenes correctas .
La version de  XFRX que tengo es del año 2008 . Puede que tenga que ver con que la misma es bastante antigua ?? desde ya muchas gracias

Zarlu

unread,
Jan 19, 2021, 3:27:34 PM1/19/21
to Comunidad de Visual Foxpro en Español
Buenas tardes ciclon2506 !

En mis pruebas recientes XFRX acepta png, jpg y bmp
Quizá deberías probar de inicio actualizando XFRX

Suerte
zarlu
Chetumal, Quintana Roo, México

Allan Raúl Acuña

unread,
Jan 19, 2021, 3:45:25 PM1/19/21
to Comunidad de Visual Foxpro en Español
La version 2008 del XFRX, no exporta bien los PDF con imagenes PNG, convierte la imagen a JPG y con eso se soluciona.

De: publice...@googlegroups.com <publice...@googlegroups.com> en nombre de Zarlu <not...@prodigy.net.mx>
Enviado: martes, 19 de enero de 2021 14:27
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Asunto: [vfp] Re: problemas al exportar a pdf reporte con imagen de QR
 
--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/fef63efe-8928-4d3c-878f-e706d8f9559cn%40googlegroups.com.

Allan Raúl Acuña

unread,
Jan 19, 2021, 3:48:16 PM1/19/21
to Comunidad de Visual Foxpro en Español


De: publice...@googlegroups.com <publice...@googlegroups.com> en nombre de Zarlu <not...@prodigy.net.mx>
Enviado: martes, 19 de enero de 2021 14:27
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Asunto: [vfp] Re: problemas al exportar a pdf reporte con imagen de QR
 

Jorge

unread,
Jan 19, 2021, 5:00:16 PM1/19/21
to publicesvfoxpro
Desde ya gracias por la ayuda .ya probe pasar la imagen de bmp a jpg ( lo hice abriendo el bmp con paint y haciendo un guardar como a jpg .no se si con esto alcanza ) y obtengo el mismo resultado mencionado anteriormente . Saludos 

Roxana

unread,
Feb 22, 2021, 7:20:20 PM2/22/21
to Comunidad de Visual Foxpro en Español
Hola! Uso XFRX version 14.3.
En el reporte tengo una imagen que es BMP. En el preview del reporte se ve perfecta. Pero cuando se genera el PDF pone la imagen en blanco.
Ya probe y si la imagen en JPG funciona bien. Conocen si tiene alguna opcion esta libreria para que soporte el BMP.
Y sino, tienen algun codigo rapido para compartir que convierta el BMP a PDF.
Muchas gracias!!

Saludos,

Roxana

Zarlu

unread,
Feb 23, 2021, 4:15:47 PM2/23/21
to Comunidad de Visual Foxpro en Español
Buenas tardes Roxana!

Debes actualizar la versión. Probé con la 19.1 sin problemas para .bmp
Ye consideraste usar FoxyPreviewer?

zarlu
Chetumal, Quintana Roo, México

Roxana Demattei

unread,
Feb 23, 2021, 6:25:52 PM2/23/21
to publice...@googlegroups.com

El problema es que tengo paga esta versión. Si la actualizo seguro me va a cobrar y en u$S… pero de todas formas lo voy a evaluar.

 

Por el momento lo solucione usando el Metodo:

 

      m.lcQRImage = loFbc.QRBarcodeImage(lcQR, cArchijpg , 2,1)

 

De la librería FoxBarcodeQR

 

Este método te permite en el último parámetro decir que genere un JPG en vez de un BMP.

Y hasta ahora imprimo el QR en 4x4 cm y se lee bien. Aunque me gustaría poderlo imprimir mas chicos para que quede mejor en la factura.

 

 

Roxana

Has recibido este mensaje porque estás suscrito a un tema del grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/publicesvfoxpro/_i9Ox9UW0v4/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/fb9a6e66-9539-4120-96ce-97064a9b375fn%40googlegroups.com.

Luis Maria Guayan

unread,
Feb 24, 2021, 7:30:42 AM2/24/21
to Comunidad de Visual Foxpro en Español
Ojo Roxana que el método  QRBarcodeImage() de FoxBarcodeQR utiliza la librería  BarCodeLibrary.dll que no soporta mas de 255 caracteres. Si bien te genera el código QR, está truncado a 255 caracteres.

Luis María Guayán
Tucumán, Argentina
_______________________________

Comunidad Visual FoxPro en Español
http://comunidadvfp.blogspot.com

Roxana Demattei

unread,
Feb 24, 2021, 7:36:51 AM2/24/21
to publice...@googlegroups.com

Perdón mi ignorancia, pero  eso en que afectaría?

Luis Maria Guayan

unread,
Feb 24, 2021, 8:27:17 AM2/24/21
to publice...@googlegroups.com

Roxana Demattei

unread,
Feb 24, 2021, 8:30:31 AM2/24/21
to publice...@googlegroups.com

Zuru,

 

Si tienes  la versión 19.1 de XFX me la podrían compartir?

Muchas gracias!

 

Saludos,

 

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Zarlu


Enviado el: martes, 23 de febrero de 2021 18:16

Has recibido este mensaje porque estás suscrito a un tema del grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/publicesvfoxpro/_i9Ox9UW0v4/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/fb9a6e66-9539-4120-96ce-97064a9b375fn%40googlegroups.com.

Roxana Demattei

unread,
Feb 24, 2021, 10:23:45 AM2/24/21
to publice...@googlegroups.com

Ok. Necesito algo que convierta el BMP a JPG entonces… O la versión 19 del XFRX…

Si alguien me puede ayudar con esto…

 

Muchas gracias!

 

Saludos,

 

Roxana

Luis Maria Guayan

unread,
Feb 24, 2021, 12:36:46 PM2/24/21
to publice...@googlegroups.com

Si al momento de emitir la factura electrónica tienes conexión de internet, puedes utilizar la API de Google para generar la imagen del código QR y tipo PNG.

Paso nuevamente un ejemplo:


lc = [https://www.afip.gob.ar/fe/qr/?p=eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMC0xMyIsImN1aXQiOjMwMDAwMDAwMDA3LCJwd]
lc = lc + [G9WdGEiOjEwLCJ0aXBvQ21wIjoxLCJucm9DbXAiOjk0LCJpbXBvcnRlIjoxMjEwMCwibW9uZWRhIjoiRE9MIiwiY3R6Ijo2NSw]
lc = lc + [idGlwb0RvY1JlYyI6ODAsIm5yb0RvY1JlYyI6MjAwMDAwMDAwMDEsInRpcG9Db2RBdXQiOiJFIiwiY29kQXV0Ijo3MDQxNzA1NDM2NzQ3Nn0=]

*-- Genero la imagen
lcFile = GoogleApiQRBarcodeImage(lc)

*-- Abro imagen con la app predeterminada
loShell = CREATEOBJECT("Shell.Application")
loShell.ShellExecute(lcFile)
loShell = NUll

*---------------------------------------------------------
* PROCEDURE GoogleApiQRBarcodeImage()
*---------------------------------------------------------
* Genero la imagen del código QR con la API de Google
*  Parametetros:
*   tcText: Texto a codificar
*   tcFile: Nombre y ruta del archivo de imagen (opcional)
*   tnSize: tamaño en pixeles (opcional)
* Ej:
*   ? GoogleApiQRBarcodeImage("https://comunidadvfp.blogspot.com/")
*---------------------------------------------------------
PROCEDURE GoogleApiQRBarcodeImage(tcText, tcFile, tnSize)
  LOCAL lcType, lcFolder, lcUrl

  IF VARTYPE(m.tnSize) <> "N"
    m.tnSize = 198 && Tamaño por omisión = 198 x 198 pixels
  ENDIF

  m.tnSize = MIN(MAX(m.tnSize, 72), 540)
  m.lcType = "PNG" && Solo PNG
  m.lcUrl = [https://chart.googleapis.com/chart?chs=] + ;
    TRANSFORM(m.tnSize) + [x] + TRANSFORM(m.tnSize) + ;
    [&cht=qr&chl=] + tcText

  IF EMPTY(m.tcFile)
    m.lcFolder = ADDBS(SYS(2023))
    IF NOT DIRECTORY(m.lcFolder)
      MD (m.lcFolder)
    ENDIF
    m.tcFile = FORCEEXT(m.lcFolder + SYS(2015), m.lcType)
  ELSE
    m.lcFolder = JUSTPATH(m.tcFile)
    IF NOT DIRECTORY(m.lcFolder) AND NOT EMPTY(m.lcFolder)
      MD (m.lcFolder)
    ENDIF
    m.tcFile = FORCEEXT(m.tcFile, m.lcType)
  ENDIF

  *-- Declaro la función URLDownloadToFile
  DECLARE LONG URLDownloadToFile IN URLMON.DLL ;
    LONG, STRING, STRING, LONG, LONG

  ERASE (m.tcFile)
  IF 0 = URLDownloadToFile(0, m.lcUrl, m.tcFile, 0, 0)
    RETURN m.tcFile
  ELSE
    RETURN ""
  ENDIF
ENDPROC


Luis María Guayán
Tucumán, Argentina
_______________________________
Comunidad Visual FoxPro en Español
http://comunidadvfp.blogspot.com

Ernesto

unread,
Feb 24, 2021, 2:21:19 PM2/24/21
to Comunidad de Visual Foxpro en Español
Hola, Luis María
Entonces, para superar la limitación de los 255 caracteres habría que comprar la librería QRCode.dll y usar la versión 2 de Foxbarcode?
Porque el texto de los QR de Factura electrónica es de más de 300 caracteres siempre....
O bien usar la Api de Google. 
Me parece mejor la librería, da más independencia a la solución...
Ernesto Luque
Prosoft Informática

Roxana Demattei

unread,
Feb 24, 2021, 3:57:53 PM2/24/21
to publice...@googlegroups.com

Y alguien sabe maso que costo tiene ese librería?

Ernesto

unread,
Feb 24, 2021, 4:32:23 PM2/24/21
to Comunidad de Visual Foxpro en Español
Investigando un poco más, llego a la conclusión de que no haría falta comprar nada. Estaría todo incluido en la versión actualizada del proyecto (versión 2):  
Y hay que usar el método     FullQRCodeImage  (...)   que no tiene la limitación de los 255 caracteres.  
Está bien?
Saludos
Ernesto

Cesar Luque

unread,
Feb 24, 2021, 7:01:11 PM2/24/21
to Comunidad de Visual Foxpro en Español
Con visual 9, me pasa lo mismo, pero lo mas raro es que el pdf lo genera bien con la imagen del qr.bmp, usando pdflistener para generar el pdf ( desde el ambiente de desarrollo ).
Iguales condiciones, pero desde el runtime ( .exe ), no incrusta el bmp en el pdf


Cesar Luque

unread,
Feb 24, 2021, 8:02:16 PM2/24/21
to Comunidad de Visual Foxpro en Español
Con estas lineas de codigo logre pasar el bmp devuelto por la dll a jpg y al usarlo en el reporte, se ve bien en el pdf

PROCEDURE BMP_TO_JPG
LPARAMETERS lcSource
lcDestination = JUSTPATH(lcSource) + "\_" + JUSTSTEM(lcSource)
LOCAL loImage AS GpImage OF HOME() + ffc/_gdiplus.vcx
loImage = NEWOBJECT("GpImage", HOME() + "ffc/_gdiplus.vcx")
loImage.CreateFromFile(lcSource)
loImage.SaveToFile(lcDestination + ".jpg","image/jpeg", "quality=70")
loImage=null
RETURN lcDestination

Todo esto en visual 9.

Tomado de 

Esteban Herrero

unread,
Feb 24, 2021, 11:38:13 PM2/24/21
to publice...@googlegroups.com

Hola Luis

Pero si el método FullQRCodeImage???

m.lcQRImage = loFbc.FullQRCodeImage(lcQR, , 200)

Ahi si la variable lcQR puede tener mas de 255 caracteres o estoy mal.

Saludos

Esteban.

Roxana Demattei

unread,
Feb 25, 2021, 7:12:39 AM2/25/21
to publice...@googlegroups.com

Hola! Sí. Este método (FullQRCodeImage  ) fue lo primero que utilice  pero el problema es que genera solo BMP y la librería que uso para generar el PDF solo utiliza JPG (XFRX).

Así que de ahí el debate… Si hay que usar si o si este método FullQRCodeImage, necesito alguna rutina que convierta la imagen a JPG. O la Nueva versión de XFRX 19 que si soporta BMP…

 

Alguien me puede ayudar con esto?

 

Saludos,

 

Roxana

Luis Maria Guayan

unread,
Feb 25, 2021, 7:27:25 AM2/25/21
to publice...@googlegroups.com

Hola, FoxBarcodeQR quedó con ambas librerias y con tres métodos que generan la imagen

El método QRBarcodeImage() utiliza la librería  BarCodeLibrary.dll que tiene la limitación de los 255 caracteres

A partir de la versión 2.0, FoxBarcodeQR tiene dos nuevos métodos FullQRCodeImage() y FastQRCodeImage() que utilizan la librería QRCodeLib.dll versión 0.1b que se encuentra en los archivos de descarga de FoxBarcodeQR_v_2_00 (https://github.com/VFPX/FoxBarcodeQR/blob/master/FoxBarcodeQR_v_2_00). Esta librería no tiene la limitación de los 255 caracteres.

Mas info en la página de la documentación en español de FoxBarcode y FoxBarcodeQR: https://sites.google.com/site/foxbarcode/foxbarcodeqr


Luis María Guayán
Tucumán, Argentina
_______________________________
Comunidad Visual FoxPro en Español
http://comunidadvfp.blogspot.com

Roxana Demattei

unread,
Feb 25, 2021, 7:58:57 AM2/25/21
to publice...@googlegroups.com

El problema es que la función .FullQRCodeImage que maneja mas de 255 caracteres genera únicamente BMP y yo necesito que genere JPG por como están armados mis reportes a PDF. De hay venia la consulta…

 

Saludos,

Luis Maria Guayan

unread,
Feb 25, 2021, 8:06:29 AM2/25/21
to publice...@googlegroups.com

Con cadenas de mas de 255 caracteres y formato PNG se puede utilizar la API de Google.

Veré si este fin de semana con algo de tiempo, a esta misma función la agrego a FoxBarcodeQR como una tercera opcion para la generación de códigos QR y libero una nueva version

Atte.

Luis María Guayán
Tucumán, Argentina
_______________________________
Comunidad Visual FoxPro en Español
http://comunidadvfp.blogspot.com

Esteban Herrero

unread,
Feb 25, 2021, 8:07:33 AM2/25/21
to publice...@googlegroups.com

Hola Roxana.

No sé como funciona XFRX, pero no tiene la posibilidad con el reporte común de definir una variable private y luego asignas dentro del reporte esa variable a un objeto imagen, sin necesidad de perder todo el tiempo de armar un imagen bmp luego convertirla en JPG y luego insertarla en el objeto imagen del reporte. Con el reporte común de VPF yo sólo defino la varible como private, la asigno al objeto imagen y luego envio la impresion y al mismo tiempo armo el pdf así queda de respaldo de la fc.

Saludos

Esteban

Roxana Demattei

unread,
Feb 25, 2021, 9:08:45 AM2/25/21
to publice...@googlegroups.com

Gracias Luis!

Lo malo de esta función es que tenes que tener conexión a internet si o si….

Y aveces puede que el usuario quiera re imprimir un formulario… Esta bueno que no necesite internet para eso.

 

Saludos,

 

Ing. Roxana Demattei

Zarlu

unread,
Feb 25, 2021, 9:34:42 AM2/25/21
to Comunidad de Visual Foxpro en Español
Buenos días Roxana!

No tengo la versión libre de XFRX. Hago pruebas con demos.
La solución que propone Cesar Luque para convertir bmp a jpg es funcional.
En el mismo link que menciona refieren a irfanview igual funciona.

Para convertir a pdf existe también "PDF_In_The_Box", acepta bmp, pero es "manual" el armado

zarlu
Chetumal, Quintana Roo, México

Jose Antonio Blasco

unread,
Feb 25, 2021, 10:12:17 AM2/25/21
to Comunidad de Visual Foxpro en Español
Roxana, esta imagen es del manual de XFRX 14.3:

image.png

Por lo que entiendo que si que soporta imagenes BMP al generar el PDF.
Deberías revisar el manual y tu código para comparar.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2



Jose Antonio Blasco

unread,
Feb 25, 2021, 10:37:55 AM2/25/21
to Comunidad de Visual Foxpro en Español
Roxana, hace tiempo yo tambien usaba XFRX hasta que me pasé a Foxypreviewer.
Por si te sirve te adjunto el código que yo utilizaba, y unas notas adicionales:

loSession=Evaluate([xfrx("XFRX#INIT")])
*
lnRetval = loSession.SetParams("NomFichero.pdf",,.T.,,.T.,,"PDF")
If lnRetval = 0
  loDocument = Evaluate([xfrx("PDFL#INIT")])
  loDocument.attachToPDFDocument(loSession)
  loSession.ProcessReport("formato.frx")
  loSession.finalize
  *
Endif

Donde "NomFichero.pdf" es el nombre del PDF que quieres generar, y "formato.frx" el nombre del report.

Además, yo añadía los archivos:
xfrx.fxp
hndlib.dll
xfrxlib.fll, y
zlib.dll

junto con la aplicación, y EXCLUIDOS DEL PROYECTO.

Espero que te sirva.


Un saludo.
Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2


Reply all
Reply to author
Forward
0 new messages