Nueva libreria para generar PDFs

瀏覽次數:2,164 次
跳到第一則未讀訊息

Victor Espina

未讀,
2015年5月1日 晚上7:13:022015/5/1
收件者:publice...@googlegroups.com
Amigos, les comparto una libreria que termine hoy, la cual permite generar representaciones en PDF de cualquier reporte normal de Fox.  Lo novedoso de esta libreria es que puede trabajar tanto usando el modo normal con Ghostscript, como usando la impresora XPS Document Writer que viene de fabrica con Windows.   En modo XPS no se requiere instalar ninguna libreria ni impresora; solamente usar la impresora XPS Document Writer de Windows.

Pueden bajar la libreria desde aqui:


Para usar, coloquen el siguiente codigo al inicio de su programa principal:

DO pdf
IF
!pdf.autoSetup()
 WITH pdf
 
.oGS.cPrinter = "postscript printer"
 
.oGS.cGSFolder = "ubicacion de gs32dll.dll
  .oXPS.cPrinter = "
Impresora XPS"
 ENDWITH
 pdf.cMode = "
XPS"   && o "GS" para usar Ghostscript
ENDIF



La rutina autoSetup() intenta encontrar automaticamente las dependencias que necesita para cada metodo de conversion a PDF y luego selecciona el modo que este disponible (XPS o GS), priorizando XPS.  Esto quiere decir que si la rutina detecta que la generacion de PDF via XPS esta disponible, se configurara automaticamente para ese modo aun cuando el modo GS tambien este disponible.

Luego, para generar un PDF a partir de un reporte:

IF NOT pdf.create("salida.pdf",  "reporte.frx",  "cursorDatos")
  MESSAGEBOX
(pdf.cError)
  RETURN
ENDIF

En cualquier momento podemos verificar que modos estan disponibles:

IF pdf.oGS.isAvailable()
  MESSAGEBOX
("El modo Ghostscript esta disponible")
ENDIF


IF pdf
.oXPS.isAvailable()
  MESSAGEBOX
("El modo XPS esta disponible")
ENDIF


NOTA IMPORTANTE:
Cuando la rutina intenta configurar automaticamente el modo XPS, procede a crear el archivo GXPS.EXE si el mismo no existe en la ruta actual.  Ese archivo es requerido para convertir un archivo XPS en PDF y es perfectamente seguro.


Espero les sea de utilidad.


Saludos

Victor Espina




Jhonny Zambrana

未讀,
2015年5月1日 晚上10:51:272015/5/1
收件者:publice...@googlegroups.com
De la ano de un grande, nuevamente un aporte tan magnifico como impresionante..!!!

Gracias Victor, por tan generoso regalo...!!!

Eric Natareno Guerra

未讀,
2015年5月1日 晚上11:23:322015/5/1
收件者:publicesvfoxpro

Gracias Victor por compartir tu trabajo, sera de gran utilidad

Ultraton500

未讀,
2015年5月2日 凌晨12:29:082015/5/2
收件者:publice...@googlegroups.com
Hola Víctor, muchas gracias por tu generosidad, es un aporte muy valioso.
Ya me puse a probarlo y tengo una duda: en mi reporte utilizo mas de un cursor... puede ser que por esa razón no se me genere el archivo .pdf?

Saludos cordiales y felicitaciones,
Javier.

Victor Espina

未讀,
2015年5月2日 清晨7:37:442015/5/2
收件者:publice...@googlegroups.com
No deberia tener nada que ver. Solo debes asegurarte que el cursor principal este seleccionado o, en su lugar, pasar el 3er parametro al metodo Create().   Recuerda que puedes usar pdf.lError para verificar si ocurrio un error, y pdf.cError para ver la descripcion de dicho error.

Saludos

Victor

Esteban H

未讀,
2015年5月2日 上午9:58:182015/5/2
收件者:publice...@googlegroups.com

Hola Victor.

Primero q nada, gracias x compartir esta librería…

 

He querido hacer una prueba con tu librería.

Hice lo siguiente:

 

SET DEFAULT TO c:\pdf_VE

 

DO pdf

?!pdf.autoSetup()  && dio .F. entonces

pdf.oGS.cGSFolder = "C:\PROGRA~2\gs\gs9.06\bin\"

pdf.ogs.cPrinter = "CutePDF Writer"

pdf.CMODE = "GS"

 

pdf.create("salida.pdf",  "d:\FcContinua\Factura.frx", "d:\FcContinua\Factura.dbf") && no funcionó…

 

?!pdf.autoSetup() && sigue dando .F.

 

Consulté el método de descripción de error y dio lo siguiente:

 

Pdf.cError == Selected mode is not available at this time. Make sure your configurations is valid

 

Saludos.

 

Esteban.

Victor Espina

未讀,
2015年5月2日 下午1:01:242015/5/2
收件者:publice...@googlegroups.com、er...@yahoo.com.ar
Esteban, acabo de actualizar la libreria para incluir mas informacion relacioanda con isAvailable, a fin de que puedas saber porque un metodo especifico no esta disponible.  Descarga la nueva version desde el mismo enlace que publique inicialmente y luego intenta esto:

DO pdf
IF NOT pdf
.autoSetup()
 IF NOT pdf
.oGS.isAvailable()
 
?"GS", pdf.oGS.cError
 ENDIF
 IF NOT pdf
.oXPS.isAvailable()
 
?"XPS", pdf.oXPS.cError
 ENDIF
ENDIF


pdf
.oGS.cGSFolder = "C:\PROGRA~2\gs\gs9.06\bin"
pdf
.oGS.cPrinter = "Cute PDF Writer"
IF pdf
.oGS.isAvailable()
 
?"GS is available!"
ELSE
 
