Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa Última revisión Ambos lados, revisión siguiente | ||
tecnicas:pdfviewer [21/03/2021 21:21] pedro [FastReport] |
tecnicas:pdfviewer [30/06/2021 21:49] pedro [wPDFReport] |
||
---|---|---|---|
Línea 21: | Línea 21: | ||
====== Creando al vuelo Documentos/Informes PDF con... ====== | ====== Creando al vuelo Documentos/Informes PDF con... ====== | ||
===== FastReport ===== | ===== FastReport ===== | ||
+ | Cuando queremos crear ficheros PDF utilizando FastReport tenemos que tener en cuenta que se va ha ejecutar en el servidor, por lo que no podemos permitir que nos pase la ejecución de nuestro CGI por un error o por que abra un dialogo pidiendo algún parámetro o avisándonos de algun mensaje. | ||
+ | |||
+ | Por eso debemos asignarle unas cuantas propiedades a FastReport que lo evite. | ||
+ | :lAbortOnErrors := .F. // Evitamos que cancele el proceso por un error | ||
+ | :oEngineOptions:SetSilentMode( .T. ) // No queremos que de ningún mensaje | ||
+ | :SetProperty("PDFExport", "ShowDialog", .F.) // No necesitamos que pregunte nada para exportar | ||
+ | La primera propiedad hemos de asignarla **antes** del :Create, las otras dos despues. | ||
+ | |||
<Code:xailer linenums:1> | <Code:xailer linenums:1> | ||
WITH OBJECT TFastReport():New() | WITH OBJECT TFastReport():New() | ||
Línea 27: | Línea 35: | ||
:oEngineOptions:SetSilentMode( .T. ) // No queremos que de ningún mensaje | :oEngineOptions:SetSilentMode( .T. ) // No queremos que de ningún mensaje | ||
// Parámetros del PDF | // Parámetros del PDF | ||
+ | :SetProperty("PDFExport", "ShowDialog", .F.) // No necesitamos que pregunte nada para exportar | ||
:SetProperty("PDFExport", "FileName", "document.pdf") | :SetProperty("PDFExport", "FileName", "document.pdf") | ||
- | :SetProperty("PDFExport", "DefaultPath", cReportPath) // carpeta donde generara el PDF | + | :SetProperty("PDFExport", "DefaultPath", cReportPath) // carpeta donde se guardará el PDF generado |
:SetProperty("PDFExport", "EmbeddedFonts", .t.) | :SetProperty("PDFExport", "EmbeddedFonts", .t.) | ||
- | :SetProperty("PDFExport", "ShowDialog", .F.) // No necesitamos que pregunte nada para exportar | ||
- | :SetProperty("PDFExport", "Title", "Informe de Eliminados por Bookings " + ::oEd_Nombre:Value) | ||
:SetProperty("PDFExport", "PrintOptimized", .T.) | :SetProperty("PDFExport", "PrintOptimized", .T.) | ||
+ | // Propiedades del PDF | ||
+ | :SetProperty("PDFExport", "Title", "Informe de Eliminados por Bookings " + ::oEd_Nombre:Value) | ||
:SetProperty("PDFExport", "Author", "Néfele Project") | :SetProperty("PDFExport", "Author", "Néfele Project") | ||
:SetProperty("PDFExport", "Producer", "Néfele Project") | :SetProperty("PDFExport", "Producer", "Néfele Project") | ||
Línea 51: | Línea 60: | ||
===== wkhtmltopdf ===== | ===== wkhtmltopdf ===== | ||
===== wPDFReport ===== | ===== wPDFReport ===== | ||
+ | |||
+ | Con la Clase [[controles:wPDFReport]] podemos crear un documento PDF elemento a elemento, en el servidor no se crea el PDF sino que se envía al navegador las instrucciones para que lo cree en el lado del cliente por lo que reducimos el tiempo de ejecución de nuestro CGI. |