IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#][IE] Plugin Adobe Reader dans WebBrowser


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 14
    Points : 13
    Points
    13
    Par défaut [C#][IE] Plugin Adobe Reader dans WebBrowser
    Salut à tous !

    Voilà, je m'en remets à vous car après maintes recherches, impossible de trouver une solution à mon problème (en espérant poster au bon endroit)...

    Mon projet est très simple : il s'agit d'un composant WebBrowser placé simplement sur la fenêtre principale.
    J'y affiche une page me permettant, via un appel JavaScript, de changer le contenu d'un DIV comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("mainContainer").innerHTML = "<object id=\"docPreview\" type=\"application/pdf\" data=\""+docUrl+"\"></object>";

    Vous l'avez compris, le but est d'implémenter un visualiseur PDF (et autres formats qui eux fonctionnent bien).
    J'ai donc mon fichier HTML en local, qui marche à merveille si je le teste directement sous Internet Explorer.

    Dans mon projet, la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    webBrowser1.Url = new Uri(@"C:\Users\...\viewer.html");

    me permet d'afficher la page dans le controle, et tout fonctionne parfaitement.
    Si j'appelle ma fonction depuis mon projet C#, Adobe Reader se lance dans le navigateur et m'affiche le PDF comme prévu.

    Jusque la, tout va bien.
    Mais voila, j'aimerais inclure mon fichier HTML dans mon programme sous forme de byte[] ou de resource, et l'afficher via la propriété DocumentStream du WebBrowser comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    webBrowser1.DocumentStream = new MemoryStream(htmlContent);

    Et c'est la que ca coince !
    La page s'affiche correctement, mais quand je demande l'affichage d'un PDF, le plugin ne démarre pas.
    Si je regarde dans la liste des processus, AcroRd32.exe se lance correctement, mais rien ne s'affiche sur ma page...

    Je soupçonne Adobe Reader de ne pas apprécier l'URL about:blank, qui est automatiquement chargée lors de l'attribution de DocumentStream ...

    Quelqu'un aurait-il une idée pour pouvoir embarquer la page dans mon projet sans toutefois gêner l'exécution du plugin ?
    Je sais que je pourrais utiliser directement un contrôle Adobe Reader en parallèle dans mon application, mais je préfère éviter cette solution si possible, et utiliser le composant WebBrowser pour l'affichage.

    Merci d'avance pour votre aide,
    A bientôt

    Arnaud.

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Bon c'est peux être moins sexy au niveau interface dans le programme mais niveau fonctionnel ça a le mérite d'être "efficace":

    Je te conseille d'utiliser l'instruction

    Process.Start(URLdelaRessource)

    Ainsi Windows va ouvrir la ressource avec le programme qui va bien pour ça selon la configuration du poste de l'utilisateur. (Et d'expérience l'utilisateur n'aime pas trop les pseudo navigateur web home made sans barre d'adresse, gestion des favoris et tout le reste parce que ça n'apporte pas souvent grand chose en réalité!).

    http://www.dotnetperls.com/process-start-vbnet

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Salut,
    D'abord merci pour ta réponse.

    En effet, ce n'est pas vraiment très "propre" comme procédé, mais le projet est pour utilisation personnelle, donc pas de problème à ce niveau.
    De plus, cette méthode me permet de générer des aperçus pour pas mal de fichiers (images, texte, HTML, PDF, Word, Excel, ...), et ce de manière quasiment transparente.

    Je pense plutot que la solution la plus facile serait d'embarquer la source HTML dans le programme, générer un fichier .html temporaire, y copier le code, et l'afficher ensuite dans le navigateur.
    Le fichier temporaire pourra être supprimé à la fermeture du programme.
    Et puisque je dois de toute manière utiliser un fichier PDF temporaire pour générer certains aperçus, ca ne changera pas grand chose...

    Je passe le poste en résolu.
    Merci quand même !

    Arnaud

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/01/2012, 15h29
  2. Réponses: 0
    Dernier message: 24/11/2011, 09h57
  3. Problème pour afficher un pdf dans Adobe Reader
    Par jmmaugis dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 20/10/2010, 09h35
  4. Réponses: 12
    Dernier message: 30/10/2009, 17h06
  5. TR/Crypt.XPACK.Gen détecté dans Adobe Reader 8.1.3 ?
    Par Auteur dans le forum Sécurité
    Réponses: 10
    Dernier message: 19/11/2008, 22h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo