ASP.Net, Visualizando PDF en Iframe Desde Cualquier Unidad De Nuestro Disco Duro Local.


Si lo que deseas es poder visualizar un archivo PDF dentro de un formulario web en ASP.net, bastará con almacenarlo o guardarlo en cualquier ubicación de nuestro disco duro local (Unidad C: , Unidad D:, etc.), una vez guardado, será necesario conocer la ruta física del archivo en cuestión, ya que será necesaria para poder visualizarlo.


Vamos a iniciar entonces a diseñar la interfaz con la cual trabajaremos, de entrada necesitamos un web form donde se mostrará nuestro archivo PDF, tal como el que se muestra a continuación:

Página de Contenido donde se mostrará el PDF en un Iframe.
Código de la página de contenido mostrada en la imagen anterior:

Código de la página de contenido que muestra el Pdf en el Iframe.

    <h1 style="text-align:center;">ASP.Net, Visualizando PDF en Iframe Desde Cualquier Unidad De Nuestro Disco Duro.</h1>
    <hr />
    <br />
    <br />

    <div style="text-align:center;">
        <asp:Button ID="btnVisualizar" Text="Visualizar PDF" runat="server" OnClick="btnVisualizar_Click" />
    <hr />
    </div>
   
    <br />

    <iframe id="MyIframe" runat="server" style="height: 611px; width: 99%;"></iframe>


Seguidamente, nos ubicamos en el evento click del botón que visualizará nuestro archivo PDf y colocamos el siguiente código:

//Nombre del archivo que queremos mostrar en el Iframe
        string FileName = "Ejemplo.pdf";

        //Se indica al Iframe el origen del archivo PDF que debe mostrar.
        MyIframe.Attributes["src"] = "Default19.aspx?" + FileName;

        //Nota que el PDF a visualizar será mandado a través de una página de contenido
        //que lo de volverá como si se fuese a descargar, para este caso la página se llama Default19.aspx.

Una vez diseñada nuestra página de contenido donde se mostrará el archivo PDF, lo siguiente consiste en diseñar la página de contenido que se encargará de transformar nuestro archivo PDf en un flujo de datos que mostrará el Iframe. Para ello colocamos en el evento Load de la página el siguiente código:


        //Direccion física del archivo PDF que queremos visualizar.
        //NOTA: Como el nombre del archivo lo pasamos a través de la URL, por eso es necesario
        //obtenerlo a traves del objeto REQUEST.
        string FileName = @"C:\ArchivosPDF\" + Request.QueryString.ToString();

        //Borra todas las salidas del flujo de memoria
        Response.ClearContent();
        //Borra todos los encabezados del flujo de memoria
        Response.ClearHeaders();
        //Añade una cabecera HTTP al flujo de salida
        Response.AddHeader("Content-Disposition", "inline;filename=" + FileName);
        //Obtiene o establece el tipo MIME de HTTP del flujo de salida
        Response.ContentType = "application/pdf";
        //Escribe el contenido del archivo especificado en un flujo de salida de respuesta HTTP como un bloque de archivos
        Response.WriteFile(FileName);
        //envía toda la salida del buffer al cliente
        Response.Flush();
        //Borra todas las salidas de contenidos del flujo de memoria
        Response.Clear();


Notar que la variable de tipo cadena fileName, contiene la ruta física exacta de donde se ubica el archivo PDf que queremos mostrar en el Iframe.

Si todo ha salido correctamente, debemos poder visualizar nuestro PDF en nuestro componente Iframe, tal como se muestra en la siguiente imagen.

Resultado Final donde se visualiza nuestro Archivo PDf en el Iframe.

Nota muy importante: Si cuentas con un gestor de descargas como el IDM, seguro el flujo enviado desde nuestra página de contenido será interpretado por dicho gestor y no dejará visualizarlo, bastara con deshabilitarlo para que todo funcione correctamente.

Saludos y espero les sea de utilidad!!! Gracias!!!

Comentarios

Publicar un comentario

Entradas más populares de este blog

GridView Editable en ASP.Net y C#

Generando Código QR en ASP.net y C# Paso a Paso.