Power Builder - Grabar dw a pdf automaticamente

   
Vista:

Grabar dw a pdf automaticamente

Publicado por achafio (88 intervenciones) el 20/02/2008 00:22:32
Para grabar un dw a pdf tengo que tener instalado una impresora virtual pdf, lo direcciono a esa impresora y luego me pide el nombre con el cual deseo grabar dicho dw. Hasta ahi todo bien.

Pero, ¿existirá alguna forma de hacerlo todo automaticamente, sin que aparezca la ventana donde me pida ingresar la ruta y el nombre a grabar, y hacerlo internamente?.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Grabar dw a pdf automaticamente

Publicado por Jorge (900 intervenciones) el 21/02/2008 13:09:13
Si estimado
Depende de la Version de PB que tengas

Version 9 o Posterior

Para exportar una dw a pdf
Instalar el GNU GostScrip
puedes bajarlo de;
http://prdownloads.sourceforge.net/ghostscript

Tienes que tener instalado el Driver de la impresora AdobeDistiller
Se deberia autoinstalar al generar tu primer export
Si asi no lo hiciera lo puedes instalar a mano bajando el driver de:
http://www.adobe.com/support/downloads/detail.jsp?ftpID=1508

o cualquier otro driver que realize esta funcion por ejemplo uno
muy bueno y es free el pdf995s

O tambien la Instalacion de PB te deja el driver en
C:Archivos de programaSybaseSharedPowerBuilderdriversADIST5.INF

Si instalas manualmente la impresora y vas a utilizar el saveas
debes cambiar el nombre de la impresora que se te creo por
Sybase DataWindow PS

Tambien puedes usar el metodo distiller

//Metodo Distiller
Int li_resp
String Nombre_Fichero
dw_presupuesto.Object.DataWindow.Export.PDF.Method = Distill!
dw_presupuesto.Object.DataWindow.Printer = "Sybase DataWindow PS"
//dw_presupuesto.Object.DataWindow.Printer = "Acrobat Distiller"
dw_presupuesto.Object.DataWindow.Export.PDF.Distill.CustomPostScript="Yes"
nombre_fichero = "C:ListasPresupuestos"+sle_cliente.text+".pdf"
li_resp=dw_presupuesto.SaveAs(nombre_fichero, PDF!, true)

alli puedes fijarte donde asignas la printer con este metodo
podes directamente colocar el nombre creado por ejemplo
"Acrobat Distiller"

Por ultimo debes hacer algo que por alli PB no lo hace
el de reconocer la ruta donde esta el Gostscrip
lo mas sencillo... de la carpeta Arch de Prog/gs/bin
todo su contenido al System32

Comentanos

Saludos desde Argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por rgf_py (5 intervenciones) el 15/03/2011 23:00:05
Para mi caso en el que en mi pc de desarrollo haciendo los pasos de jorge me funciona sin problemas y que al hacer los mismo pasos en las maquinas clientes no les funciona. Despues de muchas pruebas y lecturas probe con el pdfcreator primero probe lo mismo con el metodo distill y me genero el pdf luego vi q el pdfcreator tenia la opcion de autoguardado y ahi configure los parametros necesarios y me funciono en los pc clientes.
con
dw.setprinter(' nombre de tu imprsora pdfcreator por default: PDFCreator ')
dw.print(true)

bueno es la solucion mas sano que encontre y funciona sin problemas y aparte para el usuario es invisible
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por rgf_py (5 intervenciones) el 14/03/2011 19:38:59
Gracias jorge me sirvio tu ejemplo tenia un script que generaba en XSLFOP! pero justamente tambien necesitaba auto enviar un presupuesto de un DW y me generaba el pdf pero sin las imagenes ni los colores y con tu ejemplo me genero como tal. Saludos desde Paraguay
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por achafio (88 intervenciones) el 21/02/2008 15:56:21
Se me olvidó indicar que uso PB8.0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por Jorge (900 intervenciones) el 21/02/2008 20:00:36
Hola
Te paso un Scrip que Publico hace un tiempo Celso Cortes

Gerando um PDF sem caixa de dialogo no Win 9x, ME, NT, 2000 e XP

