Cambiar el nombre "document1.pdf" a uno predefinido, en impresión a pdf


([N1] runasoft) #1

Buenas a todos:

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.


([N1] wikan) #2

Buenas, si no recuerdo mal los informes nativos se pueden sacar directamente a PDF.

Otra alternativa es en el registro modificar los valores de las impresoras pdf y cambiar el nombre del documento.


([N1] runasoft) #3

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.


([N1] wikan) #4

Hay funciones nativas para el informe.
Si creas un manejador de objetos con el informe, puedes pasarle variables.


([N1] runasoft) #5

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


([N1] runasoft) #6

Y como se genera una instancia de esta clase en un proceso JS?

Me sale este error “Can’t find variable: vReportListDataView”

var informe = new vReportListDataView(theRoot);


([N1] runasoft) #7

Que es lo que está mal?

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” );


([N1] runasoft) #8

Yo mismo me corrijo:

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?


([N1] wikan) #9

Pero por que no usas el lenguaje nativo si no controlas javascript?

Con crear manejador de objeto de informe, le pasas las variables y disparas.


([N3] pacosatu) #10

Hola runasoft.

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.



([N1] runasoft) #11

Muchas gracias amigos Wikan y Paco me faltaba estas 2 propiedades del informe, ahora si todo va bien.


([N4] Infortic) #12

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:

[HKEY_CURRENT_USER\Software\PDFCreator\Program]
“AutosaveDirectory”=“C:\Users\”
“AutosaveFilename”=“Mi_Fichero_PDF”
“AutosaveFormat”=“0”
“UseAutosave”=“1”

Esto lo he usado habitualmente el v6 y funciona sin problemas.


([N1] runasoft) #13

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.