Comment ouvrir le fichier PDF dans un nouvel onglet ou une nouvelle fenêtre au lieu de le télécharger (avec asp.net)?

C’est le code pour télécharger le fichier.

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(); 

Lorsque ce code est exécuté, il demandera à l’utilisateur d’ouvrir ou de sauvegarder le fichier. Au lieu de cela, je dois ouvrir un nouvel onglet ou une nouvelle fenêtre et afficher le fichier. Comment puis-je atteindre cet objective?

REMARQUE:

Le fichier ne sera pas nécessairement situé dans le dossier du site Web. Il se peut qu’il soit situé dans un autre dossier.

Au lieu de charger un stream dans un tableau d’octets et de l’écrire dans le stream de réponse, vous devriez jeter un coup d’œil à HttpResponse.TransmitFile.

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

Si vous voulez que le PDF s’ouvre dans une nouvelle fenêtre, vous devez ouvrir la page de téléchargement dans une nouvelle fenêtre, par exemple comme ceci:

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

Et

  

En javaScript:

  

Prenez soin de réinitialiser la cible , sinon tous les autres appels comme Response.Redirect s’ouvriront dans un nouvel onglet, ce qui pourrait ne pas être ce que vous voulez.

cela peut aider

 Response.Write(""); 

Vous devez créer une autre page ou un gestionnaire générique avec le code pour générer votre pdf. Ensuite, cet événement est déclenché et la personne est redirigée vers cette page.

vous pouvez retourner un FileResult à partir de votre action MVC.

********************** Action du MVC *************

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

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

Utilisez formpost pour publier vos données en action

  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; 

Vous devez créer un formulaire pour publier vos données, y append votre nom de domaine, poster vos données et supprimer le formulaire du corps de votre document.

Cependant, la publication de formulaire ne publierait pas les données dans un nouvel onglet uniquement sur le navigateur EDGE . Mais une requête get fonctionne car il s’agit simplement d’ouvrir un nouvel onglet avec une URL contenant une chaîne de requête pour vos parameters d’action.

Ici, j’utilise iTextSharp dll pour générer un fichier PDF. Je veux ouvrir le fichier PDF au lieu de le télécharger. Donc, j’utilise le code ci-dessous qui fonctionne très bien pour moi. Maintenant le fichier pdf s’ouvre dans le navigateur, maintenant le téléchargement

  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 vous souhaitez télécharger le fichier, ajoutez la ligne ci-dessous après ce message Response.ContentType = “application / pdf”;

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

Utilisez ce code. Cela fonctionne comme un champion.

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