PDF in Java-GUI anzeigen

born2die

Grünschnabel
Hallo zusammen,

ich such nun schon seit Stunden nach einer Lösung. Ich will eine Plattform unabhängige Applikation schreiben. Darin sollen auch PDF's angezeigt werden,
bisher habe ich aber nur eine einzige kostenlose Library gefunden, und zwar PDF-Renderer. Jedoch komm ich damit nicht klar, das Beispiel von der Seite funktioniert wen ich es jedoch in mein Programm einbaue bekomme ich immer den Fehler "No page selected".
In meinem Programm verwende ich JPanel's deswegen kann ich das Beispiel nicht 1:1 eins übernehmen. Ausserdem soll je nach Button eine entsprechende PDF geöffnet werden.
Hoffe irgend jemand kann mir helfen. Wen es nötig ist kann ich auch mal den relevanten Teil meines Codes posten...

Achja ich muss Text _und_ Bilder anzeigen.

Danke schonmal,

born2die
 
Zuletzt bearbeitet:
Hmm das Problem ist das soweit ich es seh JPedal kommerziel ist und ich leider auch kein OpenSource-Projekt habe...

Naja dann Poste ich mal meinen Code, aber vorher noch eine kleine Erläuterung des Aufbaus meiner GUI...

JFrame -> JPanel -> JTabbedPane -> 6 JComponent's (fürs Panel)

Auf ein Panel kommen dann 3 Butons, wen auf einen davon geklickt wird soll ein PDF erscheinen.

Hier erstelle ich meine Panel's und füge sie auf das JFrame hinzu...
Code:
...
		JPanel topPanel = new JPanel();
		topPanel.setLayout(new BorderLayout());
		getContentPane().add(topPanel);

		// Create the tab pages
..
		katPa();
..

		// Create a tabbed pane
...
		tabbedPane.addTab("Beispielküchen", bspPa);

Hier die Funktion wo mein Panel erstellt wird:
Code:
	public void katPa()
	{
		katPa = new JPanel();
		katPa.setLayout(null);

		briKat = new JButton("Brigitte Küchen");		
		ockKat = new JButton("OCK-Küchen");		
		bauKat = new JButton("Bau-for-mat Küchen");
			 
		briKat.addActionListener( briAL );
		ockKat.addActionListener( ockAL );	 
		bauKat.addActionListener( bauAL );
		
		briKat.setBounds((width / 2) - 360, 60, 170, 20);
		ockKat.setBounds((width / 2) - 190, 60, 170, 20);
		bauKat.setBounds((width / 2) - 20, 60, 170, 20);
		katPa.add(briKat);
		katPa.add(ockKat);
		katPa.add(bauKat);
	}

Mein ActionListener, ein wenig was auskommentiert weil ich bissl rumgebastelt habe...
Code:
ActionListener bauAL = new ActionListener() 
	{ 
		  public void actionPerformed( ActionEvent e ) 
		  { 
			  try
			  {
				  /*PagePanel panel = showPDF("bau-for-mat.pdf");
				  katPa.add(panel);*/
			  }
			  catch(Exception exc)
			  {
			  }
		  } 
	};

Meine Funktion zum anzeigen von PDFs
Code:
	public JPanel showPDF(String pdf) throws IOException
	{
		PagePanel panel = new PagePanel();
		
		JPanel PDF = new JPanel();
		PDF.add(panel);
		
		//load a pdf from a byte buffer
		File file = new File(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);

		return PDF;
	}

Ich weiß etwas viel Code nur sollte so klar werden wo ich setVisibels mache und wo nicht, da scheint der Fehler zu liegen soweit ich es per Google rausgefunden habe ;)

Danke schoneinmal
 
Im Beispiel auf der pdf-renderer-Seite wird nach
Code:
PDF.add(panel);
noch
Code:
frame.pack();
frame.setVisible(true);
aufgerufen.

Vielleicht liegt's daran?

Alternative: Wird die pdf-Datei richtig geöffnet?
 
Hallo,

habe noch ein wenig rumprobiert und mit meinem PA-Lehrer in der Berufschule geredet und leider immer noch nicht hinbekommen. Die PDF wird soweit ich es raus gefunden habe auch richtig geöffnet.

Weiß noch irgendjemand etwas was mir bei meinem Problem hilft?
 
Zurück