?"GS", pdf.oGS.cError
ENDIF




Victor

Victor Espina

未讀,
2015年5月2日 下午1:03:482015/5/2
收件者:publice...@googlegroups.com、er...@yahoo.com.ar
Tambien, donde haces:

pdf.create("salida.pdf",  "d:\FcContinua\Factura.frx", "d:\FcContinua\Factura.dbf") && no funcionó

debes hacer:

use d:\FcContinua\Factura.dbf
pdf.create("salida.pdf",  "d:\FcContinua\Factura.frx", "Factura") && no funcionó


De todas formas, voy a intentar incluir soporte para la forma en que tu lo hiciste, ya que veo que puede ser intituivo para los programadores pasar directamente el archivo de datos sin tener que abrirlo antes.

Saludos

Victor

Victor Espina

未讀,
2015年5月2日 下午1:27:032015/5/2
收件者:publice...@googlegroups.com、er...@yahoo.com.ar
Acabo de actualizar el archivo PDF.RAR para incluir un pequeno programa de pruebas llamado TEST.PRG, que les servira para verificar el funcionamiento de la libreria.  Simplemente extraigan todos los archivos a una carpeta y ejecuten:

DO TEST

Saludos

Victor

Allan Raúl Acuña

未讀,
2015年5月2日 下午3:04:482015/5/2
收件者:publice...@googlegroups.com

Hola Victor, me dice que los métodos GS y XPS, no están disponible.

Que debo hacer si deseo usar el XPS.

Saludos cordiales.

Lic. Allan Raúl Acuña
Analista Programador
msn= allan...@hotmail.com
skype= NicEasySoft
            +(505) 8 999 8950
Managua, Nicaragua
Centroamérica



Date: Sat, 2 May 2015 10:27:02 -0700
From: vesp...@gmail.com
To: publice...@googlegroups.com
CC: er...@yahoo.com.ar
Subject: Re: [vfp] Nueva libreria para generar PDFs

Esteban H

未讀,
2015年5月2日 下午3:27:212015/5/2
收件者:publice...@googlegroups.com

Te cuento.

Baje la modificación al ejecutar Test dio el primer error q no puedo abrir la tabla test

 

 

Suspendí la ejecución y abrí manualmente la tabla test y luego hice q continúe la ejecución y paró nuevamente casi al terminar

 

Y me armó un pdf q adjunto.

Luego ejecuté:

DO pdf
IF NOT pdf
.autoSetup()
 IF NOT pdf
.oGS.isAvailable()
 
?"GS", pdf.oGS.cError
 ENDIF
 IF NOT pdf
.oXPS.isAvailable()
 
?"XPS", pdf.oXPS.cError
 ENDIF
ENDIF


pdf
.oGS.cGSFolder = "C:\PROGRA~2\gs\gs9.06\bin"
pdf
.oGS.cPrinter = "Cute PDF Writer"
IF pdf
.oGS.isAvailable()
 
?"GS is available!"
ELSE
 
?"GS", pdf.oGS.cError
ENDIF

Y me puso en el Screen: GS Property oGS.cPrinter is empty

 

Luego quise hacer un pdf yo utilizando la librería y no me funcionó.

 

Saludos.

 

Esteban.

DO TEST

 

Saludos

 

Victor

image001.jpg
image002.jpg
TEST2_XPS.PDF

Ultraton500

未讀,
2015年5月2日 下午4:11:422015/5/2
收件者:publice...@googlegroups.com
Hola Víctor, hago lo siguiente

IF NOT pdf.create("AAAAAASalida.pdf""report2.frx""cur_ItemsACotizar")
  MESSAGEBOX(pdf.cError)
  MESSAGEBOX(pdf.lError)
  RETURN
ENDIF

y, a juzgar por el icono y tiempo de espera y porque no se muestra ninguno de los MESSAGEBOX(), entiendo que la librería trabaja pero el archivo "AAAAAASalida.pdf" y no aparece en toda la máquina.

Alguna idea de qué es lo que puedo estar haciendo mal?
Estoy usando Windows 7 64 bits.

Saludos cordiales,
Javier.

Victor Espina

未讀,
2015年5月2日 下午5:16:342015/5/2
收件者:publice...@googlegroups.com、er...@yahoo.com.ar
Esteban, por lo visto olvide actualizar el PDF.PRG en el RAR antes de subirlo.  Por favor, descargalo de nuevo y vuelve a intentar.  El mensajde "GS Property oGS.cPrinter is empty" ocurre despues del proceso de autoSetup, porque la libreria no fue capaz de autoconfigurar el modulo GS, aunque si logro configurar el modulo XPS y por eso fue posible generar el PDF.

Por favor, ejecuta de nuevo el TEST.PRG y me indicas que resultado te da.

Saludos

Victor

Victor Espina

未讀,
2015年5月2日 下午5:20:462015/5/2
收件者:publice...@googlegroups.com
Los requisitos son estos:

a) Para el modo GS
    - Tener instalado Ghostscript 9.05 o superior
    - Tener instalada una impresora Postscript o PDF

b) Para el modo XPS
    - Tener instalada la impresora "Windows XPS Document Writer"
    

El metodo autoSetup() intenta ubicar automaticamente los requisitos para cada modo, buscando dentro de las impresoras instaladas y la carpeta Archivos de Programa.  Si logra configurar alguno de los dos modos, el metodo devolvera .T..   Si devuelve .F. significa que no tienes los requisitos para ninguno de los modos o que la rutina no fue capaz de identificarlas automaticamente, por lo que debes pasar a indicar los valores manualmente:

a) Para modo GS:
    pdf.oGS.cGSFolder = "ubicacion de la carpeta que contiene el archivo GSDLL32.DLL
    pdf.oGS.cPrinter = "Nombre de la impresora PS"

