EDIT 2PDF en iframe modal rend vide dans IE
Il semble que déplacer la balise d'objet dans le Dom est la cause du problème. J'ai ajouté un iframe directement à la page et cela fonctionne très bien sans aucun problème.
Cependant, lorsque je déplace cet iFrame dans une boîte de dialogue modale (http://www.ericmmartin.com/projects/simplemodal/), le PDF disparaît (le repère d'objet ne s'affiche plus correctement). Il semble donc que ce n'est plus une question à propos de mon gestionnaire, mais plutôt une question de savoir pourquoi le déplacement de la balise "object" (ou embed) dans le DOM (qui vit dans un iFrame) l'amène à "masquer" "
De même, lorsque le pdf est déplacé du dialogue modal vers sa position d'origine, il apparaît correctement. Donc, peut-être que je devrais me concentrer davantage sur le dialogue modal lui-même.
Pensées? Merci pour vos suggestions jusqu'à présent.
EDIT 1
J'ai fait quelques modifications pour les tests.
J'ai le iframe pour sortir une étiquette d'objet pour des demandes de pdf avec l'heure de serveur.
Response.AddHeader("content-type", "text/html");
WebClient client = new WebClient();
Response.Write("<html><head></head><body><h1>"+ DateTime.Now.ToString() + "</h1><object height='100%' width='100%' name='plugin' data='" + Request.Url.ToString() + "&embed=true' type='application/pdf' /></body></html>");
Response.Flush();
Response.Close();
Response.End();
Maintenant je une page avec l'heure actuelle correctement, mais l'objet affiche seulement le PDF la première fois après que je publierai la page ASPX. Donc, il semble être une sorte de problème de mise en cache? Sauf que l'objet ne charge rien (pas même le PDF précédemment chargé).
Si vous cliquez avec le bouton droit sur l'iframe et actualisez la page, l'objet se charge correctement. (La même chose est vraie si j'utilise une balise embed).
Original Question
Je sais qu'il ya beaucoup de questions sur ce ...
- streaming PDF data through an ASPX page
- Server generated PDF not displaying in IFrame on aspx page on some (but not all)PCs
- Displaying a PDF Document in ASP.net page
Mais ils n'ont pas été répondus, ou la réponse n'a pas fonctionné.
Environnement
- .Net 4
- Adobe 9.3.4
- IIS 5.1
- XP sp3
- VS 2010
- IE 8.0.6001.18702
Contexte
Années pdf Je suis le streaming Venues d'une référentiel de stockage où les fichiers ne comportent pas d'extensions (ce qui est fait pour la sécurité). Je regarde le fichier dans la base de données et le diffuser au client via le code suivant:
Response.Clear();
WebClient client = new WebClient();
Byte[] buffer = client.DownloadData(sPath);
Response.AddHeader("content-length", buffer.Length.ToString());
Response.AddHeader("content-disposition", "inline;filename=" + fileName);
Response.AddHeader("expires", "0");
Response.AddHeader("Content-Type", "application/pdf"); //this is usually dynamic to support other types (doc, xls, txt, etc.)
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
Response.Close();
Response.End();
Cela fonctionne pour tous les types de fichiers (doc, txt, xls, html) lorsqu'il est directement utilisé dans le navigateur ou l'iframe (affiché comme une fenêtre contextuelle modale) avec l'exception de fichiers pdf. Ils ne fonctionnent pas de manière fiable lorsqu'ils sont accessibles via l'iframe, mais fonctionnent correctement lorsqu'ils sont accédés directement dans le navigateur.
La première fois que cela fonctionne, c'est la première fois que je demande un document après avoir publié la page ASPX qui sert ces fichiers. Toutes les occurrences suivantes renvoient une page vierge (même à partir de nouveaux onglets ou fenêtres de navigateur). Firefox affiche de manière fiable le pdf à chaque fois indépendamment.
Tentatives Solutions
J'ai essayé différentes façons I de diffusion du fichier:
Response.TransmitFile(sPath);
Response.WriteFile(sPath);
//As well as some others
J'ai essayé d'ajouter .pdf à un paramètre à la fin de la demande
http://www.myurl.aspx?File=test.pdf
J'ai essayé de rendre l'URL unique en ajoutant un horodatage
http://www.myurl.aspx?File=test.pdf&Unique=Friday__September_17__2010_12_02_16_PM
Un-Tentative
J'ai lu des problèmes provoquant une compression IIS, mais il était une version plus récente d'IIS.
N'a pas essayé d'utiliser la balise embed puisque je voudrais m'en tenir au iFrame si possible (l'infrastructure existante l'utilise).
Toute aide serait grandement appréciée !!!
Merci.
Merci, mais maintenant je reçois le même comportement à l'exception que le fichier est téléchargé et ouvert dans l'application native. Cela ne fonctionne toujours que la première fois après la publication de mon site. –