Lire un fichier PDF via JFrame [Résolu]

- - Dernière réponse : djavez
Messages postés
1
Date d'inscription
jeudi 19 juin 2014
Dernière intervention
19 juin 2014
- 19 juin 2014 à 14:23
Bonjour,
Mon travail de Master est d'indexer les documents PDF par une application JAVA et dans un premiers temps j'ai besoin de connaitre comment lire 'afficher' un document pdf

J'ai besoin d'un code source pour lire un fichier PDF via JFRAME de java et les outils nécessaires pour ça (API, ...)
Merci d'AVANCE
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
1
Date d'inscription
jeudi 19 juin 2014
Dernière intervention
19 juin 2014
2
Merci
Pour afficher un Pdf dans une JFrame, il faut utiliser les bibliothèques itext et pdf-renderer.
Voici le code que j'utilise :
import java.awt.Image;
import java.awt.Rectangle;
import java.io.*;
import java.nio.channels.*;
import java.nio.ByteBuffer;

import javax.swing.*;

import com.itextpdf.text.DocumentException;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;

public class PDFapercu {
 PDFFile pdffile;
 PDFPage page;
 JPanel panneau;
 String nomFichier ="";
 //Construct
 public PDFapercu(String nomFichier){
  this.nomFichier = nomFichier;
  SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                 previewPDFDocumentInImage();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        });
 }
 
 public void createPage() throws IOException{
  panneau = new JPanel();
   
  // Chargement du pdf
  //File file = new File("c:/temp/monFichier.pdf");
  File file = new File(nomFichier);
  RandomAccessFile raf = new RandomAccessFile(file, "r");
  FileChannel channel = raf.getChannel();
  ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
  
  pdffile = new PDFFile(buf);
  
  // on affiche la premiere page
  goToPage(1);
 }
 
 public void goToPage(int nbpage) throws IndexOutOfBoundsException
 {
  if(nbpage<1||nbpage>pdffile.getNumPages())
   throw new IndexOutOfBoundsException("index invalide demande : "+nbpage);
  page = pdffile.getPage(nbpage);
  
 }
 
 public void previewPDFDocumentInImage() throws IOException {
  
  createPage();
  
        //get the width and height for the doc at the default zoom
        Rectangle rect =
            new Rectangle(0, 0, (int)page.getBBox().getWidth(), (int)page.getBBox().getHeight());

        //generate the image
        Image img = page.getImage(rect.width, rect.height, //width & height
                rect, // clip rect
                null, // null for the ImageObserver
                true, // fill background with white
                true) // block until drawing is done
        ;
        JScrollPane scroller = new JScrollPane(new JLabel(new ImageIcon(img)));
        //show the image in a frame
        JFrame frame = new JFrame("yes yes yes  PDF document");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //frame.add(new JLabel(new ImageIcon(img)));
        frame.add(scroller);
        frame.pack();
        frame.setVisible(true);
    }
}



Edit : Ajout des balises de code !

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de djavez
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
1
Merci
Salut,

Il me semble qu'il n'existe pas d'API gratuite te permettant de faire cela

Ce n'est pas entièrement satisfaisant mais la seule solution serait :
Desktop.open(new File("fichier.pdf"));
Commenter la réponse de cs_Julien39
0
Merci
Salut,
J'ai testé votre solution, il ça marche bien avec l'instruction Desktop.getDesktop().open(new File("C:\\AIDE13.pdf")); MAIS ce n'est mon objectif car le résultat a été affiché dans l'éditeur pdf et CE N'EST PAS DANS JFRAME.
J'ai trouvé une autre solution pour ouvrir un fichier HTML via URL dans JEditorPane, j'essaye d'utiliser l'idée pour ouvrir un fichier PDF

Merci bien pour votre Aide
Commenter la réponse de Sousou
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
0
Merci
Il me semble que tu ne peux pas aboutir de cette manière, c'est ton navigateur qui gère l'affichage des fichiers PDF, et même si JEditorPane te permet d'afficher du html, ce n'est pas un navigateur.

Tu es coincé je pense...
Commenter la réponse de cs_Julien39
Messages postés
2
Date d'inscription
dimanche 1 juin 2014
Dernière intervention
18 juin 2014
0
Merci
bjr, j'ai rencontré le meme, est ce que vous pouvez m'aider à trouver la solution
Commenter la réponse de zaho_zaza

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.