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

Langage Java Discussion :

Ouvrir fichier PDF avec programme par défaut


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 20
    Points
    20
    Par défaut Ouvrir fichier PDF avec programme par défaut
    Bonjour,

    je souhaite pouvoir ouvrir un pdf contenu dans mon archive JAR lorsque je clique sur un bouton. J'ai créé une classe permettant de copier le fichier pdf dans le dossier temp puis de l'ouvrir. Tout se déroule mais mon fichier en question ne s'ouvre pas ...

    Voici ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    package gseSrc.file;
     
    import java.awt.Desktop;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import org.apache.commons.io.FileUtils;
     
     
    /**
     * <h2>About</h2>
     * Allow to open pdf<br />
     * <br />
     *
     */
    public class Openpdf {
     
    	public static void access(String fileNameInJAR, String extension) {
     
    		if(Desktop.isDesktopSupported()){	
    			if(Desktop.getDesktop().isSupported(Desktop.Action.OPEN)){
    				try {
    						InputStream pdfInJar = Openpdf.class.getClass().getResourceAsStream(fileNameInJAR);
    						File tempFile = File.createTempFile("JAR_", extension);
     
    						System.out.println("chemin temp : " +tempFile.getAbsolutePath()); 
     
    						FileUtils.copyInputStreamToFile(pdfInJar, tempFile);
     
    						pdfInJar.close();
     
    						Desktop.getDesktop().open(tempFile);
     
    					} catch (IOException e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
     
    			}
    		}
    	}
    }
    Et voici l'appel de ma classe lorsque je clique sur le bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else if (item.getText().equalsIgnoreCase("manual"))
    			{
    					Openpdf.access("/manual.pdf",".pdf");
    			}
    Je n'ai aucune exception qui apparait et le code s'exécute (j'ai mis des println() ). Une idée a mon problème ?

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    L'extension, ça doit être "pdf" et non ".pdf". A toutes fin utiles, va voir dans ton dossier temporaire si le fichier créé apparait bien avec une icone correspondant à ton lecteur pdf. Ca la seule raison que je voie serait qu'il n'y a pas d'application associée à ce type de fichier.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Le fichier est correctement créer et il apparait bien avec l'icone lecteur pdf. D'ailleurs, si au niveau de l'extension, je marque "pdf" au lieu de ".pdf" j'obtiens un fichier créer de ce genre "JAR_1601276282822340211pdf" et donc la il ne trouve pas le lecteur correspondant.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    avec n html, un .txt ou un .doc, ça fonctionne? Tu es sure de bien arriver (println) à la ligne appelant Desktop.open?

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Je viens justement de tester avec un fichier .txt et même problème, les méthodes s'exécute mais le fichier ne s'ouvre pas ...

    Et oui j'ai mis un println avant et après Desktop.getDesktop().open(tempFile) et les 2 s'affichent.

    Est-il possible de connaitre le chemin du programme par défaut appeler par Desktop.getDesktop().open(tempFile) afin de vérifier que cela marche ?

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    c'est bizarre, tu es dans un environnement particulier (genre window service) ou il s'agit d'une application que tu lance "bêtement" depuis ton ide ou le bureau?

    Parce que, les cas d'erreur renvoient tous une exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        NullPointerException - if file is null 
        IllegalArgumentException - if the specified file dosen't exist 
        UnsupportedOperationException - if the current platform does not support the Desktop.Action.OPEN action 
        IOException - if the specified file has no associated application or the associated application fails to be launched 
        SecurityException - if a security manager exists and its SecurityManager.checkRead(java.lang.String) method denies read access to the file, or it denies the AWTPermission("showWindowWithoutWarningBanner") permission, or the calling thread is not allowed to create a subprocess
    Si aucune exception n'est lancée, le fichier existe, est associé à une application, desktop supporte l'ouverture et tu as les droit pour exécuter un process :s

    Le deux seuls cas restant que j'arrive à imaginer:
    1) l'application de lancement foire (une oui, mais que notepad déconne aussi....)
    2) tout apparait sur un autre écran (d'ou ma question sur les services)
    3) un autre truc tordu que j'expliquerais après, tu peux me dire si open marche avec un fichier déjà existant (pas un que tu viens d'extraire du .jar) ?

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Je suis sous windows XP et j'exécute mon code sous Eclipse.

    Non, open() ne marche pas même si le fichier à ouvrir se trouve à l'extérieur de mon fichier JAR :/

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Bon, ben j'ai plus d'idée

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    bon , ba merci quand même .
    J'envisage alors d'intégrer ma documentation dans le code. J'ai cherché sur le net mais j'ai trouvé que peu d'infos

    J'ai vu qu'il y avait JavaHelp, existe-t'il d'autre solution ?
    Ou puis-je trouver des tutoriels complet ?
    Existe-t'il des logiciels permettent de réaliser facilement cette documentation ?

Discussions similaires

  1. Lancer fichier avec programme par défaut
    Par chuckdu21 dans le forum Développement Windows
    Réponses: 0
    Dernier message: 26/12/2013, 17h32
  2. [PHP 5.2] Ouvrir un fichier video avec programme par défaut
    Par paidge dans le forum Langage
    Réponses: 4
    Dernier message: 29/03/2013, 11h35
  3. ouvrir fichier pdf avec vb.net
    Par wassim hamrouni dans le forum VB.NET
    Réponses: 6
    Dernier message: 21/04/2011, 09h53
  4. [C# 2.0] Ouvrir fichier texte dans editeur par défaut
    Par lenoil dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/11/2007, 16h19
  5. [Système] Ouvrir fichier externe avec prog par défaut de l'OS
    Par Pill_S dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 30/05/2004, 11h54

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