IHttpHandler Réponse.ContentType = “application/pdf” cassé dans IE8
Cela fonctionne dans Chrome et Firefox, mais IE8 affiche rien...
Quand j'ai essayé le même code dans un webforms clic de bouton, il fonctionne sur les trois navigateurs.
Comment puis-je obtenir que cela fonctionne dans IE8?
public class ShowPDF : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//create PDF document
var document = new PdfDocument();
var page = document.AddPage();
var font = new XFont("Verdana", 20, XFontStyle.Bold);
var gfx = XGraphics.FromPdfPage(page);
gfx.DrawString("Hello, World!", font
, PdfSharp.Drawing.XBrushes.Black
, new PdfSharp.Drawing.XRect(0, 0, page.Width, page.Height)
, PdfSharp.Drawing.XStringFormats.Center
);
//Send PDF to browser
var stream = new System.IO.MemoryStream();
document.Save(stream, false);
context.Response.Clear();
context.Response.ContentType = "application/pdf";
context.Response.AddHeader("content-length", stream.Length.ToString());
context.Response.BinaryWrite(stream.ToArray());
context.Response.Flush();
stream.Close();
context.Response.End();
}
public bool IsReusable
{
get
{
return false;
}
}
}
Si le code fonctionne avec FF et Chrome, le problème est plus probable que l'application/pdf type mime n'est pas enregistré avec IE. Êtes-vous en mesure d'accéder à d'autres liens du PDF à partir de IE?
Oui, quand je l'ai mis dans un aspx clic de bouton, il travaille dans IE8 très bien. Quand je l'ai mis dans le chargement de la page, il n'affiche rien.
Avez-vous essayé IE9?
Non, je suis sous Windows XP.
Que voulez-vous dire par "mettre au chargement de la page"? Pouvez-vous nous montrer la capture de code de vous y mettre? J'ai essayé votre code ci-dessus (ne pas avoir le PdfSharp composante j'ai donc substitué une réelle PDF que j'avais déjà et chargé dans le MemoryStream à la place) et il a très bien fonctionné dans internet explorer 8 sur Windows XP. J'déclencher le téléchargement à partir d'un bouton sur un formulaire, où le onclick "window.emplacement.href = 'ShowPDF.ashx';"
Oui, quand je l'ai mis dans un aspx clic de bouton, il travaille dans IE8 très bien. Quand je l'ai mis dans le chargement de la page, il n'affiche rien.
Avez-vous essayé IE9?
Non, je suis sous Windows XP.
Que voulez-vous dire par "mettre au chargement de la page"? Pouvez-vous nous montrer la capture de code de vous y mettre? J'ai essayé votre code ci-dessus (ne pas avoir le PdfSharp composante j'ai donc substitué une réelle PDF que j'avais déjà et chargé dans le MemoryStream à la place) et il a très bien fonctionné dans internet explorer 8 sur Windows XP. J'déclencher le téléchargement à partir d'un bouton sur un formulaire, où le onclick "window.emplacement.href = 'ShowPDF.ashx';"
OriginalL'auteur Garfield | 2011-12-22
Vous devez vous connecter pour publier un commentaire.
Résolu! Il descendit à la configuration de votre navigateur.
@BrianRogers - Merci pour les tests. J'ai essayé "de la fenêtre.emplacement.href = 'ShowPDF.ashx';" comme vous l'avez fait et IE8 affiche une page blanche. Cela m'a amené à remettre en question ma configuration du navigateur. J'ai désinstallé Foxit Reader et installer Adobe Reader. Maintenant, tout fonctionne comme prévu.
La confusion a été quand j'ai mis le code pour rendre le document pdf dans un aspx côté serveur clic de bouton, IE8 affiche le PDF! Allez comprendre! Pour cette raison, je n'étais pas le questionnement de mon navigateur configuration antérieure.
OriginalL'auteur Garfield