viernes, 29 de junio de 2012

Scrip PowerBuilder para Guardar directo a PDF

Este scrip nos permite guardar en PDF un reporte, ya que con el dw.saveas() si bien figura en la lista el formato, no guarda, o guarda pero al querer abrirlo nos da un Error.
Como primer paso debes tener Instalado una impresora Virtual, podria se el PDFCreator, cuando ya lo tengas instalado, renombralo con "PDF" (en el scrip llamaremos a esa impresora, si lo nombras de otra manera no lo encontrará), luego instalas el gs871w32.exe para S.O. de 32bits, y el gs871w64.exe para S.O. de 64bits, lo puedes descargar de algun sitio de internet, mas adelante sugeriré el sitio de donde yo lo descargué.
Y a continuación el Scrip, que yo lo puse en el evento clicked de un boton, cada uno verá donde ubicarlo de acuerdo a sus necesidades.

//por fativilla 27.06.2012 \m/
string ls_arc_pdf
CreateDirectory(GetCurrentDirectory( ) +'\PDF\') //SI no existe la carpera lo crea en el directorio del app
ls_arc_pdf= GetCurrentDirectory( ) +'\PDF\carta_oferta.pdf'
tabpage_5.dw_10.Object.DataWindow.Export.PDF.Method = Distill!
tabpage_5.dw_10.Object.DataWindow.Printer = "PDF"//PDF Nombre de la impresora virtual
tabpage_5.dw_10.Object.DataWindow.Export.PDF.Distill.CustomPostScript="YES"     // Permitir Postscript
if tabpage_5.dw_10.SaveAs(ls_arc_pdf,PDF!,true) <> 1 then
  messagebox("Error","Hubo un error al generar el archivo PDF~n~r"+&
                      "1. Puede que no haya instalado gs871w32.exe~n~r"+&
                    "2. Puede que no tenga una impresora virtual con el nombre 'PDF'~n~r", StopSign!)
else
    messagebox("Atención","El archivo se generó con EXITO!!~n~r"+&
                      ls_arc_pdf)
 end if

* Sitio de donde puedes descargar el gs871w32.exe
http://es.sourceforge.jp/projects/sfnet_ghostscript/downloads/GPL%20Ghostscript/8.71/gs871w32.exe/

25 comentarios:

  1. Hola. Muy interesante la explicación que das. Tengo una duda: debo instalar el archivo gs871w32.exe en cada pc que use el sistema? y cada una debe tener la impresora virtual?

    ResponderEliminar
  2. Asi mismo, ambos deben de ir instalados en cada PC. Gracias por el comentario :)

    ResponderEliminar
  3. muchas gracias!!
    me funcionó perfectamente en PB9 y win7 pro

    ResponderEliminar
  4. Muy bueno me ha funcionado de maravilla

    ResponderEliminar
  5. Hola, a mi me funciona pero seria perfecto si funcionara para todos mis dw en uno de ellos me sale error y no se por que???
    alguien me puede ayudar.
    gracias.

    ResponderEliminar
    Respuestas
    1. Puedes decir el error que te sale?

      Eliminar
    2. El retorno me sale -1, es muy extraño ya que para mis otros reportes si funciona??
      ya probé de diferentes formas pero nada no se que mas intentar.

      Eliminar
  6. Me funciona de mil maravillas pero con un reporte no funciona y no entiendo por que. eso solo pasa con un DW.
    alguien me puede ayudar.
    gracias

    ResponderEliminar
  7. Gracias Funcionó Perfecto!. Felicitaciones por tu profesionalismo, y por compartir.

    ResponderEliminar
  8. Perfecto!. Gracias por tu profesionalismo y compartir

    ResponderEliminar
  9. buena información , solo falto el link para gs871w64.exe

    ResponderEliminar
  10. funcionara para la version de power builder 8.0 , gracias

    ResponderEliminar
  11. buenos dias y funciona para la version 8.0 ?
    mi correo es jzorrilla29@gmail.com
    Gracias!!!

    ResponderEliminar
  12. Gracias, me sacaste del problema despues de algunas horas de estarle buscando, ya que yo tengo las mismas instrucciones, pero la diferencia era la versión del GhostScript ya que si me funciona en S.O. de 32 bits, pero no en S.O. de 64 bits, aun y cuando ambos son de la versión 9.10 con su respectiva diferencia de 32 y 64 bits. Usando la versión que recomiendas del GhostScript (8.71 de 64 bits) me funcionó perfectamente. Cosa rara, que el S.O. de 64 funcione con una versión mas antigua de GhostScript que el de 32 bits. Ahorita tengo una máquina de 32 con la versión GS 9.10 y una de 64 bits con la versión GS 8.71, gracias a tu recomendación, ambas funcionando. Quizá al amigo que si le funciona bien excepto con una DW, el problema sea ese, que la computadora donde obtiene ese reporte, sea de 64 bits. Saludos y que tengan buen día. Gracias nuevamente.

    ResponderEliminar
  13. Tengo problemas al realizarlo en win7 64bits...

    ResponderEliminar
  14. una consulta sobre power builder
    sobre guardar dw a pdf
    cuando ejecuto el programa en tiempo de diseño me sale bien el pdf pero cuando ejecuto el tiempo de ejecucion me sale error en saveas
    estoy usando pb12.5

    ResponderEliminar
  15. Muy util este codigo me ayudo con lo que necestiba. Gracias.

    ResponderEliminar
  16. me marca erro variable tabpage_5 no registrada o encontrada como la rgistro o configuro

    ResponderEliminar
  17. Estimado Fvilla tengo instalado Ghostscript 8.71 y PDF Creator 1.7 en Win7 (64bits) pero me manda al error del messagebox. Te agradezco de antemano tu apoyo.

    ResponderEliminar
  18. Buen dia...Por favor alguien que me pueda colaborar. Con el código suministrado me crea el archivo pdf pero no automaticamente. Es decir, me lleva al directorio para darle un nombre y asi lo crea. Lo que necesito es que lo haga automaticamente sin necesidad que uno le asigne un nombre y elija donde lo va a guardar.

    Gracias por su colaboracion.

    ResponderEliminar
  19. Hola, cuando te refieres a RENOMBRAR el PDFCREATOR, significa que voy a la ruta donde lo instale y a la aplicacion llamada PDFCREATOR le nombre PDF?

    ResponderEliminar
    Respuestas
    1. Si, renombras la impresora... cuando lo instalaste, si te fijas en impresoras te instala con el nombre de PDFCreator, entonces debes renombrar a PDF. Espero te sirva

      Eliminar