none
Abrir archivo en nueva ventana!. RRS feed

  • Pregunta

  • Hola Amigos necesito ayuda, quiero lo siguiente.

    tengo este código para abrir un archivo dentro de mi sitio web asp.net

     Response.ContentType = "application/pdf"
                Response.ContentEncoding = System.Text.Encoding.UTF8
                Response.AppendHeader("NombreCabecera", "MensajeCabecera")
                Response.TransmitFile(ruta)
                Response.End()

    el problema es que lo abre en la misma ventana. hasta el momento no se como hacer para abrirlo en una nueva venta. alguien que me ayude por favor. Gracias de antemano! Saludos!.


    Raul Ulloa

    lunes, 19 de marzo de 2018 21:56

Respuestas

  • En lugar de devolver el archivo, tienes que devolver la misma página pero incorporando un pedacito de javascript que haga un window.open. Típicamente el javascript lo incrustarías mediante una llamada a Page.ClientScript.RegisterStartupScript.

    Ese javascript es el que hace que se abra una nueva ventana. Y el contenido de la ventana se obtiene de la url que le pasas como argumento al windows.open. Ahí es donde le pones una url que apunte a una página que sea la que devuelve el fichero, usando en esa nueva página el código que mostraste en tu pregunta. De esa forma, el pdf se abre dentro de la nueva ventana.

    Nota: esto no funcionará en todos los navegadores, únicamente en los que tengan configurado un lector de pdf que sea capaz de mostrar el pdf dentro de la ventana del navegador. En los que no lo tengan, se te presentará el clásico diálogo que pregunta si lo quieres salvar, con independencia de que uses o no uses el window.open.

    • Marcado como respuesta Raul Ulloa martes, 20 de marzo de 2018 1:34
    lunes, 19 de marzo de 2018 22:27

Todas las respuestas

  • En lugar de devolver el archivo, tienes que devolver la misma página pero incorporando un pedacito de javascript que haga un window.open. Típicamente el javascript lo incrustarías mediante una llamada a Page.ClientScript.RegisterStartupScript.

    Ese javascript es el que hace que se abra una nueva ventana. Y el contenido de la ventana se obtiene de la url que le pasas como argumento al windows.open. Ahí es donde le pones una url que apunte a una página que sea la que devuelve el fichero, usando en esa nueva página el código que mostraste en tu pregunta. De esa forma, el pdf se abre dentro de la nueva ventana.

    Nota: esto no funcionará en todos los navegadores, únicamente en los que tengan configurado un lector de pdf que sea capaz de mostrar el pdf dentro de la ventana del navegador. En los que no lo tengan, se te presentará el clásico diálogo que pregunta si lo quieres salvar, con independencia de que uses o no uses el window.open.

    • Marcado como respuesta Raul Ulloa martes, 20 de marzo de 2018 1:34
    lunes, 19 de marzo de 2018 22:27
  • hola

    ese codigo envia en el response el archivo, esta claro que lo veras en el browser

    vas a tener que usar librerias como ser

    pdf.js

    para ver el pdf dentro de la pagina

    pero quizas no puedas enviarlo directo en el response de la misma pagina sino que debas crear un aspx diferente

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 20 de marzo de 2018 0:05
  • Gracias Alberto! gracias a tu idea pude investigar y logre hacerlo editando un poco los códigos que encontré, lo deje  de la siguiente manera.

    En el Botton para abrir el pdf llamo la siguiente función.

     Public Sub OpenNewWindow2()
            Dim url As String = "abrirpdf.aspx?FN=Documento.pdf"
            Dim Script As String = "<script type='text/javascript'>window.open('" + url + "')</script>"
            ClientScript.RegisterStartupScript(Me.[GetType](), "Script", Script)
        End Sub

    luego cree un webform extra llamado abrirpdf.aspx dentro del load de la pagina va el siguiente código

     Dim filePath As String
                filePath = Server.MapPath("~/Documentos/") + Request.QueryString("FN")
                Response.ContentType = "application/pdf"
                Response.AppendHeader("Content-Disposition;", "attachment;filename=" + Request.QueryString("FN"))
                Response.WriteFile(filePath)
                Response.End()

    especificando donde buscar el documento que intento abrir.

    Espero le sea de ayuda a alguien mas.


    Raul Ulloa

    martes, 20 de marzo de 2018 1:42