Verifiquei que esta é uma dúvida de muitos desenvolvedores, não só em PB, mas este espaço se destina ao PowerBuilder então os exemplos de script só valem para o PB, mas as dicas servem para qualquer desenvolvedor.

Primeiro :

Para se gerar um PDF, você deve ter um utilitário para isto, exitem muitos, não só os da Adobe®, embora todos utilizem os drives do Adobe Acrobat®, proprietária da tecnologia PDF(Portable Documment Format).

Aqui na PowerBuilder você pode baixar o GERAPDF para Win 9x ou baixar o PDF995 para todos os sistemas MS Windows®

O "X" desta questão é que ao se gerar um PDF, um "prompt" da impressão aparece pedindo o nome do arquivo PDF e o seu diretório destino, o que se torna muito deselegante para um sistema corporativo e confuso para um usuário leigo, além de provocar erros por atribuição de nomes impróprios para o aplicativo.

Para solucionar este problema, uma solução simples existe, mas não é divulgada pela Adobe® nem por desenvolvedores dos pacotes de configuração e geração de PDF.

O fim do mistério, são duas soluções uma para Win9x e ME e outra para NT, 2000 e XP.

Para Win9x e ME

Basta escrever no arquivo pdfwritr.ini que se encontra na windows/system os parâmetros de impressão, toda vez que o drive do PDF acha o nome do arquivo a ser gerado nos parâmetros do pdfwritr.ini a caixa de dialogo é suprimida.

Os parâmetros são :
[Acrobat PDFWriter]
PDFFILENAME="PATH_COMPLETA_ONDE_SERA_GERADO_O_PDF.PDF"

Apenas esta linha é o suficiente para suprimir a caixa de dialogo da impressão, existem outros parâmetros de configuração como tamanho da página, autor, nome do produto, nome do documeto etc, em breve todos os parâmetros estaram disponiveis aqui na PowerBuilder.

Para o NT, 2000 e XP.


No NT, 2000 e XP, deve-se escrever nos REGISTROS, pôs este sistemas se configuram pelos registros e não por arquivos tipo .INI .

Você terá que escrever na HKCUSoftwareAdobeAcrobat PDFWriter onde ( HKCU = HKEY_CURRENT_USER ).

Escreva : HKCUSoftwareAdobeAcrobat PDFWriterPDFFileName

Para ficar mais fácil, segue uma rotina genérica para todos os sistemas.



[ PowerScript]
Crie uma função e coloque este código, passe como parâmetro a path completa do arquivo a ser gerado tipo : C:SISTEMAPAGAMENTOFOLHA.PDF, aqui vamos chamar de path_pdf.

///////////////////////////////////////////////////////////////////////////////////////////////

//Rotina para geração de PDF

// Entrada : path_pdf Caminho completo aonde será criado o PDF

// Saída : Return THRU se tudo ocorreu bem / False caso erro

///////////////////////////////////////////////////////////////////////////////////////////////

environment wk_sis

GetEnvironment (wk_sis)

CHOOSE CASE wk_sis.OsType

CASE WindowsNT!

IF RegistrySet("HKEY_CURRENT_USERSoftwareAdobeAcrobat PDFWriter",
"PDFFileName", RegString!, path_pdf) = -1 THEN
RETURN FALSE
END IF

IF RegistrySet("HKEY_CURRENT_USERSoftwareAdobeAcrobat PDFWriter",
"bExecViewer", RegString!, "0") = -1 THEN
RETURN FALSE
END IF

IF RegistrySet("HKEY_CURRENT_USERSoftwareAdobeAcrobat PDFWriter",
"bDocInfo", RegString!, "0") = -1 THEN
RETURN FALSE
END IF

CASE Windows!

IF SetProfileString("PDFWRITR.INI", "Acrobat PDFWriter", "PDFFileName",
path_pdf) <> 1 THEN
RETURN FALSE
END IF

IF SetProfileString("PDFWRITR.INI", "Acrobat PDFWriter", "bExecViewer",
"0") <> 1 THEN
RETURN FALSE
END IF

IF SetProfileString("PDFWRITR.INI", "Acrobat PDFWriter", "bDocInfo", "0")
<> 1 THEN
RETURN FALSE
END IF


CASE ELSE
RETURN FALSE
END CHOOSE

RETURN TRUE

/////////////////////////////////////////////////////////////


