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

VB.NET Discussion :

Exécuter un PDF situé dans les ressources


Sujet :

VB.NET

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut Exécuter un PDF situé dans les ressources
    Salut,

    J'aimerais exécuter un pdf que j'ai ajouté aux ressources de mon projet.
    J'ai trouvé quelques messages pour ouvrir des word, etc, mais qui ne sont pas situés dans les ressources. Quel est son "chemin" pour l'execution?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Salut,

    Si tu as placé les PDF dans les ressources emarquées, il risque d'être difficile de l'exécuter directement car le fichier est embarqué dans l'assembly. Il n'y a pas de chemin car le fichier est représenté par un bloc mémoire. Le plus simple dans ce cas c'est d'extraire avant l'ouverture ce fichier vers un répertoire Temporaire afin qu'un lecteur de pdf puisse le lire.

  3. #3
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    D'accord, merci. J'ai cependant un problème: quand j'ajoute un fichier pdf dans les ressoures, je ne parviens pas à faire My.Resources.monfichier.Save("monfichier.pdf"), visual studio me souligne la ligne en me disant qu'il y a une erreur (ça à l'air de planter pour les fichiers pdf).

    Comment faire?
    Merci

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Re,

    en réalité c'est un peu plus complexe. Les fichiers ajoutés en resouces, "perdent" la notion de ficheir, c'est à dire qu'ils deviennent un bloc mémoire intégrés à l'assembly. C'est un tableau de byte[]. Il faut donc repasser par un FileStream pour l'enregistrer.

  5. #5
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Voila ce que j'ai trouvé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim stream As System.IO.UnmanagedMemoryStream = My.Resources.help
    Dim streamFile As New System.IO.FileStream("fichier_temp.pdf", IO.FileMode.Create)
    Dim data(stream.Length) As Byte
    stream.Read(data, 0, data.Length)
    streamFile.Write(data, 0, data.Length)
    streamFile.Flush()
    streamFile.Close()
    Pourtant, il y a incompatibilité de type entre la variable stream et My.Resources.help (help le nom de ma ressource pdf).

    Quel est le type de variable à utiliser?
    Merci

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    My.Resources.help n'est il pas de type byte[] ?

  7. #7
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Merci

    Mais voila, je ne parviens pas à lancer le fichier ensuite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim stream() As Byte = My.Resources.help
    Dim streamFile As New System.IO.FileStream(Application.StartupPath & "/help.pdf", IO.FileMode.Create)
    streamFile.Write(stream, 0, streamAudio.Length)
    streamFile.Flush()
    streamFile.Close()
    Shell(Application.StartupPath & "/help.pdf", AppWinStyle.MaximizedFocus)
    Il me dit que le fichier est introuvable. Mais quand je parcours l'explorateur, le fichier est bien là et s'ouvre très bien manuellement!
    Une idée?

    Merci

  8. #8
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    J'ai trouvé, j'ai simplement remplacé le shell par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim myProcess As New Process()
    myProcess.StartInfo.FileName = Application.StartupPath & "\help.pdf"
    myProcess.Start()

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Attention tout de même si il n'y a pas d'application associé au type pdf ...

  10. #10
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Heu, pardon pour la question, mais Acrobat Reader n'est pas l'application associée?

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

Discussions similaires

  1. Afficher un pdf placé dans les ressources
    Par Gualino dans le forum VB.NET
    Réponses: 6
    Dernier message: 27/01/2012, 11h34
  2. Réponses: 3
    Dernier message: 26/02/2007, 18h00
  3. Réponses: 1
    Dernier message: 05/10/2006, 14h31
  4. Réponses: 3
    Dernier message: 02/08/2006, 09h21
  5. Réponses: 5
    Dernier message: 16/07/2005, 00h01

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