hola, el problema no es PowerBuilder sino Windows 10 en adelante, aparentemente no acepta la exportación de pdf desde PowerBuilder, a mi paso lo mismo cuando cambiamos las maquinas a Windows 10, me daba el error -1 que quiere decir que no se pudo exportar. Yo conseguí la forma utilizando una impresora pdf con un perfil especifico y funciona muy bien sin utilizar Ghostscript. anexo esta como configurar la impresora con el perfil.
La dirección y el nombre de la impresora, yo la coloco en un archivo.ini porque si deseas cambiar de nombre o dirección lo modifica en el .ini y no tienes que modificar el programa.
Instrucciones PowerBuilder para tomar los valores de un archivo. ini
yo lo coloco en el open del objeto aplicación y lo hago referente con variables de aplicación
is_Archivo = "nombre del archivo.ini"
is_printer1 = ProfileString(parametro1, parametro2, "_impre1","")
is_print_export = ProfileString(parametro1, parametro2, "_impre_export","")
is_dir_informe1 = ProfileString(parametro1, parametro2, "_ruta_informe1", "")
is_ruta_temp = ProfileString(parametro1, parametro2, "_ruta_temp", "")
Instrucciones para exportar el PDF
****defines las variables ****
boolean lb_exist
string ls_printer ,ls_ruta_temp,ls_ruta,ls_nombre_informe
ls_printer = nombre_aplicacion.is_print_export
ls_ruta_temp = nombre_aplicacion.is_ruta_temp
ls_ruta = nombre_aplicacion.is_dir_informe1+ ls_nombre_informe +".pdf"
dw_x.Object.DataWindow.Print.PrinterName = ls_printer // asignamos el nombre de la impresora
st_3.text = 'Exportando archivo, Favor espere...'
st_3.visible = true
dw_x.Object.DataWindow.Print.DocumentName = ls_nombre_informe
dw_x.print()
/**************************************************/
/* esperar que aparezca el archivo 3 veces */
/**************************************************/
ll_nro = 0
lb_exist = false
Do
sleep(5)
ll_nro = ll_nro + 1
lb_exist = FileExists(ls_ruta_temp+ls_nombre_informe )
Loop until lb_exist or ll_nro = 3
IF lb_exist THEN
/****************************************************/
/* movemos el archivo a la carpeta especifica */
/****************************************************/
ll_save = FileCopy (ls_ruta_temp+ls_nombre_informe ,ls_ruta,TRUE) // copiamos el archivo a la ruta especifica
If ll_save = 1 then
FileDelete(ls_ruta_temp+ls_nombre_informe ) // despues de copiado se elimina de la la ruta "temp"
else
MessageBox("Atención","No se pudo exportar el archivo, Favor intente de nuevo ")
st_3.visible = false
Return
End if
End if
Espero que te sirva.
Saludos