SUERTE !!!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por achafio (88 intervenciones) el 22/02/2008 22:31:10
Pero en que momento le pasa el dw y le indica que lo imprima o grabe.

Si puedes indicame la dirección donde puedo ver ese codigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por carloa duarez sanchez (1 intervención) el 09/11/2009 00:43:50
deseo exportar el contenido del data window a un archivo pdf.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por achafio (88 intervenciones) el 23/02/2008 00:50:49
Ya solucioné el problema.

Lo probé en una maquina con windows 2000 y acrobat 5, y funcionó a la perfección.
El problema es cuando lo pruebo con windows xp y acrobat 7, ahi me sigue preguntando la ruta y el nombre con el cual deseo imprimir, cual puede ser el inconveniente.

Cuando ingresé al regedit del windows xp, no tenía la carpeta Acrobat PDFWriter, entonces lo que hice fue agregarla y luego agregar dentro de ella la carpeta PDFFileName poniendo los mismo atributos q tengo en el regedit del windows 2000, pero no funciona.

Algo debo estar haciendo mal o me debe faltar, por favor si alguien sabe, indicarmelo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por Matias (3 intervenciones) el 10/02/2013 00:53:30
Hola rgf_py !!!
Funciona muy bien la sentencia:
dw.setprinter(' nombre de tu imprsora pdfcreator por default: PDFCreator ')
dw.print(true)

Ahora si yo quiesiera pasarle el nombre del titulo al PDFCreator desde powerbuilder como podria hacerlo?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por Enrique Aguirre (1 intervención) el 07/03/2008 16:48:58
Hola,

Me parecio super interesante el codigo que envias para power builder version 9 o o posterior, agradeceria me puedas ayudar, yo uso la version 7 del power builder.

Lo que necesito es enviar un reporte datawindow en pantalla por correo en formato pdf.

Por ello necesito que mi aplicativo grabe automaticamente el dw convertido en pdf con un nombre que el usuario no necesita saberlo, despues yo con una rutina adicional lo enviaria por correo.

Lo que necesitaria es la rutina es grabar el pdf con un nombre cualquier, todo seria interno via sistema, el usuario solo veria al final el correo abierto con el pdf incluido en el correo.

Me puedes ayudar por favor con el tema, que rutina debo usar, que software adicional debo usar y como lo debo configurar en mi pc para programarlo y que debo configurar en la maquina del usuario.

Muchas gracias por tu ayuda, realmente es muy buena.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por Javieron (26 intervenciones) el 13/05/2008 12:58:53
Yo el problema de imprimir a Pdf desde PB8.0 lo solucione gracias a una aplicaccion freeware llamada :

BULLZIP PDF

Es muy muy buena la aplicacion y es muy configurable , les recomiendo que la prueben

Yo configure el programa para que me grabase los ficheros en c:pdfs[basedoname].pdf
con ello me guarda el documento siempre con el nombre base del documento de impresion, este parametro lo puedes establecer en powerbuilder con :

dw_fichero.Modify("DataWindow.Print.DocumentName='" + LS_FICHERO + "'")

Y el Bull zip se encarga de todo :).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por Walter (1 intervención) el 09/08/2012 14:50:52
Estimado Javieron, me solucionaste la vida... yo tambien trabajo con BullZip, me faltaba este pedacito de codigo para poder terminar algo que habia prometido para hace tres meses y no sabia como resolverlo. muchisimas gracias por tu aporte.

Walter
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por gerardo (1 intervención) el 09/07/2008 22:51:53
Hola, ya intente dicho procedimiento y no me funciona.
Lo que hice fu lo siguiente:
1.- instale ghostscript
2.- baje y instale Adobe Universal PostScript Windows Driver Installer 1.0.6 - Spanish de acurdo a lo que me nada la liga.
3.- executo el saveas desde una aplicacion

No me genera nada y no me crea el Sybase DataWindow PS

que me falta por hacer.

Gracias por sus atenciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Grabar dw a pdf automaticamente

Publicado por licantea (5 intervenciones) el 13/05/2011 17:54:24
te falta dar te alta una impresora con el nombre "Sybase DataWindow Ps" esta no se genera o instala sola pero la tienes que generar con un driver PS PostScript y utilizar el codigo que esta al inicio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar