Adobe java swing

5 respostas
M

Boa tarde amigo, estou criando uma aplicação java desktop na qual preciso abrir um pdf dentro da propria aplicação, tenho o seguinte código só que está dando o erro, quem puder me ajudar agradeço.

segue o erro:

Exception in thread "main" java.lang.NoClassDefFoundError: com/apple/mrj/MRJAboutHandler
at javaapplication23.ExibePDF.main(ExibePDF.java:29)
Caused by: java.lang.ClassNotFoundException: com.apple.mrj.MRJAboutHandler
at java.net.URLClassLoader$1.run(URLClassLoader.java:299)
at java.net.URLClassLoader$1.run(URLClassLoader.java:288)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:287)
at java.lang.ClassLoader.loadClass(ClassLoader.java:392)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:334)
at java.lang.ClassLoader.loadClass(ClassLoader.java:332)
... 1 more
Java Result: 1

Segue o código:

[code]import javax.swing.*;
import java.io.*;
import com.adobe.acrobat.*;
import java.awt.*;

public class ExibePDF{

public static void main(String args[]){

InputStream input;
Viewer viewer;
JFrame frame = new JFrame("Visualização de Arquivo PDF");
frame.setLayout(new BorderLayout());

try{

viewer = new Viewer();
frame.add(viewer, BorderLayout.CENTER);
input = new FileInputStream (new File("C:/Documents and Settings/Administrador/Desktop/teste.pdf"));

if(input != null){

ByteArrayOutputStream output = new ByteArrayOutputStream();
// set read buffer size

byte[] rb = new byte[1024];
int ch = 0;

while ((ch = input.read(rb)) != -1){
output.write(rb, 0, ch);
}

byte[] b = output.toByteArray();
input.close();
output.close();

viewer.setDocumentInputStream(new ByteArrayInputStream(b));
}

viewer.activate();

viewer.setProperty("Default_Page_Layout", "SinglePage");
viewer.setProperty("Default_Zoom_Type", "FitVisibleWidth");
viewer.setProperty("Default_Magnification", "100");

frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
catch(Exception e){

JOptionPane.showMessageDialog(null,
"Não foi possível abrir o arquivo!",
"Erro", JOptionPane.ERROR_MESSAGE);

System.exit(0);
}

}
}

5 Respostas

A

Meu velho, pelo erro alguma dependencia da sua aplicação não esta sendo colocada no classpath no momento da execução.

que seria a classe MRJAboutHandler

F

Já tentou usar o

Desktop.open(File file)

Que tenta usar o leitor default do teu SO?

M

Bom dia amigos, seguinte eu utilizando

Desktop.open(File file)

ira abrir o pdf fora da aplicação correto ? preciso que abra dentro da propria aplicação, quanto ao usar o leitor default do meu SO você teria algum exemplo que como fazer isto ?
desde já agradeço a ajuda de todos, obrigado até mais…

F

Marcelo aguiar:
Bom dia amigos, seguinte eu utilizando

Desktop.open(File file)

ira abrir o pdf fora da aplicação correto ? preciso que abra dentro da propria aplicação, quanto ao usar o leitor default do meu SO você teria algum exemplo que como fazer isto ?
desde já agradeço a ajuda de todos, obrigado até mais…

Sim, vai abrir o pdf no leitor default do SO, como o adobe reader por exemplo.
É esse exemplo mesmo, só passar o teu File ali.

Desktop.open(File file)
M

Bom dia amigos, PROBLEMA RESOLVIDO, para quem estiver com o mesmo problema segue a solução, baixei o arquivo MRJToolkitStubs-1.0.jar adicionei ao meu classpath e problema resolvido, para que este código execute corretamente é necessario a utilização da api acrobat.

link para dowload do arquivo MRJToolkitStubs-1.0.jar:

http://forums.sun.com/thread.jspa?threadID=5414115

link para download da api acrobat:

http://www.adobe.com/products/acrviewer/acrvdnld.html

Obrigado pela ajuda de todos, segue o código:

import javax.swing.*;
import java.io.*;
import com.adobe.acrobat.*;
import java.awt.*;

public class ExibePDF{


	public static void main(String args[]){

		InputStream input;
		Viewer viewer;
		JFrame frame = new JFrame("Visualização de Arquivo PDF");
		frame.setLayout(new BorderLayout());

		try{

			viewer = new Viewer();
			frame.add(viewer, BorderLayout.CENTER);
			input = new FileInputStream (new File("C:/Documents and Settings/Administrador/Desktop/teste.pdf"));


			if(input != null){

                ByteArrayOutputStream output = new ByteArrayOutputStream();
                // set read buffer size

                byte[] rb = new byte[1024];
                int ch = 0;

                while ((ch = input.read(rb)) != -1){
                    output.write(rb, 0, ch);
                }

                byte[] b = output.toByteArray();
                input.close();
                output.close();

                viewer.setDocumentInputStream(new ByteArrayInputStream(b));
			}


			viewer.activate();

			viewer.setProperty("Default_Page_Layout", "SinglePage");
			viewer.setProperty("Default_Zoom_Type", "FitVisibleWidth");
			viewer.setProperty("Default_Magnification", "100");

			frame.setSize(800, 600);
			frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
			frame.setVisible(true);
		}
		catch(Exception e){

			JOptionPane.showMessageDialog(null,
                        "Não foi possível  abrir o arquivo!",
                        "Erro", JOptionPane.ERROR_MESSAGE);

                        System.exit(0);
		}



	}
}
Criado 30 de junho de 2010
Ultima resposta 1 de jul. de 2010
Respostas 5
Participantes 3