Tengo un manejador de evento donde genero 2 informes nativos mediante 2 manejadores de objeto los cuales quiero imprimir a un solo archivo pdf, el problema es que por defecto el nombre de archivo generado es document1.pdf, en la V6 el nombre del archivo lo toma del nombre del informe, como hacer para que pueda tomar un nombre predefinido?.
Utilice el dopdf y el pdfcreator para estas pruebas.
Gracias amigo Wikan por la ayuda, la alternativa de modificar el registro de windows consigo hacerlo para el doPdf, pero a pesar de que está con el nombre cambiado en el registro, sigue apareciendo la alusión al nombre del documento document1.pdf.
La Configuración del sistema lo hago una linea antes de empezar con el Manejador de objeto del informe donde tengo varias variables locales del objeto.
Para el 1er caso que me indicas existe la función JS printReportToFile, tendría que modificar mis variables locales de objeto por variables globales ya que supongo que no se podría hacer mediante un manejador de objeto de informe.
Para esto veo que existe la clase VReportListDataView, tratare de hacer un manejador de objeto JS pasando las variables necesarias al informe y utilizar la función printToFile( String pathFile ) para generar el archivo pdf
1 var list = new VRegisterList(theRoot);
2 list.setTable(“Plataforma_dat/_NOTAS”);
3 var vApp.printReportToFile( list, “Plataforma_app/RA_EVAL20”, “C:/temp/algo.pdf” );
Uncaught exception at 5894ihcv.vca/js/NotasTrim.js:3: SyntaxError: Parse error
3 var vApp.printReportToFile( list, “Plataforma_app/RA_EVAL20”, “C:/temp/algo.pdf” );
var list = new VRegisterList(theRoot);
list.setTable(“Plataforma_dat/_NOTAS”);
list.load(“ID”, []);
theApp.printReportToFile( list, “Plataforma_app/RA_EVAL20”, “C:/temp/algo.pdf” );
Para alimentar variables locales al informe como podría hacer?
Creo que te estás montando un pequeño lío con algo sencillo.
Hasta la versión 7.18 la calidad de los Informes impresos era muy mala y solo era correcta cuando imprimíamos a fichero PDF.
Usaba siempre el siguiente código nativo:
Interfaz: Procesar ( GRD_LISTA, Todas )
Set ( CPDF_LISTADO, sysCacheClientPath + "/Listado.pdf" )
Exportar informe a fichero ( MI_INFORME@MiProyecto_app, CPDF_LISTADO )
Ejecutar documento ( CPDF_LISTADO, LOK )
Si quieres hacerlo usando el Informe como un Objeto que puedes parametrizar y disparar, lo hacemos de la forma habitual:
Interfaz: Procesar ( GRD_LISTA, Todas )
Crear manejador de objeto ( oInforme, Informe MI_INFORME@MiProyecto_app )
Set ( CPDF_LISTADO, sysCacheClientPath + "/Listado.pdf" )
Set variable local de objeto ( oInforme, CRUTA_PDF, CPDF_LISTADO )
Set variable local de objeto ( oInforme, CTITULO, "Título del Informe" )
Añadir lista al objeto ( oInforme )
Disparar objeto ( oInforme, No aplicable, )
Libre
En este caso debes configurar las siguientes 2 propiedades del Informe:
“Salida por defecto” = Fichero y “Ruta del fichero” = CRUTA_PDF
Pruébalo
Saludos
Paco Satué
P.D. Estoy de acuerdo con Manuel, sin controlar Javascript es tontería perder el tiempo. Primero entender 100% el API y después con un poco de javascript es suficiente.
Si usabas pdfcreator en windows también tienes otra forma, con la solución actual no viene al caso ya que es mucho más sencilla, pero conviene saberlo sobre todo para v6.
Puedes setear una variable del registro de windows antes de la impresión para indicarle el nombre del fichero:
Hice la prueba con PDFCreator aunque con lo que me indicas hubiera podido setear el registro, pero la impresión no salía clara aparecían caracteres raros en el texto, con el dopdf sale muy bien pero algo me faltaba en la modificación del registro de windows y no pude completar esa solución.