Power Builder - Saveas

 
Vista:

Saveas

Publicado por carmen (1 intervención) el 27/06/2006 01:16:36
Hola a todos estoy usando PB8 y la función saveas para exportar un dw a pdf usando saveastype (pdf!) pero me sale un error
dw_1.SaveAs("test.pdf", PDF!, true)

Error: illegal enumerated constant: pdf

Es que esta función no es valida en PB8 ( por que esta en el help) o hay que incluir algun codigo mas ( use lo mismo pero con Excel! y no tuve problemas)

Espero que me puedan ayudar..gracias
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:Saveas

Publicado por Jorge (900 intervenciones) el 27/06/2006 16:12:52
Hola
Aqui te paso lo que se hace desde la vers 9
no recuerdo si es desde la 8
proba si no te paso otro codigo

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

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 programa\Sybase\Shared\PowerBuilder\drivers\ADIST5.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:\Listas\Presupuestos\"+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
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:Saveas

Publicado por GUILLERMO (12 intervenciones) el 20/09/2006 05:27:01
Hola.Jorge, con el codigo que publicaste hice esta funcion pero al momento de ejecutar, el archivo pdf se genera pero con 0 bytes , es decir no se ha generado, cual es el problema??,

saludos

public function integer of_saveas (ref datawindow adw_data);

string ls_path, ls_file, ls_ext, ls_savetype
int li_rc,li_resp

ls_savetype ="Portable Document Format (*.pdf),*.pdf,"+&
"Archivo Excel (*.xls),*.xls,"+&
"Archivo HTML (*.htm), *.htm,"+&
"Archivo XML (*.xml), *.xml,"+&
"Archivo DBF (*.dbf),*.dbf,"+&
"Archivo Texto (*.txt),*.txt,"+&
"Archivo Delimitado por comas (*.csv),*.csv,"+&
"Archivo de 123 (*.wk1), *.wk1,"+&
"Reporte de Powerbuilder (*.psr), *.psr"

li_rc = GetFileSaveName ( "Guardar Como...", &
ls_path, ls_file, "PDF",ls_savetype, "", &
32770)
IF li_rc = 1 Then
ls_ext = Right(ls_file,3)
CHOOSE CASE UPPER(ls_ext)
CASE "PDF"
//Metodo Distiller
adw_data.Object.DataWindow.Export.PDF.Method = Distill!
adw_data.Object.DataWindow.Printer = "Sybase DataWindow PS"
adw_data.Object.DataWindow.Export.PDF.Distill.CustomPostScript="Yes"
ls_file = ls_path
li_resp = adw_data.SaveAs(ls_file, PDF!, true)
CASE "HTM"
li_resp = adw_data.SaveAs(ls_file, HTMLTABLE!, true)
CASE "DBF"
li_resp = adw_data.SaveAs(ls_file, dBase3!, true)
CASE "XML"
li_resp = adw_data.SaveAs(ls_file, XML!, true)
CASE "XLS"
li_resp = adw_data.SaveAs(ls_file, Excel8!, true)
CASE "PSR"
li_resp = adw_data.SaveAs(ls_file, PSReport!, true)
CASE "CSV"
li_resp = adw_data.SaveAs(ls_file, CSV!, true)
CASE "TXT"
li_resp = adw_data.SaveAs(ls_file, Text!, true)
CASE "WK1"
li_resp = adw_data.SaveAs(ls_file, WK1!, true)

END CHOOSE
END IF
MessageBox(n_cst_application.gstr_app.nombreapp,"Se generó Archivo en:"+&
"~r~n"+ls_path,Exclamation!)
RETURN li_resp
end function
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:Saveas

Publicado por GUILLERMO (12 intervenciones) el 20/09/2006 05:58:58
Hola.Jorge, con el codigo que publicaste hice esta funcion pero al momento de ejecutar, el archivo pdf se genera pero con 0 bytes , es decir no se ha generado, cual es el problema??,

saludos

public function integer of_saveas (ref datawindow adw_data);

string ls_path, ls_file, ls_ext, ls_savetype
int li_rc,li_resp

ls_savetype ="Portable Document Format (*.pdf),*.pdf,"+&
"Archivo Excel (*.xls),*.xls,"+&
"Archivo HTML (*.htm), *.htm,"+&
"Archivo XML (*.xml), *.xml,"+&
"Archivo DBF (*.dbf),*.dbf,"+&
"Archivo Texto (*.txt),*.txt,"+&
"Archivo Delimitado por comas (*.csv),*.csv,"+&
"Archivo de 123 (*.wk1), *.wk1,"+&
"Reporte de Powerbuilder (*.psr), *.psr"

li_rc = GetFileSaveName ( "Guardar Como...", &
ls_path, ls_file, "PDF",ls_savetype, "", &
32770)
IF li_rc = 1 Then
ls_ext = Right(ls_file,3)
CHOOSE CASE UPPER(ls_ext)
CASE "PDF"
//Metodo Distiller
adw_data.Object.DataWindow.Export.PDF.Method = Distill!
adw_data.Object.DataWindow.Printer = "Sybase DataWindow PS"
adw_data.Object.DataWindow.Export.PDF.Distill.CustomPostScript="Yes"
ls_file = ls_path
li_resp = adw_data.SaveAs(ls_file, PDF!, true)
CASE "HTM"
li_resp = adw_data.SaveAs(ls_file, HTMLTABLE!, true)
CASE "DBF"
li_resp = adw_data.SaveAs(ls_file, dBase3!, true)
CASE "XML"
li_resp = adw_data.SaveAs(ls_file, XML!, true)
CASE "XLS"
li_resp = adw_data.SaveAs(ls_file, Excel8!, true)
CASE "PSR"
li_resp = adw_data.SaveAs(ls_file, PSReport!, true)
CASE "CSV"
li_resp = adw_data.SaveAs(ls_file, CSV!, true)
CASE "TXT"
li_resp = adw_data.SaveAs(ls_file, Text!, true)
CASE "WK1"
li_resp = adw_data.SaveAs(ls_file, WK1!, true)

END CHOOSE
END IF
MessageBox(n_cst_application.gstr_app.nombreapp,"Se generó Archivo en:"+&
"~r~n"+ls_path,Exclamation!)
RETURN li_resp
end function
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