b) Para modo XPS:
    pdf.oXPS.cPrinter = "Nombre de la impresora XPS"


Saludos

Victor


El sábado, 2 de mayo de 2015, 15:04:48 (UTC-4), ALLAN R. ACUÑA escribió:

Hola Victor, me dice que los métodos GS y XPS, no están disponible.

Que debo hacer si deseo usar el XPS.

Saludos cordiales.

Lic. Allan Raúl Acuña
Analista Programador
msn= allan...@hotmail.com
skype= NicEasySoft
            +(505) 8 999 8950
Managua, Nicaragua
Centroamérica



Date: Sat, 2 May 2015 10:27:02 -0700
From: vesp...@gmail.com

Victor Espina

未讀,
2015年5月2日 下午5:26:112015/5/2
收件者:publice...@googlegroups.com
El metodo Convert() del modo XPS no estaba validando que el archivo PDF se hubiera creado efectivamente.  Esa es la razon por la que no ves el error.  Por favor, descarga el RAR de nuevo y vuelve a probar.  Si aun no te genera el PDF, por favor enviame un RAR con el formato FRX y el cursor de datos que estas usando, para ver si es un problema con la libreria o es un tema de tu ambiente.

Victor

Ultraton500

未讀,
2015年5月2日 下午5:29:002015/5/2
收件者:publice...@googlegroups.com
Olvidé mencionar que lo único que aparece por unos instantes es esta pequeña ventana.

Saludos,
Javier.
ventanita.jpg

Esteban H

未讀,
2015年5月2日 下午5:38:352015/5/2
收件者:publice...@googlegroups.com

Victor.

Al ejecutar el Test dio lo siguiente:

Pero al querer hacer mi propio pdf no funcionó.

 

Hay algo q tendrías q ver, fíjate q el pdf q genera al hacer el test q es el q adjunto es de muy baja calidad.

Fijate si tomo tu reporte y lo envío a mi impresora pdf sin utilizar tu librería, observá la calidad del reporte, es completamente diferente. (Test.pdf). Es algo p mejorar.

 

Saludos.

 

Esteban.

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Victor Espina
Enviado el: sábado, 02 de mayo de 2015 06:17 p.m.
Para: publice...@googlegroups.com
CC: er...@yahoo.com.ar
Asunto: Re: [vfp] Nueva libreria para generar PDFs

 

Esteban, por lo visto olvide actualizar el PDF.PRG en el RAR antes de subirlo.  Por favor, descargalo de nuevo y vuelve a intentar.  El mensajde "GS Property oGS.cPrinter is empty" ocurre despues del proceso de autoSetup, porque la libreria no fue capaz de autoconfigurar el modulo GS, aunque si logro configurar el modulo XPS y por eso fue posible generar el PDF.

DO TEST

 

Saludos

 

Victor

image001.jpg
TEST2_XPS.PDF
test.pdf

Victor Espina

未讀,
2015年5月2日 晚上7:00:172015/5/2
收件者:publice...@googlegroups.com、er...@yahoo.com.ar
Ok. El resultado del test muestra claramente que la libreria no esta siendo capaz de encontrar una impresora Postscript para usar en el modo GS, por lo que solo genera el PDF en el modo XPS.  El tema de la resolucion se puede controlar usando la propiedad cResolution de los objetos oGS o XPS, pero estaba configurada a 300dpi por omision.  Hice el cambio para iniciarlizarla en 600dpi por omision e implemente ese parametro en el conversor XPS, por lo que ahora ambos metodos deben generar PDFs a 600dpi por defecto.

Descarga de nuevo el RAR e intenta probar con este codigo a ver si te genera el PDF en modo GS tambien:

DO pdf
pdf
.autoSetup()
pdf
.oGS.cPrinter = "CutePDF Writer"
IF NOT pdf
.create("test_gs.pdf", "test.frx", "test.dbf")
 
?pdf.cError
ELSE
 
?"Funciono!!"
ENDIF



Si te funciona, por favor ejecuta esto en la ventana de comandos de tu VFP y capturas la pantalla y me la envias:

CLEAR
LOCAL ARRAY xa
APRINTERS(xa,1)
DISP MEMO LIKE xa

Con esa informacion deberia ser capaz de entender porque la libreria no esta detectando la impresora CutePDF Writer.

Saludos

Victor

...

Esteban H

未讀,
2015年5月2日 晚上7:35:592015/5/2
收件者:publice...@googlegroups.com

Primer Pedido, resultado “Funciono!!”

 

Segundo Pedido

 

 

 

Saludos.

 

Esteban.

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Victor Espina
Enviado el: sábado, 02 de mayo de 2015 08:00 p.m.
Para: publice...@googlegroups.com
CC: er...@yahoo.com.ar
Asunto: Re: [vfp] Nueva libreria para generar PDFs

 

Ok. El resultado del test muestra claramente que la libreria no esta siendo capaz de encontrar una impresora Postscript para usar en el modo GS, por lo que solo genera el PDF en el modo XPS.  El tema de la resolucion se puede controlar usando la propiedad cResolution de los objetos oGS o XPS, pero estaba configurada a 300dpi por omision.  Hice el cambio para iniciarlizarla en 600dpi por omision e implemente ese parametro en el conversor XPS, por lo que ahora ambos metodos deben generar PDFs a 600dpi por defecto.

 

Descarga de nuevo el RAR e intenta probar con este codigo a ver si te genera el PDF en modo GS tambien:

 

DO pdf
pdf
.autoSetup()
pdf
.oGS.cPrinter = "CutePDF Writer"
IF NOT pdf
.create("test_gs.pdf", "test.frx", "test.dbf")
 
