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:
Graziecodice: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); } }); } }

Rispondi quotando
