23 de marzo de 2007

Reportes de VFP en formato PDF usando BullZip PDF Printer

BullZip PDF Printer trabaja como una impresora de Microsoft Windows y permite escribir documentos PDF desde cualquier aplicación de Microsoft Windows.

Este programa es FREEWARE lo que significa que es GRATIS! Para uso personal y comercial. Este no contiene ninguna publicidad o popups.

Ver las características en: http://www.bullzip.com/products/pdf/info.php

Requerimientos del sistema
  • Microsoft Windows 2000/XP/XP x64/2003/2003 x64/Vista/Vista x64
  • GPL Ghostscript 8.54 o superior
Descargar e Instalar
  1. Descargar Ghostscripts e instalarlo
  2. http://www.bullzip.com/products/pdf/gs854w32.exe
  3. Descargar el PDF Printer y correr el programa de instalación.
  4. http://www.bullzip.com/downloadmgr.php?download=pdf
Cuando el programa de instalación termina, tendremos instalado en el sistema un impresora llamada BullZip PDF Printer. Ahora podremos imprimir desde cualquiera de las aplicaciones instaladas en nuestro sistema.

Como usarlo desde Visual Foxpro 9

Mi problema era como poder enviar un reporte de Visual FoxPro por correo electrónico en algun formato que todo el mundo pueda abrir y usar. Entonces pense si puedo hacer que los reportes de VFP se conviertan en archivos PDF, puedo usar Acrobat Reader como preview de mis reportes y desde Acrobat, imprimirlos, enviarlos, etc.

Estuve buscando clases _reportlistener, pero la que encontre no las pude hacer funcionar. Fue entonces que me tope con BullZip PDF Printer.

Lo que hice fue lo siguiente:
  1. Configure la impresora (BullZip PDF Printer), para que no muestre mensajes al crear el .pdf y que abra el documento después de crearlo.
  2. Modifique mis reportes de la siguiente manera:
  3. Haciendo que BullZip PDF Printer sea la impresora predeterminada de Windows y luego en el reporte en propiedades, save printer environment.
  4. En mis programas cambien las llamadas a los reportes de la siguiente manera:
  5. REPORT FORM mireporte.frx TO PRINTER ENVIRONMENT
Importante:

No es necesario que BullZip PDF Printer sea la impresora predeterminada de Windows, eso se hace unicamente en el momento en que se cambian los reportes y se graba la configuración de impresoras en el reporte.

No es necesario usar el Adobe Acrobat Reader, funciona con el lector PDF que tenemos instalado por defecto en nuestro sistema.

Saludos cordiales.

Marcelo ARDUSSO
Rafaela, Santa Fe. Argentina


Enlaces:
http://www.bullzip.com/products/pdf/info.php
http://www.bullzip.com/products/pdf/gs854w32.exe
http://www.bullzip.com/downloadmgr.php?download=pdf

4 comentarios :

  1. Excelente Aporte. Emigre hace 8 años de VFP a Clarion, pero hoy en día me gusta mucho leer artículos de VFP, y en verdad que lo extraño mucho...

    ResponderBorrar
  2. Como puedo manar reportes con varias bandas detalles

    ResponderBorrar
  3. Alguno prodría ayudarme?
    En mis reportes a .PDF, el programa cambia el nombre desea para el reporte pdf, pero al enviarse a imprimir siempre me pide "GUARDAR COMO", aunque solo sea dar un "enter", retrasa el proceso. Agradezco si me pidiesen ayudar.

    MIL GRACIAS

    ResponderBorrar
  4. Hola a todos, precisamente utilizo Bullzip para una generacion de reportes y posterior envio de correo con los reportes adjuntos, pero al momento de enviar los correos me doy cuenta que en ciertos casos los archivos no pueden abrirse con el lector de pdf, al parecer entre que genero el pdf y lo adjunto para enviarlo por correo pasa poco tiempo y el bullzip no concluye su tarea.
    He utilizado sleep(5000) pero en realidad no quisiera hacer lento el proceso. Alguien que tenga una forma de mejorar los tiempos con bullzip.

    Adjunto la parametrización de mi clase.

    Saludos,

    Omar Noboa Morante
    Guayaquil - Ecuador


    PARAMETERS cFrx, cArchivo, cTittle

    loPdf = CREATEOBJECT('Bullzip.PDFPrinterSettings')

    IF TYPE('loPdf')='O'
    loPdf.RemoveSettings(.T.)
    loPdf.SetValue('output', cArchivo)
    loPdf.SetValue('DisableOptionDialog', 'no')
    loPdf.SetValue('ConfirmOverwrite', 'no')
    *loPdf.SetValue("WatermarkColor","#FF9900")
    *loPdf.SetValue("WatermarkText","HRmanager")
    *loPdf.SetValue("WatermarkRotation",45)
    *loPdf.SetValue("WatermarkSize",18)
    *loPdf.SetValue("WatermarkTransparency",20)
    loPdf.SetValue("Showsettings", "never")
    loPdf.SetValue("ShowSaveAS", "never")
    loPdf.SetValue("ShowPdf", "no")
    loPdf.SetValue("Author", "HRmanager")
    loPdf.SetValue("Title", cTittle)
    loPdf.SetValue("ShowProgress","no")
    loPdf.SetValue("ShowProgressFinished","no")
    loPdf.WriteSettings(.T.)

    SET CONSOLE OFF
    SET PRINTER TO NAME ("Bullzip PDF Printer")
    lcSentence = "REPORT FORM '" + ALLTRIM(cFrx) + "' TO FILE '" + ALLTRIM(cArchivo) + "' NODIALOG NOCONSOLE"
    &lcSentence

    SET PRINT OFF
    SET PRINTER TO DEFAULT
    SET CONSOLE ON

    RELEASE loPdf
    ENDIF

    ResponderBorrar

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