?pdf.cError
ELSE
 
?"Funciono!!"
ENDIF

 

Si te funciona, por favor ejecuta esto en la ventana de comandos de tu VFP y capturas la pantalla y me la envias:

 

CLEAR

LOCAL ARRAY xa

APRINTERS(xa,1)

DISP MEMO LIKE xa

 

Con esa informacion deberia ser capaz de entender porque la libreria no esta detectando la impresora CutePDF Writer.

 

Saludos

 

Victor

 


El sábado, 2 de mayo de 2015, 17:38:35 (UTC-4), Esteban H escribió:

Victor.

Al ejecutar el Test dio lo siguiente:

Pero al querer hacer mi propio pdf no funcionó.

 

Hay algo q tendrías q ver, fíjate q el pdf q genera al hacer el test q es el q adjunto es de muy baja calidad.

Fijate si tomo tu reporte y lo envío a mi impresora pdf sin utilizar tu librería, observá la calidad del reporte, es completamente diferente. (Test.pdf). Es algo p mejorar.

 

Saludos.

 

Esteban.

 

DO TEST

 

Saludos

 

Victor

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Victor Espina
Enviado el: viernes, 01 de mayo de 2015 08:13 p.m.
Para: publice...@googlegroups.com
Asunto: [vfp] Nueva libreria para generar PDFs

 

Amigos, les comparto una libreria que termine hoy, la cual permite generar representaciones en PDF de cualquier reporte normal de Fox.  Lo novedoso de esta libreria es que puede trabajar tanto usando el modo normal con Ghostscript, como usando la impresora XPS Document Writer que viene de fabrica con Windows.   En modo XPS no se requiere instalar ninguna libreria ni impresora; solamente usar la impresora XPS Document Writer de Windows.

 

Pueden bajar la libreria desde aqui:

 

 

Para usar, coloquen el siguiente codigo al inicio de su programa principal:

 

DO pdf
IF
!pdf.autoSetup()
 WITH pdf
 
.oGS.cPrinter = "postscript printer"
 
.oGS.cGSFolder = "ubicacion de gs32dll.dll
  .oXPS.cPrinter = "
Impresora XPS"
 ENDWITH
 pdf.cMode = "
XPS"   && o "GS" para usar Ghostscript
ENDIF

 

 

 

La rutina autoSetup() intenta encontrar automaticamente las dependencias que necesita para cada metodo de conversion a PDF y luego selecciona el modo que este disponible (XPS o GS), priorizando XPS.  Esto quiere decir que si la rutina detecta que la generacion de PDF via XPS esta disponible, se configurara automaticamente para ese modo aun cuando el modo GS tambien este disponible.

...

image001.jpg

Victor Espina

未讀,
2015年5月2日 晚上8:56:322015/5/2
收件者:publice...@googlegroups.com、er...@yahoo.com.ar
Ya vi por que no reconoce el CutePDF Writer.    Por favor, baja de nuevo el RAR y corre de nuevo el test para ver si ahora funciona el modo GS tambien.

Saludos

Victor
...

Esteban H

未讀,
2015年5月2日 晚上9:04:292015/5/2
收件者:publice...@googlegroups.com

Funcionó!!!

 

Mensaje del test:

 

pdf.create("test_gs.pdf", "test.frx", "test.dbf")

y adjunto Pdf Creado.

 

Saludos.

 

Esteban.

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Victor Espina
Enviado el: sábado, 02 de mayo de 2015 09:57 p.m.
Para: publice...@googlegroups.com
CC: er...@yahoo.com.ar
Asunto: Re: [vfp] Nueva libreria para generar PDFs

 

Ya vi por que no reconoce el CutePDF Writer.    Por favor, baja de nuevo el RAR y corre de nuevo el test para ver si ahora funciona el modo GS tambien.

 

Saludos

 

Victor



El sábado, 2 de mayo de 2015, 19:35:59 (UTC-4), Esteban H escribió:

Primer Pedido, resultado “Funciono!!”

 

Segundo Pedido

 

 

 

Saludos.

 

Esteban.

DO TEST

 

Saludos

 

Victor

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Victor Espina
Enviado el: viernes, 01 de mayo de 2015 08:13 p.m.
Para: publice...@googlegroups.com
Asunto: [vfp] Nueva libreria para generar PDFs

 

Amigos, les comparto una libreria que termine hoy, la cual permite generar representaciones en PDF de cualquier reporte normal de Fox.  Lo novedoso de esta libreria es que puede trabajar tanto usando el modo normal con Ghostscript, como usando la impresora XPS Document Writer que viene de fabrica con Windows.   En modo XPS no se requiere instalar ninguna libreria ni impresora; solamente usar la impresora XPS Document Writer de Windows.

 

Pueden bajar la libreria desde aqui:

 

 

Para usar, coloquen el siguiente codigo al inicio de su programa principal:

 

DO pdf
IF
!pdf.autoSetup()
 WITH pdf
 
.oGS.cPrinter = "postscript printer"
 
.oGS

...

image001.jpg
TEST_GS.PDF

Victor Espina

未讀,
2015年5月2日 晚上9:19:392015/5/2
收件者:publice...@googlegroups.com、er...@yahoo.com.ar
Excelente!!!  La capacidad de generar un PDF sin requerir un componente previamente instalado facilitara mucho esta tarea.

Saludos

Victor
...

Angel Dario Rodriguez

未讀,
2015年5月3日 上午11:02:152015/5/3
收件者:publice...@googlegroups.com
Mestro Victo, ejecuto la ultima versión de la librería y me devuelve el siguiente mensaje :

Selected Mode is not available at this time. Make sure your configuration is valid.

