web-dev-qa-db-fra.com

Ouvrez le fichier PDF à la volée à partir d'une application Java

Existe-t-il un moyen d'avoir un code qui ouvre un fichier PDF en Java d'une manière indépendante de la plate-forme? Je veux dire que l'utilisation d'un fichier batch dans Windows pourrait faire Existe-t-il un autre moyen d'avoir un code indépendant de la plate-forme pour ouvrir les fichiers PDF à la volée?

37
Mr CooL

J'essaierais Desktop.open(File) , ce qui:

Lance l'application associée pour ouvrir le fichier.

Donc, ce code devrait faire l'affaire:

if (Desktop.isDesktopSupported()) {
    try {
        File myFile = new File("/path/to/file.pdf");
        Desktop.getDesktop().open(myFile);
    } catch (IOException ex) {
        // no application registered for PDFs
    }
}
83
Michael Myers

Vous pouvez utiliser Runtime pour exécuter et scripter et il y a aussi plusieurs Java PDF téléspectateurs là-bas (ie Icepdf, JPedal, PDFRenderer).

3
mark stephens

La solution de Michael Meyer n'a pas vraiment fonctionné pour moi. Plus précisément, un chemin avec des espaces échoue avec une exception IllegalArgumentException plutôt qu'avec une exception IOException.

Voici ce qui fonctionne pour moi:

    if (Desktop.isDesktopSupported()) {
try {
File theUMFile = new File(usersManualPath);
 Desktop.getDesktop().open(theUMFile);
}
catch (FileNotFoundException fnf){
okDialog(msg_fnf);
theConcours.GetLogger().log(Level.SEVERE, null, fnf);
theConcours.GetLogger().info(msg_fnf);
}
catch (IllegalArgumentException fnf) {
 okDialog(msg_fnf);
            theConcours.GetLogger().log(Level.SEVERE, null, fnf);
            theConcours.GetLogger().info(msg_fnf);
        }
        catch (IOException ex) {
            okDialog(msg_cno);
            theConcours.GetLogger().log(Level.SEVERE, null, ex);
            theConcours.GetLogger().info(msg_cno);
        }
    } 
1
Ed S

Utilisez-le pour ouvrir un fichier pdf en utilisant Java

File file = new File(filepath);
    if (file.toString().endsWith(".pdf")) 
        Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + file);
    else {
        Desktop desktop = Desktop.getDesktop();
        desktop.open(file);
}

Ce code est utilisé pour ouvrir votre pdf et autres fichiers.

0
amit