Flux PDF navigateur?
Quelqu'un pourrait-il me dire comment pourrais-je diffuser un document pdf vers un nouvel onglet du navigateur? Je viens de le pdf flux sur la mémoire et je veux que lorsque je clique sur le lien pour afficher le document PDF dans un nouvel onglet ou une fenêtre du navigateur.
Comment pourrais-je le faire?
Merci à tous!!!
J'ai ce lien:
<a id="hrefPdf" runat="server" href="#" target="_blank"><asp:Literal ID="PdfName" runat="server"></asp:Literal></a>
Dans mon code derrière j'ai cela sur l'événement onload:
Stream pdf= getPdf
if (pdf != null)
{
SetLinkPDF(pdf);
}
private void SetLinkPDF(IFile pdf)
{
hrefPdf.href = "MyPDF to the Browser"
PdfName.Text = pdf.PdfName;
}
D'une certaine manière, j'ai à traiter le flux pdf (IFile contient le Nom, de Flux,de Métadonnées, etc PDF)
Que puis-je faire pour proccess cela et j'ai deja cliquez sur afficher les cours d'eau à un nouveau navigateur?
J'ai un autre problème, n'est pas de travail le OnClientClick="aspnetForm.target='_blank';" timbck2 m'a suggéré. J'ai pour ouvrir le fichier (image ou pdf ) dans une nouvelle fenêtre, que pouvais-je faire? N'est pas le travail. Merci!
Timbbck2 mon code asp est:
<asp:LinkButton runat="server" ID="LinkButtonFile" OnClick="LinkButtonFile_Click" OnClientClick="aspnetForm.target = '_blank';"></asp:LinkButton>
Merci!!!
- Bienvenue sur StackOverflow! Pour obtenir une réponse positive, veuillez indiquer ce que vous avez essayé.
Vous devez vous connecter pour publier un commentaire.
Je l'ai fait à partir d'un fichier sur le disque - l'envoi des données à partir d'un flux de mémoire ne devrait pas être très différent. Vous devez fournir deux pièces de métadonnées pour le navigateur, en plus de la donnée elle-même. D'abord, vous devez fournir le type MIME des données (dans votre cas, il serait
application/pdf
), alors que la taille des données en octets (entier) dans un en-tête Content-Length, puis envoyer les données lui-même.Donc en résumé (en prenant en compte les commentaires et ce que je pense que vous demandez, votre balisage devrait ressembler à ceci:
Ces quelques lignes de code C# dans votre code derrière devrait faire l'affaire (plus ou moins):
Response.BinaryWrite()
envoie les données pdf dans le navigateur. Ou peut-être que je suis ne comprends pas votre question. Il n'est pas 100% clair pour moi ce que vous demandez.<asp:LinkButton id="whatever" runat="server" onClick="linkButton_Click" onClientClick="aspnetForm.target='_blank';">link text</asp:LinkButton>
. Cela vous aide?Pour afficher le fichier pdf directement dans le navigateur, vous devez définir un type de contenu de la réponse à
application/pdf
Votre utilisateur doit également avoir une sorte de lecteur pdf installé pour que cela fonctionne.
Avez-vous essayé Réponse.BinaryWrite?? Vous voulez probablement pour définir des en-têtes ainsi.
La réponse sommet suggère de conversion (conversion) d'un flux à un byte[] tout d'abord, qui permettra de télécharger le fichier sur le serveur (quel que soit le flux venant de l'), puis de l'envoyer au client.
Si vous avez besoin de fournir un
Stream
en tant que paramètre pour certains services externes (comme moi pour le Stockage Azure), vous pouvez utiliser la méthode suivante.Qui sera diffuser le fichier pour le client directement (autant que je sache).