Tento instalado tanto el ghostscrip 9 para 32 bits, asi como el XPS writer.

Que podría faltarme aun?

Victor Espina

未讀,
2015年5月3日 中午12:18:302015/5/3
收件者:publice...@googlegroups.com
Ejecuta esto y dime que obtienes:

DO pdf
pdf
.autoSetup()
pdf
.isModeAvailable("GS")
?pdf.cError
pdf
.isModeAvailable("XPS")
?pdf.cError




Victor
...

Angel Dario Rodriguez

未讀,
2015年5月3日 下午1:28:132015/5/3
收件者:publice...@googlegroups.com
ahí están los mensajes.
pdf_mensaje.docx

Angel Dario Rodriguez

未讀,
2015年5月3日 下午1:37:122015/5/3
收件者:publice...@googlegroups.com
No retorna numero ni código de error y crea el archiv pdf, pero vacio.

Victor Espina

未讀,
2015年5月3日 晚上7:19:012015/5/3
收件者:publice...@googlegroups.com
Los mensajes que me enviaste no son los que genera la libreria sino unos tuyos.  Necesito que ejecutes el codigo que te envie TAL CUAL y me indiques que aparece en pantalla.  Tambien seria util si me envias tu formato de reporte y una copia de los datos necesarios para poder probar yo.

Te copio de nuevo el codigo:

DO pdf
pdf
.autoSetup()
pdf
.isModeAvailable("GS")
?pdf.cError
pdf
.isModeAvailable("XPS")
?pdf.cError




Victor
...

Jose Antonio Blasco

未讀,
2015年5月4日 清晨6:39:042015/5/4
收件者:Comunidad de Visual Foxpro en Español
Victor, acabo de bajar tu libreria, y probar el "test.prg" y me muestra lo siguiente:

Imágenes integradas 1
y no me genera ningún pdf.

Tambien he ejecutado las lineas que le dices a Angel Darío, y no me muestra ningún tipo de mensaje.

Con respecto a las impresoras, te envio un archivo con toda la lista.

Un saludo.




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

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo
myprinters.txt

Victor Espina

未讀,
2015年5月4日 上午8:53:232015/5/4
收件者:publice...@googlegroups.com
Estas ejecutando sobre VFP9 ?   Por el mensaje, el error se esta produciendo al ejecutar el reporte.

Victor
...

Jose Antonio Blasco

未讀,
2015年5月4日 上午9:14:022015/5/4
收件者:Comunidad de Visual Foxpro en Español
Si Victor, VFP9 SP2  Vers.7423

Lo acabo de probar de nuevo y da lo mismo.

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

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Victor Espina

未讀,
2015年5月4日 上午9:44:482015/5/4
收件者:publice...@googlegroups.com
La verdad no se que pueda ser.  Acabo de probar forzando el uso de REPORT FORM en lugar de LISTENER, y la rutina funciona correctamente en ese modo tambien.  Por favor, ejecuta este codigo y dime que resyultado arroja:

do pdf
pdf
.autoSetup()
?"PSPrinter", pdf.oGS.cPrinter
?"GSDLL", pdf.oGS.cGSFolder
?"XPSPrinter", pdf.oXPS.cPrinter
?"GXPS", pdf.oXPS.cGXPS
?"CURDIR", CURDIR()




Saludos

Victor

...

Jose Antonio Blasco

未讀,
2015年5月4日 上午9:54:172015/5/4
收件者:Comunidad de Visual Foxpro en Español
Esto me da Victor:

Imágenes integradas 1


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

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Jose Antonio Blasco

未讀,
2015年5月4日 上午10:30:472015/5/4
收件者:Comunidad de Visual Foxpro en Español
Victor he hecho diferentes pruebas que paso a comentarte.

Primero, la carpeta donde estaba haciendo prueba, parece tener problemas por ser demasiado larga la ruta, ya que he copiado todo a "C:\descargas\pdf", y aqui los resultados son diferentes.
Segundo, parece que tengo 2 impresoras capaces, en teoria, de generar Ghostscript, la "Nitro PDF Creator",  y la "ES8460 MFP(PS)", siendo la primera la que toma por defecto tu librería, y que al parecer no funciona bien.  Si obligo a la "ES8460 MFP(PS)" entonces funciona correctamente.
Tercero, yo también encuentro diferencia de calidad entre el PDF de GhostScript y el de XPS, y revisando los PDF's resultantes, veo que el de GS incrusta las fuentes (Arial) y el de XPS no.  Tal vez eso te diga algo.

un saludo.



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

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Victor Espina

未讀,
2015年5月4日 上午10:32:362015/5/4
收件者:publice...@googlegroups.com
Creo que el problema esta en la ubicacion donde estas probando, pues contiene espacios en blanco.  Acabo de actualizar el RAR con una nueva version que toma en cuenta esta posibilidad.  Tambien incluye una version extendida de TEST.PRG que produce informacion mas detallada.

Por favor, descarga el nuevo RAR e intenta de nuevo.


Saludos

Victor
...

Victor Espina

未讀,
2015年5月4日 上午11:07:032015/5/4
收件者:publice...@googlegroups.com
Probaste que la nueva version?  Esta version deberia resolver el problema de la ruta con espacios.   Ahora, con respecto a la calidad del PDF en modo XPS la verdad no esta en mi control.   Yo solo invoco la utilidad GXPS (de la misma gente de Ghostscript) y le paso el parametro -r con la resolucion (por defecto, 600 dpi).  

Saludos

Victor
...

Angel Dario Rodriguez

未讀,
2015年5月4日 晚上7:12:102015/5/4
收件者:publice...@googlegroups.com
Maestro Víctor, le adjunto el mensaje de error, el formato de error y la data a ser impresa.
cccr0011_a.FRT
cccr0011_a.frx
COMODIN1.DBF
ERROR PDF.docx

