Lire un fichier PDF via JFrame

Résolu
Sousou - 21 mars 2014 à 19:40
djavez
Messages postés
1
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
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

5 réponses

djavez
Messages postés
1
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
19 juin 2014
3
Modifié par jordane45 le 19/06/2014 à 14:25
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 !
3
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
23 mars 2014 à 12:32
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"));
1
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
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
25 mars 2014 à 20:27
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zaho_zaza
Messages postés
2
Date d'inscription
dimanche 1 juin 2014
Statut
Membre
Dernière intervention
18 juin 2014

18 juin 2014 à 09:08
bjr, j'ai rencontré le meme, est ce que vous pouvez m'aider à trouver la solution
0