none
Abrir PDF en otra ventana del navegador ASP.Net RRS feed

  • Pregunta

  • Que tal,

    Me encuentro descargando un archivo PDF(Byte)  por medio del siguiente código:

    byte[] ArchivoPDF = ClaseQueObtieneArchivoByte;
    
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.ContentType = "application/pdf";
    HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment;filename={0}", "pruebapdf.pdf"));
    HttpContext.Current.Response.BinaryWrite(ArchivoPDF);
    HttpContext.Current.Response.Flush();
    
    Response.Clear();

    Sin embargo, necesito que despues de descargarlo se muestre el pdf en otra página (Webform), alguien tendrá algún consejo.

    Nota: El archivo se descarga en la parte baja del navegador.


    Armando Alavez De Jesus

    jueves, 11 de enero de 2018 0:49

Respuestas

  • Tienes que cambiar el content-disposition para que sea inline en lugar de attachment:

    HttpContext.Current.Response.AddHeader("content-disposition", "inline");

    Con eso te saldrá dentro de la página en aquellos navegadores que lo soporten y que tengan instalado el adecuado plugin para PDF. En los demás navegadores continuará descargándose.

    • Marcado como respuesta Armando Alavez jueves, 11 de enero de 2018 15:24
    jueves, 11 de enero de 2018 7:58
    Moderador
  • Otra solución aparte de la de Armando, es descargar el pdf com lo haces y cuando termine rediriges el fujo de la page (por javascrit o lo que sea) a la ruta de ArchivoPDF, si el navegador soporta pdf te lo abrirá. o bién abres un nuevo tab a esa ruta con javascript.
    • Marcado como respuesta Armando Alavez miércoles, 24 de enero de 2018 15:29
    jueves, 11 de enero de 2018 8:23
  • hola

    Aconsejaria utilizar alguna libreria como ser

    pdf.js

    para poder visualizar el pdf dentro del browser, porque el tema es que no todos los browser se integran a las aplicaciones de view de pdf

    Displaying PDF files with PDF.js library

    la url que definas para mostrar el pdf deberia ser la que ponga en el response el archivo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 11 de enero de 2018 12:34

Todas las respuestas

  • Tienes que cambiar el content-disposition para que sea inline en lugar de attachment:

    HttpContext.Current.Response.AddHeader("content-disposition", "inline");

    Con eso te saldrá dentro de la página en aquellos navegadores que lo soporten y que tengan instalado el adecuado plugin para PDF. En los demás navegadores continuará descargándose.

    • Marcado como respuesta Armando Alavez jueves, 11 de enero de 2018 15:24
    jueves, 11 de enero de 2018 7:58
    Moderador
  • Otra solución aparte de la de Armando, es descargar el pdf com lo haces y cuando termine rediriges el fujo de la page (por javascrit o lo que sea) a la ruta de ArchivoPDF, si el navegador soporta pdf te lo abrirá. o bién abres un nuevo tab a esa ruta con javascript.
    • Marcado como respuesta Armando Alavez miércoles, 24 de enero de 2018 15:29
    jueves, 11 de enero de 2018 8:23
  • hola

    Aconsejaria utilizar alguna libreria como ser

    pdf.js

    para poder visualizar el pdf dentro del browser, porque el tema es que no todos los browser se integran a las aplicaciones de view de pdf

    Displaying PDF files with PDF.js library

    la url que definas para mostrar el pdf deberia ser la que ponga en el response el archivo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 11 de enero de 2018 12:34
  • Tienes que cambiar el content-disposition para que sea inline en lugar de attachment:

    HttpContext.Current.Response.AddHeader("content-disposition", "inline");

    Con eso te saldrá dentro de la página en aquellos navegadores que lo soporten y que tengan instalado el adecuado plugin para PDF. En los demás navegadores continuará descargándose.

    Me funciono la solicion que dio Alberto, llamando desde JS a otra pagina y mostrando en esta el pdf.

    //Funcion en JS
    function AbreVentana() {
                    //window.open("WebForm2.aspx");
                    window.open('Bioempedancia.aspx', '_new');
                }
    
    //Codebehind (Page Load WebForm2)
    
    HttpContext.Current.Response.ClearHeaders();
                    HttpContext.Current.Response.Clear();
                    HttpContext.Current.Response.Buffer = false;
                    HttpContext.Current.Response.ContentType = "application/pdf";
                    HttpContext.Current.Response.AddHeader("content-disposition", "inline");
                    HttpContext.Current.Response.AddHeader("Content-Length", ArchivoPDF.Length.ToString());
                    HttpContext.Current.Response.Charset = "UTF-8";
                    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Private);
                    HttpContext.Current.Response.BinaryWrite(ArchivoPDF);
                    HttpContext.Current.Response.Flush();
                    HttpContext.Current.Response.Clear();
                    HttpContext.Current.Response.End();
    
    


    Armando Alavez De Jesus

    miércoles, 24 de enero de 2018 15:34