Jose Antonio Blasco

未讀,
2015年5月5日 凌晨3:18:262015/5/5
收件者:Comunidad de Visual Foxpro en Español
Victor, disculpa que ayer no pudiera contestar.  Se me complicó la tarde.
Acabo de bajar el RAR y es el mismo que había.   Tanto el PDF.PRG como el TEST.PRG



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

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Victor Espina

未讀,
2015年5月5日 上午8:28:132015/5/5
收件者:publice...@googlegroups.com
El problema no esta en la rutina sino en tu reporte. Tienes activada la opcion "Printer Environment" y eso es lo que causa el problema.  Te anexo el PDF que genere una vez corregido ese punto.

Saludos

Victor

...
comodin1.pdf

Angel Dario Rodriguez

未讀,
2015年5月5日 上午9:09:492015/5/5
收件者:publice...@googlegroups.com
Gracias Maestro, lo verificare.

Jose Antonio Blasco

未讀,
2015年5月5日 上午9:20:332015/5/5
收件者:Comunidad de Visual Foxpro en Español
Victor, la descarga desde el enlace del primer post de este hilo??



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

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Victor Espina

未讀,
2015年5月5日 上午11:44:432015/5/5
收件者:publice...@googlegroups.com
Correcto.  Acabo de actualizar el RAR con la version 1.3, la cual incluye:

1. Mejora en la rutina de autoSetup para el modo GS, a fin de localizar mas rapidamente el archivo GSDLL32.DLL
2. Nueva validacion en el metodo Create() de la clase pdf, para detectar posibles problemas en el FRX que impidan la generacion del PDF (como el tema del Printer Environment).
3. Nueva propiedad lCheckFRX que permite desactivar la validacion del FRX

Saludos

Victor Espina
...

Jose Antonio Blasco

未讀,
2015年5月6日 凌晨3:52:142015/5/6
收件者:Comunidad de Visual Foxpro en Español
Victor, acabo de probar la versión 1.3

Como ya te dije, tengo instaladas 2 impresoras capaces, en teoría de generar GhostScript y me tomaba una que fallaba.  Con esta versión me la detecta, pero no activa el modo porque la carpeta "gs.folder" esta vacía, lo que me parece correcto, y pasa a activar y trabajar en modo XPS, generando el PDF correctamente.

Sigue estando el problema de las rutas con espacios o largas, no se cual es el problema concretamente.

Por último, la calidad del pdf generado, creo que no depende tanto de la resolución, sino del tema de fuentes de letra, que en modo GS quedan incrustadas en el PDF, y en modo XPS no, por lo que entiendo que tomará una fuente predeterminada que será de peor calidad.

Un saludo.

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

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Victor Espina

未讀,
2015年5月6日 下午4:15:512015/5/6
收件者:publice...@googlegroups.com、jabl...@gmail.com
Es probable que tengas razon con lo del XPS.  GS tiene la ventaja entonces en el sentido que incrusta las fuentes en el PDF, pero XPS tiene la ventaja de no requerir la instalacion de un producto adicional.  Hare pruebas con el tema de las rutas con espacios, para ver si puedo solucionarlo.

Victor


...

abauzah

未讀,
2015年5月7日 下午4:42:332015/5/7
收件者:publice...@googlegroups.com、vesp...@gmail.com
Buenas tardes Señores

Antes que nada Muchas Gracias por compartir estos trabajos, que definitivamente se hacen con el animo de aportar grandes cosas al grupo, soy de México y los compañeros del Grupo de Factura Electrónica saben a lo que me refiero acerca del Maestro Victor.

Y acabo de descargar la librería, copie a una carpeta nueva "C:\PDF" ejecute el test y genero el PDF correctamente, tengo instaladas Nitro PDF Creator y Microsoft XPS Document Writer

Saludos a todos


El viernes, 1 de mayo de 2015, 18:13:02 (UTC-5), Victor Espina escribió:
Amigos, les comparto una libreria que termine hoy, la cual permite generar representaciones en PDF de cualquier reporte normal de Fox.  Lo novedoso de esta libreria es que puede trabajar tanto usando el modo normal con Ghostscript, como usando la impresora XPS Document Writer que viene de fabrica con Windows.   En modo XPS no se requiere instalar ninguna libreria ni impresora; solamente usar la impresora XPS Document Writer de Windows.

Pueden bajar la libreria desde aqui:


Para usar, coloquen el siguiente codigo al inicio de su programa principal:

DO pdf
IF
!pdf.autoSetup()

 WITH pdf
 
.oGS.cPrinter = "postscript printer"

 
.oGS.cGSFolder = "ubicacion de gs32dll.dll
  .oXPS.cPrinter = "
Impresora XPS"
 ENDWITH
 pdf.cMode = "
XPS"   && o "GS" para usar Ghostscript
ENDIF



La rutina autoSetup() intenta encontrar automaticamente las dependencias que necesita para cada metodo de conversion a PDF y luego selecciona el modo que este disponible (XPS o GS), priorizando XPS.  Esto quiere decir que si la rutina detecta que la generacion de PDF via XPS esta disponible, se configurara automaticamente para ese modo aun cuando el modo GS tambien este disponible.

Luego, para generar un PDF a partir de un reporte:

IF NOT pdf.create("salida.pdf",  "reporte.frx",  "cursorDatos")
  MESSAGEBOX
(pdf.cError)
  RETURN
ENDIF

En cualquier momento podemos verificar que modos estan disponibles:

IF pdf.oGS.isAvailable()
  MESSAGEBOX
("El modo Ghostscript esta disponible")
ENDIF


