¿Cómo abrir un archivo PDF en una nueva pestaña o ventana en lugar de descargarlo (usando asp.net)?

Este es el código para descargar el archivo.

System.IO.FileStream fs = new System.IO.FileStream(Path+"\\"+fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read); byte[] ar = new byte[(int)fs.Length]; fs.Read(ar, 0, (int)fs.Length); fs.Close(); Response.AddHeader("content-disposition", "attachment;filename=" + AccNo+".pdf"); Response.ContentType = "application/octectstream"; Response.BinaryWrite(ar); Response.End(); 

Cuando se ejecuta este código, le pedirá al usuario que abra o guarde el archivo. En lugar de esto, necesito abrir una nueva pestaña o ventana y mostrar el archivo. ¿Cómo puedo conseguir esto?

NOTA:

El archivo no se ubicará necesariamente en la carpeta del sitio web. Puede estar ubicado en otra carpeta.

En lugar de cargar una secuencia en una matriz de bytes y escribirla en la secuencia de respuesta, debería echarle un vistazo a HttpResponse.TransmitFile

 Response.ContentType = "Application/pdf"; Response.TransmitFile(pathtofile); 

Si desea que el PDF se abra en una nueva ventana, deberá abrir la página de descarga en una nueva ventana, por ejemplo, de esta manera:

 View PDF 
 Response.ContentType = contentType; HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=" + fileName); Response.BinaryWrite(fileContent); 

Y

  

En javaScript:

  

Asegúrese de restablecer el destino , de lo contrario, todas las demás llamadas como Response.Redirect se abrirán en una nueva pestaña, que podría no ser la que usted desea.

esto puede ayudar

 Response.Write(""); 

Debe crear otra página o controlador genérico con el código para generar su pdf. Entonces ese evento se activa y la persona es redirigida a esa página.

puede devolver un FileResult de su acción de MVC.

********************* MVC action ************

  public FileResult OpenPDF(parameters) { //code to fetch your pdf byte array return File(pdfBytes, "application/pdf"); } 

************** js **************

Utilice formpost para publicar sus datos en acción

  var inputTag = ''; var form = document.createElement("form"); jQuery(form).attr("id", "pdf-form").attr("name", "pdf-form").attr("class", "pdf-form").attr("target", "_blank"); jQuery(form).attr("action", "/Controller/OpenPDF").attr("method", "post").attr("enctype", "multipart/form-data"); jQuery(form).append(inputTag); document.body.appendChild(form); form.submit(); document.body.removeChild(form); return false; 

Debe crear un formulario para publicar sus datos, anexarlo, publicar sus datos y eliminar el formulario del cuerpo de su documento.

Sin embargo, la publicación de formulario no publicará datos en la nueva pestaña solo en el navegador EDGE . Pero una solicitud de obtención funciona ya que solo está abriendo una nueva pestaña con una url que contiene cadena de consulta para sus parámetros de acción.

Aquí estoy usando iTextSharp dll para generar archivos PDF. Quiero abrir un archivo PDF en lugar de descargarlo. Así que estoy usando el siguiente código que funciona bien para mí. Ahora el archivo pdf se está abriendo en el navegador, ahora descargando

  Document pdfDoc = new Document(PageSize.A4, 25, 10, 25, 10); PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDoc, Response.OutputStream); pdfDoc.Open(); Paragraph Text = new Paragraph("Hi , This is Test Content"); pdfDoc.Add(Text); pdfWriter.CloseStream = false; pdfDoc.Close(); Response.Buffer = true; Response.ContentType = "application/pdf"; Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.End(); 

Si desea descargar un archivo, agregue la siguiente línea, después de este Response.ContentType = “application / pdf”;

 Response.AddHeader("content-disposition", "attachment;filename=Example.pdf"); 

Usa este código Esto funciona como un campeón.

 Process process = new Process(); process.StartInfo.UseShellExecute = true; process.StartInfo.FileName = outputPdfFile; process.Start();