Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    17

    Visualizzare pdf tramite PDFBox dentro un JScrollPane

    Salve a tutti,
    ho il seguente problema, utilizzando PDFBox per la visualizzazione di un pdf riesco a vedere solo ed esclusivamente la prima pagina, anche aprendo file contenenti più pagine.
    Non riesco a capire dove sbaglio, qualcuno è in grado di identificare dove può essere l'errore? Allego il codice:

    codice:
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.geom.Rectangle2D;
    import java.io.IOException;
    import java.util.List;
    
    
    import javax.swing.JComponent;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.SwingUtilities;
    
    
    import org.apache.pdfbox.pdfviewer.PageDrawer;
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.PDPage;
    import org.apache.pdfbox.pdmodel.common.PDRectangle;
    
    
    public class ShowPdf extends JComponent {
    
    
        private PDDocument doc;
        private int pagenum;
        private Dimension pageDimension;
        private PDPage page;
        private PageDrawer drawer;
    
    
        private static final long serialVersionUID = 1L;
    
    
        public ShowPdf(final String filename) {
            try {
                this.doc = PDDocument.load(filename);
                this.drawer = new PageDrawer();
            } catch (final IOException e) {
                e.printStackTrace();
            }
            this.loadPage();
        }
    
    
        private void loadPage() {
            final List<?> pages = this.doc.getDocumentCatalog().getAllPages();
            this.page = (PDPage) pages.get(this.pagenum);
            final PDRectangle pageSize = this.page.findMediaBox();
    
    
            final int rotation = this.page.findRotation();
            this.pageDimension = pageSize.createDimension();
            if (rotation == 90 || rotation == 270) {
                this.pageDimension = new Dimension(this.pageDimension.height,
                        this.pageDimension.width);
            }
            // TODO : check rotation = 0 || 180
            this.setPreferredSize(this.pageDimension);
        }
    
    
        @Override
        protected void paintComponent(final Graphics g) {
            final Graphics2D g2d = (Graphics2D) g;
            try {
                g2d.setColor(Color.WHITE);
                g2d.fill(new Rectangle2D.Double(0, 0,
                        this.pageDimension.getWidth(), this.pageDimension
                                .getHeight()));
                this.drawer.drawPage(g, this.page, this.pageDimension);
            } catch (final IOException e) {
                e.printStackTrace();
            }
        }
    
    
        public static void main(final String[] args) {
            final String filename = "C://nomedelfile.pdf";
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    final JFrame mainFrame = new JFrame();
                    mainFrame.setSize(800, 600);
                    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    final JScrollPane contentPane = new JScrollPane();
                    contentPane.createVerticalScrollBar();
                    mainFrame.setContentPane(contentPane);
                    contentPane.setViewportView(new ShowPdf(filename));
                    mainFrame.pack();
                    mainFrame.setVisible(true);
                }
            });
        }
    
    
    }
    Grazie
    Ultima modifica di ric999; 18-10-2015 a 16:18

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.