IF pdf
.oXPS.isAvailable()
  MESSAGEBOX
("El modo XPS esta disponible")
ENDIF


NOTA IMPORTANTE:
Cuando la rutina intenta configurar automaticamente el modo XPS, procede a crear el archivo GXPS.EXE si el mismo no existe en la ruta actual.  Ese archivo es requerido para convertir un archivo XPS en PDF y es perfectamente seguro.


Espero les sea de utilidad.


Saludos

Victor Espina




Esteban H

未讀,
2015年5月7日 晚上7:28:562015/5/7
收件者:publice...@googlegroups.com

Hola Víctor.

Viendo ahora las modificaciones q has hecho, se ha simplificado la detección de las impresoras, pero siempre dejando como prioridad la XPS.

Ahora si yo quisiera hacer todo manual, dado q me gusta la definición de impresión q da la impresora GS, como sería la sintaxis a usar sin usar el Test.

Sería algo así:

 

DO pdf
pdf
.isModeAvailable("GS")
?pdf.cError

pdf.oGS.cGSFolder = "C:\PROGRA~2\gs\gs9.06\bin\"

pdf.ogs.cPrinter = "CutePDF Writer"

pdf.CMODE = "GS"

 

Me gustaría tener tu consejo de cómo hacer en forma manual la configuración.

 

 

Saludos.

 

Esteban.

Victor Espina

未讀,
2015年5月7日 晚上7:37:282015/5/7
收件者:publice...@googlegroups.com、er...@yahoo.com.ar、er...@yahoo.com.ar
Fijate, en teoria seria asi:

DO pdf
IF NOT pdf
.oGS.autoSetup()
 
?"La generacion de PDF por GS no esta disponible"
 RETURN
ENDIF
pdf
.cMode = "GS"



El tema es que el metodo autoSetup() puede llevar algo de tiempo.  En la ultima version la busqueda se optimiza para buscar primero especificamente en las carpetas mas comunes donde se instala el GS, pero si no lo encuentra ahi hara una busqueda completa dentro de  "Archivos de programa", lo cual puede tomar harto tiempo.  Si tu conoces de antemano la ubicacion de Ghostscript, puedes evitar la llamada a autoSetup configurando tu manualmente los parametros del modo GS:

DO pdf
pdf
.oGS.cGSFolder = "ruta a la carpeta GS"
pdf
.oGS.cPrinter = "Impresora PS"
pdf
.cMode = "GS"



Otra opcion es configurar solo la carpeta GS (que es lo que mas puede tardar) y dejar que la rutina encuentre automaticamente la impresora:

DO pdf
pdf
.oGS.cGSFolder = "ruta a la carpeta GS"
IF NOT pdf
.oGS.autoSetup()
 
?"No se encontro una impresora Postscript para la generacion de PDFs"
ENDIF



Esto es porque la rutina de autoSetup() detecta si la carpeta GS o la impresora ya fueron definidas, y evitar hacer busquedas innecesarias.


Saludos

Victor

Esteban H

未讀,
2015年5月7日 晚上8:12:072015/5/7
收件者:publice...@googlegroups.com

Gracias Victor.

En la última versión q subiste igualmente ha mejorado mucho la calidad del pdf en XPS y ni hablar de no necesitar nada instalado p poder generarlo.

Seguiré atento a los avances q irás haciendo a la librería con las pruebas de los demás.

 

Saludos.

 

Esteban.

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Victor Espina
Enviado el: jueves, 07 de mayo de 2015 08:37 p.m.
Para: publice...@googlegroups.com; er...@yahoo.com.ar
CC: er...@yahoo.com.ar
Asunto: Re: [vfp] Nueva libreria para generar PDFs

 

Fijate, en teoria seria asi:

Sergio Ps

未讀,
2015年5月29日 清晨7:30:342015/5/29
收件者:publice...@googlegroups.com、vesp...@gmail.com
Buenas tardes Víctor, he estado probando tu librería y va de fábula pero me pregunto si es posible añadir un "userpassword" a los pdf que se generan o si puedes echarme una mano para poder implementarlo

Gracias y saludos!!

elkin dario uribe torres

未讀,
2015年5月29日 上午11:38:472015/5/29
收件者:publice...@googlegroups.com
Buenos dias Victor

Ensaye la libreria y funciona perfecto, lo que no he podio lograr (sera por falta de conocimiento) es que la generacion como tal (lo hago por medio del Foxy) se realiza en una Hoja A4 y con la libreria tuya siempre la genera en hoja tamaño carta.  Como se podra hacer esto al igual que colocar un termometro para visualizar el avance de la misma.


Saludos


Elkin Uribe

Victor Espina

未讀,
2015年5月29日 下午2:23:562015/5/29
收件者:publice...@googlegroups.com、sergio...@gmail.com、vesp...@gmail.com
Me parecio interesante lo que pides.  Estuve leyendo la documentacion de Ghostscript y efectivamente incluye una opcion para incluir un password:

-sPDFPassword=password-a-usar

Segun entiendo, este switch solo aplica a operaciones sobre PDFs, lo que significa que no se puede proteger el archivo PDF durante la conversion de PS a PDF, sino que despues hay que volver a procesar el PDF resultante para entonces generar una version "protegida".  Hice todos los cambios necesarios en la libreria pero, aunque no genera ningun error y efectivamente genera el PDF "protegido",  al abrir este ultimo lo hace sin pedir ningun pwd.

Sigo trabajando en esto.  En cuanto lo solucione, publico la nueva libreria para que prueben.


Victor

Victor Espina

