Herramientas de usuario

Herramientas del sitio


tecnicas:pdfviewer

¡Esta es una revisión vieja del documento!


🚧 Documento incompleto, estamos desarrollándolo 🚧

Descarga y Visualización de Documentos/Informes PDF

Es habitual que necesitemos hacerle llegar al usuario de nuestro CGI Néfele un documento PDF, tanto realizando una descarga directa como haciendo una visualización previa y que el usuario después decida lo que quiere hacer con el.

La forma mas fácil es poner un link de descarga del documento en la página generada con nuestro CGI y al hacer click el usuario en dicho enlace proceder ha realizar la descarga.

El problema que le vemos a esta opción es que el documento ha de estar en una carpeta publica de nuestro Dominio, lo cual implica que cualquiera podría acceder a los documentos si sabe como se llaman, o por fuerza bruta.

Nosotros recomendamos no utilizar esta técnica, preferimos que si tenemos almacenados los documentos en nuestro Dominio estén en una carpeta no accesible, por ejemplo en una subcarpeta dentro de cgi-bin o en cualquier otra carpeta a la que pueda acceder nuestro CGI pero no así el navegador directamente.

Si el documento no esta previamente almacenado sino que lo creamos al vuelo cuando el usuario lo solicita, recomendamos igual que en el caso de los almacenados, crearlo en una carpeta no accesible por el navegador.

Para lograr este nivel de seguridad Néfele dispone de varias herramientas que nos facilitan el envió de los documentos desde la carpeta segura al navegador.

  • oCgi:SendFile - Para el envío propiamente de un fichero.
  • nfl_EmbedFile - Para la creación del HTML necesario para presentar un visualizador con el documento
  • nfl_EmbedPDFjs - Para la creación del HTML necesarios para presentar nuestro documento en el visualizador PDF.js
  • oCgi:SendPage - Para el envío del código HTML generado en las dos funciones “Embed”

Creando al vuelo Documentos/Informes PDF con...

FastReport

   WITH OBJECT TFastReport():New()
     :lAbortOnErrors := .F.  // Evitamos que cancele el proceso por un error
     :Create()
     :oEngineOptions:SetSilentMode( .T. )  // No queremos que de ningún mensaje
     // Parámetros del PDF
     :SetProperty("PDFExport", "FileName", "document.pdf")
     :SetProperty("PDFExport", "DefaultPath", cReportPath) // carpeta donde generara el PDF
     :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", "Author", "Néfele Project")
     :SetProperty("PDFExport", "Producer", "Néfele Project")
     :SetProperty("PDFExport", "Creator", "Néfele Project")     
     :SetProperty("PDFExport", "Keywords", "Néfele, xBase, Xailer")     
     /*
       .
       .
       .     
     */
     :DoExport("PDFExport")
     IF :nLastError <> 0
       oCGI:Console( :cLastError )
     ENDIF
     :Free()
   END

wkhtmltopdf

wPDFReport

tecnicas/pdfviewer.1616361708.txt.gz · Última modificación: 21/03/2021 21:21 por pedro