Afficher un PDF dans un JFrame/JPanel Java ou au moins l'image des pages de toutes les manières possibles


Pour expliquer ce que j'essaie de faire, je construis une application qui va utiliser Swing et d'autres bibliothèques pour traiter un tas de fichiers PDF en fonction des informations que l'utilisateur donne. Ce n'est vraiment pas important pour ce que j'essaie de faire ici, mais j'ai pensé qu'un aperçu serait bien.

Ce que je veux faire, c'est afficher un PDF dans un Jframe/Jpanel ou un autre composant swing afin que l'utilisateur puisse LIRE le PDF lui-même. Les PDF qu'ils liront ont des informations aime les dates et d'autres choses que je vais en avoir besoin pour entrer dans mon programme.

Je peux tout faire pour mon programme jusqu'à présent en plus d'avoir un moyen décent d'associer un PDF à des informations. Mon approche alternative était de ne pas afficher le PDF du tout et d'afficher simplement le nom du fichier et d'avoir les champs pour entrer des informations, de cette façon, ils seraient capables de lire le PDF à partir de quelque chose comme Adobe Reader et de le mettre à partir de là. Je ne veux pas le faire cependant parce que les gens qui utiliseront ce programme sont un peu plus âgés et sujettes à l'erreur. Leur demander de garder une trace des noms PDF plutôt que de simplement voir une image du PDF serait trop pour eux.

TL;DR - Besoin d'afficher des PDF ou des images de pages PDF dans le composant Swing.

Author: Kara, 2013-08-04

1 answers

La façon la plus simple que je connaisse est d'intégrer un navigateur dans une application Swing en utilisant DJ Native Swing. Ensuite, donnez un PDF au navigateur et laissez-le faire le reste.

Voici comment mettre un navigateur sur votre JFrame:

    NativeInterface.open();
    Runnable runnable = new Runnable() {
        public void run() {
            JFrame frame = new JFrame();
            JPanel panel = new JPanel();
            frame.setContentPane(panel);
            JWebBrowser browser = new JWebBrowser();
            browser.setBarsVisible(false);
            browser.setStatusBarVisible(false);
            browser.setPreferredSize(new Dimension(800,600));
            panel.add(browser);
            browser.navigate("http://www.cran.r-project.org/doc/manuals/R-intro.pdf");
            frame.pack();
            frame.setVisible(true);
        }
    };
    SwingUtilities.invokeAndWait(runnable);

Cette solution n'est cependant pas très portable.

 1
Author: Jk1, 2013-08-04 18:27:57