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

API standards et tierces Java Discussion :

apercu d'un pdf


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut apercu d'un pdf
    Bonjour,
    Étant un jeune développeur java je m'excuse d'avance pour les questions qui peut vous paraitre idiotes.

    A l'heure actuel je dois réaliser une prévisualisation d'un pdf, je m'explique.
    Dans mon programme le client peut cliquer sur "Aperçu" et il doit pouvoir voir un pdf.

    Donc à l'aide de se site :
    https://pdf-renderer.dev.java.net/

    J'ai reussi à avoir quelques choses qui ressemble a se que je veux :
    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
    public class PDFView {
        public static void setup() throws IOException {
            //set up the frame and panel
            JFrame frame = new JFrame("PDF Viewer");
            //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            PagePanel panel = new PagePanel();
            frame.add(panel);
            frame.pack();
            frame.setVisible(true);
     
            //load a pdf from a byte buffer
            File file = new File("C:/MilkPrintv3.pdf");
            RandomAccessFile raf = new RandomAccessFile(file,"r");
            FileChannel channel = raf.getChannel();
            ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY,
                0, channel.size());
            PDFFile pdffile = new PDFFile(buf);
     
            // show the first page
            PDFPage page = pdffile.getPage(0);
            panel.showPage(page);    
        }
    }
    Donc je me heurte à un problème à l'aide d'une boucle j'essaye d'afficher toutes les pages de mon pdf(je l'avais faite là ou le code est rouge).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	for(int i = 0, n = Nbpage; i < n; i++) {
    	    panel.showPage(pdffile.getPage(i));
    Mais ca ne marche pas il va boucler comme il faut mais il m'affichera que la dernière page.

    On m'a parlé des Thread, mais je ne sais pas trop comment l'utiliser dans se cas là.

    Merci d'avance
    Cordialement

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Bonjour,
    C'est de doute façon irréaliste d'afficher toutes les pages simultanément.
    Quel rendu intelligible peut on espèrer de 60 pages en même temps.
    Il faut donc prévoir une intéraction avec l'utilisateur.
    A toi de voir
    • combien de pages tu souhaites afficher en même temps (1 seule est le cas le plus simple).
    • Que va tu demander à l'utilisateur (des boutons pages suivante/précédente?)

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut
    Ah j'avais pas du tout pensé à ça.
    Donc j'ai opté pour une fenêtre avec précédant/suivant.
    mais j'ai un petit soucis technique la j'ai testé de cette façon
    http://img200.imageshack.us/img200/715/javal.jpg

    se qui est plutôt moche j'aimerais mettre deux boutons sur l'écran "pdf viewer", mais je sas pas trop comment faire.
    Un petit indice?

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    public class PDFView {
        static PagePanel panel = new PagePanel();
     
        public static void setup() throws IOException {
            //set up the frame and panel
            JFrame frame = new JFrame("PDF Viewer");
            //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //PagePanel panel = new PagePanel();
            Fenetre fen = new Fenetre();
            frame.add(panel);
            frame.pack();
            frame.setVisible(true);
     
            //load a pdf from a byte buffer
            File file = new File("C:/MilkPrintv3.pdf");
            RandomAccessFile raf = new RandomAccessFile(file,"r");
            FileChannel channel = raf.getChannel();
            ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY,
                0, channel.size());
            PDFFile pdffile = new PDFFile(buf);
     
            // show the first page  
           	PDFPage page2 = pdffile.getPage(1);
            panel.showPage(page2);
        }
        public void goToPag(int nbpage) throws IOException
        {
            File file = new File("C:/MilkPrintv3.pdf");
            RandomAccessFile raf = new RandomAccessFile(file,"r");
            FileChannel channel = raf.getChannel();
            ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY,
                0, channel.size());
            PDFFile pdffile = new PDFFile(buf);
     
        	System.out.println("page:" + nbpage);
        	PDFPage page = pdffile.getPage(nbpage);
            panel.showPage(page);
        }   
    	public static void main(final String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    try {
                        PDFView.setup();
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                }
            });
        }
     
    }
    J'ai mon autre bout de code pour la fenetre+bouton qui change de fenetre avec goTopag() mais cette fonction va plus servir si j'arrive a mettre les boutons directement dans la fenetre "pdf viewer".

    Merci beaucoup pour ton aide

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    You didn't put much effort into it, but I'm in a good day, so :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.*;
    import java.nio.*;
    import java.nio.channels.*;
     
    import javax.swing.*;
     
    import com.sun.pdfview.*;
     
    public class PDFView
    {
    	private PagePanel panel;
    	private PDFFile pdffile;
    	private int currentPage = 1;
     
    	public PDFView() throws IOException
    	{
    		// set up the frame and panel
    		JFrame frame = new JFrame("PDF Viewer");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setLayout(new BorderLayout());
    		panel = new PagePanel();
     
    		frame.add(panel,BorderLayout.CENTER);
    		JButton previousButton = new JButton("Précédent");
    		previousButton.addActionListener(new ActionListener(){
     
    			@Override
    			public void actionPerformed(ActionEvent arg0)
    			{
    				goToPage(--currentPage);
    			}
     
    		});
    		JButton nextButton = new JButton("Suivant");
    		nextButton.addActionListener(new ActionListener(){
     
    			@Override
    			public void actionPerformed(ActionEvent arg0)
    			{
    				goToPage(++currentPage);
    			}
     
    		});
     
    		JPanel southPanel = new JPanel(new GridLayout(1,2));
    		southPanel.add(previousButton);
    		southPanel.add(nextButton);
    		frame.add(southPanel,BorderLayout.SOUTH);
    		frame.pack();
    		frame.setVisible(true);
     
    		// load a pdf from a byte buffer
    		File file = new File("C:/BOU_AFM-000257298.pdf");
    		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);
     
    		// show the first page
    		goToPage(currentPage);
    	}
     
    	public void loadPdf(File file) throws IOException
    	{
    		// load a pdf from a byte buffer
    		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);
     
    		// show the first page
    		PDFPage page2 = pdffile.getPage(currentPage);
    		panel.showPage(page2);
    	}
     
    	public void goToPage(int nbpage) throws IndexOutOfBoundsException
    	{
    		if(nbpage<1||nbpage>pdffile.getNumPages())
    			throw new IndexOutOfBoundsException("Invalid index requested :"+nbpage);
    		PDFPage page = pdffile.getPage(nbpage);
    		panel.showPage(page);
    	}
     
    	public static void main(final String[] args)
    	{
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run()
    			{
    				try
    				{
    					PDFView view =new PDFView();
    					view.loadPdf(new File("C:/BOU_AFM-000257298.pdf"));
     
    				} catch (IOException ex)
    				{
    					ex.printStackTrace();
    				}
    			}
    		});
    	}
     
    }

  5. #5
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut
    Merci beaucoup c'est vraiment se que je cherchais !

    have a Nice day

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD15] Un apercu d'état crée t-il un fichier .pdf temporaire ?
    Par Jeje9 dans le forum WinDev
    Réponses: 5
    Dernier message: 05/03/2013, 15h16
  2. [WD14] Apercu avant impression : Email PDF
    Par Thanor dans le forum WinDev
    Réponses: 2
    Dernier message: 10/05/2012, 14h32
  3. [WD12] Impression apercu pdf
    Par Lookoum dans le forum WinDev
    Réponses: 17
    Dernier message: 22/10/2009, 16h49
  4. Apercu d'une fichier PDF dans une JSP
    Par nix01 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 27/08/2009, 22h15
  5. [Image]Ouverture en apercu fichier PDF
    Par perlgirl dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 29/11/2005, 15h42

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