未讀,
2015年5月29日 下午3:43:542015/5/29
收件者:publice...@googlegroups.com、vesp...@gmail.com、sergio...@gmail.com
La verdad, la rutina no implica para nada un cambio de tamano en el papel.  Hasta donde entiendo, la rutina simplemente convierte un archivo PS (o XPS) en un equivalente PDF, por lo que si el resultado en PDF es tamano carta, significa que el archivo de entrada PS o XPS tambien estaba en tamano carta.

Saludos

Victor

Victor Espina

未讀,
2015年5月29日 下午5:33:072015/5/29
收件者:publice...@googlegroups.com、vesp...@gmail.com、sergio...@gmail.com
Listo. Estaba viendo la opcion equivocada.  -sPDFPassword se usa para indicar el password de un PDF ya creado y que quieres convertir en un PDF "desbloqueado".  Para hacer lo contrario, es decir, proteger un PDF que estas generando a partir de un PS o XPS, se usa -sOwnerPassword y -sUserPassword, ademas de otras opciones adicionales.    Todo esto esta incluido en la nueva version 1.5 de PDF.PRG, que la pueden descargar desde el mismo sitio original:


Para generar un PDF protegido, simplemente hagan:

pdf.oOptions.cOwnerPwd = "password"


antes de invocar al metodo Create().


Saludos

Victor Espina


El viernes, 29 de mayo de 2015, 14:23:56 (UTC-4), Victor Espina escribió:

Victor Espina

未讀,
2015年5月29日 下午5:36:472015/5/29
收件者:publice...@googlegroups.com、vesp...@gmail.com、sergio...@gmail.com
Otra mejora en esta version es que ahora se pueden indicar parametros adicionales del GS:

pdf.oOptions.oGSOptions.Add("opcion GS")


tambien se pueden cambiar los parametros para la proteccion con password:

pdf.oOptions.cKeyLength = "128"
pdf
.oOptions.cEncryptionR = "3"
pdf
.oOptions.cPermissions = "-3904"


Otra cosa que olvide mencionar es que el objeto oOptions soporta AMBOS passwords:

pdf.oOptions.cOwnerPwd = ""
pdf
.oOptions.cUserPwd = ""


Si no se indica cUserPwd, se asumira el valor de cOwnerPwd.


Saludos

Victor Espina

Esteban H

未讀,
2015年5月29日 下午6:39:292015/5/29
收件者:publice...@googlegroups.com

Gracias Víctor.

 

Saludos.

 

Esteban.

Sergio Ps

未讀,
2015年6月1日 凌晨3:45:052015/6/1
收件者:publice...@googlegroups.com、vesp...@gmail.com
Eres un crack Víctor! voy a probarlo en cuanto pueda.

Gracias y saludos! 

Mariano Zarzuelo

未讀,
2015年10月5日 中午12:40:132015/10/5
收件者:Comunidad de Visual Foxpro en Español
Hola como estan? Victor gracias por esta libreria! Quería consultarte si hay una forma de que guarde el archivo en una ruta especifica, en el modo GS? Intenté enviar la ruta junto con el nombre del archivo, pero igualmente me pide la direccion.
Muchas gracias. Saludos.

Rodrigo Puerto

未讀,
2018年2月20日 下午2:25:302018/2/20
收件者:Comunidad de Visual Foxpro en Español
Excelente muchas gracias. Me sirvió

Viktor .

未讀,
2018年2月21日 上午11:15:092018/2/21
收件者:publice...@googlegroups.com
Excelente tocayo.. gracias 

Mario Besaccia

未讀,
2018年8月10日 上午9:53:482018/8/10
收件者:Comunidad de Visual Foxpro en Español
Exelente Victor lo tuyo, siempre admiro la generosidad de los que hacen este tipo de aporte, me sirve de sobremanera. Tengo un solo problema que hasta ahora no encuentro el porque y es que el pdf generado es en blanco y negro siendo que el reporte esta generado con colores y así sale si envío el mismo a una impresora color o un preview.
Te agradecería si me podes orientar.

Saludos

Jesús Peñafiel

未讀,
2018年8月10日 上午10:21:112018/8/10
收件者:publice...@googlegroups.com
Hola, para el color configura la impresora en tu report y listo!

Mario Besaccia

未讀,
2018年8月10日 上午11:33:382018/8/10
收件者:Comunidad de Visual Foxpro en Español
Eso pensé yo también cuando logre que saliera el pdf de mi reporte por eso previamente mando el mismo a una impreosra color y hago un preview y en ambos casos sale todo a color por lo que infiero que el problema no está en el reporte sino que esta al genera el ps o al convertir el mismo a pdf.
Por otro lado al programa test  que viene con la libreria, le modifique el reporte cambiando a color la letra del título y el pdf salío a color!!!  eso implica que debería andar en mi proyecto.
Eso es lo raro solo queiro saber  que parte de la librería pude haber tocado al incluirla en mi proyecto para que pase esto.

Muchas gracias!!!

Julian Velasquez

未讀,
2018年8月10日 中午12:43:092018/8/10
收件者:Comunidad de Visual Foxpro en Español
Saludos Victor 

Sabes como puedo generar los archivos PDF con Contraseña, desde FoxPRO. 

Victor Espina

未讀,
2018年8月16日 下午5:17:532018/8/16
收件者:Comunidad de Visual Foxpro en Español
PDF.oOptions.cUserPwd = "your password"
PDF.Create(....)


Victor Espina

Victor Espina

未讀,
2018年8月16日 下午5:18:462018/8/16
收件者:Comunidad de Visual Foxpro en Español
La verdad que no tengo idea de cual puede ser el problema.  Si ya hiciste la prueba de modificar el reporte de ejemplo y el PDF se genera a color, entonces el tema no es con la libreria sino con tu reporte.

Victor
回覆所有人
回覆作者
轉寄
0 則新訊息