2010-04-12 4 views
2

J'utilise un contrôle Winforms webbrowser pour afficher le contenu HTML stocké dans ma table DB SQL. Cependant, certains de mes contenus sont des fichiers PDF que j'ai l'intention de stocker en tant que données binaires dans la base de données SQL et de les transmettre au contrôle Webbrowser. Je souhaite éviter les tracas de stocker le contenu binaire dans un fichier temporaire sur l'ordinateur client, puis créer un code de conteneur html pour référencer ce fichier PDF temporaire. Existe-t-il un moyen d'intégrer directement le contenu binaire PDF dans le HTML et d'afficher directement ce HTML sur le contrôle webbrowser?Comment puis-je obtenir le contrôle C# Winforms Webbrowser pour afficher le contenu PDF incorporé dans le fichier html en tant que contenu binaire?

J'ai trouvé ces threads précédents faisant référence à un 'hack' COM. Y a-t-il un moyen plus simple et plus facile? Merci! How do I get a C# WebBrowser control to show jpeg files (raw)?

Merci, uniball

+0

Qu'est-ce que le plugin PDF pour IE? Peut-il lire des endroits autres que url/système de fichiers? IE/WebBrowser ne supporte pas le format PDF. –

Répondre

2

Je ne dirais pas que la mise en œuvre d'un protocole débrochable asynchronus est un hack. C'est l'approche standard sur Windows pour implémenter un nouveau protocole que IE pourra utiliser. L'enregistrement du gestionnaire de protocole nécessite cependant une installation fastidieuse.

Mais le moyen le plus simple/le plus simple est d'utiliser un fichier temporaire et de le lier simplement à partir de votre code html. Ce n'est pas embêtant vous offrir de prendre soin d'utiliser les fonctions .NET pertinentes pour assurer votre code ne fait pas d'hypothèses sur le dossier/chemins de fichiers, etc.

  1. Utilisez GetTempPath() pour obtenir le dossier temp.
  2. Créez un fichier PDF dans le dossier temporaire avec un nom unique en utilisant Guid.NewGuid()
  3. Ecrivez vos données PDF binaires dans le fichier.
  4. Mettez à jour les attributs href href ou src pour pointer le chemin d'accès complet du fichier temporaire.
  5. Chargez le code HTML dans le contrôle WebBrowser.
  6. Supprimez le fichier PDF temporaire lorsqu'il n'est plus nécessaire.

Une autre approche possible serait de coder Base64 vos données binaires et de les stocker dans un élément DIV/Entrée. Ensuite, ajoutez un contrôle ActiveX ou un autre composant broswer côté client à votre page html qui sait comment rechercher les données Base64 et peut le réintégrer dans un flux binaire (et l'afficher au format PDF). Je ne suis pas au courant d'un contrôle de fête en 3D qui fait cela cependant.

+0

Merci pour les étapes. Je pense que c'est la voie à suivre. Je vais garder ce fil ouvert pour voir s'il y a d'autres solutions. Merci! – user274816

Questions connexes