Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17

Hybrid View

  1. #1
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Puoi postare un pochino di codice (magari di più di quello postato all'inizio)? Da quello iniziale, vedo e capisco solo che stai usando il componente (pannello) di PDFBox per mostrare una pagina.
    Questa è la classe che faccio riferimento:
    codice:
    /**Classe BookReader per lettura dei libri
     * Implementa metodi astratti dichiarati in 
     * Classe lettura_Panel
     */
    import java.awt.BorderLayout;
    import java.awt.Desktop;
    import java.awt.Dimension;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    import java.util.Arrays;
    import java.util.List;
    
    
    import javax.swing.JEditorPane;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JScrollPane;
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    import org.apache.pdfbox.PDFReader;
    import org.apache.pdfbox.cos.COSDocument;
    import org.apache.pdfbox.exceptions.InvalidPasswordException;
    import org.apache.pdfbox.pdfparser.PDFParser;
    import org.apache.pdfbox.pdfviewer.PDFPagePanel;
    import org.apache.pdfbox.pdmodel.PDDocument; 
    import org.apache.pdfbox.pdmodel.PDPage;
    import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
    import org.apache.pdfbox.pdmodel.font.PDFont;
    import org.apache.pdfbox.pdmodel.font.PDType1Font;
    import org.apache.pdfbox.util.PDFImageWriter;
    import org.apache.pdfbox.util.PDFTextStripper;
    import org.apache.pdfbox.util.PDFTextStripperByArea;
    
    
    public class BookReader extends lettura_Panel{
    	JFrame f_main;
    	JFrame f_options;
    	int dim_book;
    	Book []b;
    	
    	public BookReader(JFrame f_main, JFrame f_options, Book[] b, int dim_book) {
    		super(f_main, f_options, b, dim_book);
    		
    	}
    
    
    	@Override
    	public void readerEpub(Book[] b, int selectedRow) {
    		Desktop d = Desktop.getDesktop();
    		File f = new File(b[table.getSelectedRow()].Percorso);
    		try {
    			d.open(f);
    		} catch (IOException e1) {
    			JOptionPane.showMessageDialog(f_options, "Percorso inserito non corretto");
    			return;
    		}
    	}
    
    
    	@Override
    	public void readerHtml(Book[] b, int selectedRow) {
    		File file = new File(b[table.getSelectedRow()].Percorso);
            JEditorPane jEditorPane = new JEditorPane();
            jEditorPane.setEditable(false);
            jEditorPane.setContentType("text/html");	
         
            try {
    			jEditorPane.setPage(file.toURI().toURL());
    		} catch (IOException ex) {
    			JOptionPane.showMessageDialog(f_options, "Percorso inserito non corretto");
    		}
            JScrollPane scrollPane = new JScrollPane(jEditorPane);
     
            JFrame j = new JFrame("HTML Reader");
            j.getContentPane().add(scrollPane, BorderLayout.CENTER);
            j.setSize(new Dimension(500,600));
            j.setLocationRelativeTo(null);
            j.setVisible(true);
    	}
    
    
    	@Override
    	public void readerPdf(Book[] b, int selectedRow) {
    		File PDF_Path = new File(b[table.getSelectedRow()].Percorso);
            PDDocument inputPDF = null;
            try {
                inputPDF = PDDocument.load(PDF_Path);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            List<PDPage> allPages = inputPDF.getDocumentCatalog().getAllPages();
            
            PDPage testPage = (PDPage)allPages.get(0);
            JFrame testFrame = new JFrame();
            PDFPagePanel pdfPanel;
            try {
                pdfPanel = new PDFPagePanel();
                pdfPanel.setPage(testPage);
                testFrame.add(pdfPanel);
                testFrame.setBounds(40, 40, pdfPanel.getWidth(), pdfPanel.getHeight());
                testFrame.setVisible(true);
                inputPDF.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
    	}	
    	
    	
    	
    }

    Questa è la classe che chiama quei metodi Reader:
    codice:
    /**Classe astratta lettura_Panel per la lettura dei libri presenti in biblioteca
     * Libri in formato pdf e html saranno visualizzati tramite
     * Visualizzatori che usufruiscono di librerie esterne,
     * Mentre libri in formato epub, saranno visualizzati tramite
     * Programmi presente nel pc 
     */
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.util.Vector;
    
    
    public abstract class lettura_Panel extends JPanel{
    	private static final long serialVersionUID = 1L;
    	JFrame f_main;
    	JFrame f_options;
    	Image libro;
    	MyTableModel dataModel;
    	JTable table;
    	int dimBook;
    	Book []b; 
    
    
    	public lettura_Panel(JFrame f_main,JFrame f_options,final Book[] b,int dimBook){
    		setLayout(null);
    		this.b = b;
    		this.dimBook = dimBook;
    		Toolkit t = Toolkit.getDefaultToolkit();
    		libro = t.getImage("libri.jpg");
    		MediaTracker track = new MediaTracker(this);
    	    track.addImage(libro , 1);
    		try {
    			track.waitForAll();
    		} catch (InterruptedException e) {
    		    e.printStackTrace();
    		}
    		
    		Vector v = new Vector();
    		for(int z=0;z<dimBook;z++){
    			v.add(b[z]);
    		}
    		
    		dataModel = new MyTableModel(v);
    		table = new JTable(dataModel);
    		JScrollPane scrollpane = new JScrollPane(table);
    		scrollpane.setPreferredSize(new Dimension(800,350));
    		scrollpane.setBounds(0,0,700,450);
    		add(scrollpane);
    		
    		table.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				if(e.getClickCount()>1){
    					if("epub".equals(b[table.getSelectedRow()].formato)){
    						readerEpub(b,table.getSelectedRow());
    						
    					}
    					if("html".equals(b[table.getSelectedRow()].formato)){
    						readerHtml(b,table.getSelectedRow());
    					}
    					if("pdf".equals(b[table.getSelectedRow()].formato)){
    						readerPdf(b,table.getSelectedRow());
    					}
    				}
    			}
    		});
    	}
    
    
    	public void paintComponent(Graphics g){
    		super.paintComponent(g);
    		setOpaque(false);
    		g.drawImage(libro, 0, 0, null);
    	}
    	
    	public abstract void readerEpub(Book[] b, int selectedRow);
    	public abstract void readerHtml(Book[] b, int selectedRow);
    	public abstract void readerPdf(Book[] b, int selectedRow);
    }

  2. #2
    Ora dà un errore diverso..Non ci salto proprio fuori ahah

    Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at org.apache.pdfbox.io.RandomAccessBuffer.seek(Rando mAccessBuffer.java:84)
    at org.apache.pdfbox.io.RandomAccessFileInputStream.r ead(RandomAccessFileInputStream.java:96)
    at java.io.BufferedInputStream.fill(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    at org.apache.pdfbox.io.ASCII85InputStream.read(ASCII 85InputStream.java:73)
    at org.apache.pdfbox.io.ASCII85InputStream.read(ASCII 85InputStream.java:181)
    at org.apache.pdfbox.filter.ASCII85Filter.decode(ASCI I85Filter.java:48)
    at org.apache.pdfbox.cos.COSStream.doDecode(COSStream .java:279)
    at org.apache.pdfbox.cos.COSStream.doDecode(COSStream .java:229)
    at org.apache.pdfbox.cos.COSStream.getUnfilteredStrea m(COSStream.java:156)
    at org.apache.pdfbox.pdfparser.PDFStreamParser.<init> (PDFStreamParser.java:108)
    at org.apache.pdfbox.util.PDFStreamEngine.processSubS tream(PDFStreamEngine.java:253)
    at org.apache.pdfbox.util.PDFStreamEngine.processSubS tream(PDFStreamEngine.java:237)
    at org.apache.pdfbox.util.PDFStreamEngine.processStre am(PDFStreamEngine.java:217)
    at org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(Pa geDrawer.java:119)
    at org.apache.pdfbox.pdfviewer.PDFPagePanel.paint(PDF PagePanel.java:98)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JLayeredPane.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paintToOffscreen(Unknown Source)
    at javax.swing.RepaintManager$PaintManager.paintDoubl eBuffered(Unknown Source)
    at javax.swing.RepaintManager$PaintManager.paint(Unkn own Source)
    at javax.swing.RepaintManager.paint(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at java.awt.GraphicsCallback$PaintCallback.run(Unknow n Source)
    at sun.awt.SunGraphicsCallback.runOneComponent(Unknow n Source)
    at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
    at java.awt.Container.paint(Unknown Source)
    at java.awt.Window.paint(Unknown Source)
    at javax.swing.RepaintManager$3.run(Unknown Source)
    at javax.swing.RepaintManager$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unkno wn Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unkno wn Source)
    at javax.swing.RepaintManager.prePaintDirtyRegions(Un known Source)
    at javax.swing.RepaintManager.access$1100(Unknown Source)
    at javax.swing.RepaintManager$ProcessingRunnable.run( Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

  3. #3
    Nessuna idea?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.