Abrir um arquivo pdf em java
Bom dia a todos, tudo bem?
Estou procurando aqui no javafree e não estou achando, o que eu queria é o seguinte, tenho um Manual.pdf (usei o latex) e quero quando eu clicar no botão abrir esse Manual.pdf com o visualizador padrão do sistema operacional.
Obrigado
Fabio Volpe
Curtidas 0
Respostas
Fabio Volpe
09/04/2009
eu naum sei se eh bem isso q vc ker mais dah pra executar no command
tipo com
no windows eu nunca fiz isso mas no linux eu sei que dah
Runtime.getRuntime().exec(//aki vc digita o codigo que voce usaria no prompot);
GOSTEI 0
Fabio Volpe
09/04/2009
Tem um projeto da sun que se chama: pdf-renderer, nele dá pra abrir um pdf no swing.
O link do projeto: https://pdf-renderer.dev.java.net/
É só fazer o download da lib e colocar no seu projeto, depois utilizar o seguinte código:
Esse e outros exemplos vc encontra no link:
https://pdf-renderer.dev.java.net/examples.html
Até mais
package pdfpaneltest;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;
import com.sun.pdfview.PagePanel;
import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import javax.swing.*;
/**
* An example of using the PagePanel class to show PDFs. For more advanced
* usage including navigation and zooming, look ad the
* com.sun.pdfview.PDFViewer class.
*
* @author joshua.marinacci@sun.com
*/
public class Main {
public static void setup() throws IOException {
//set up the frame and panel
JFrame frame = new JFrame("PDF Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
PagePanel panel = new PagePanel();
frame.add(panel);
frame.pack();
frame.setVisible(true);
//load a pdf from a byte buffer
File file = new File("test.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);
}
public static void main(final String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
Main.setup();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
}
}
GOSTEI 0
Carlos H
09/04/2009
Oi, se for para usar o "visualizador padrão do sistema operacional" aconselho o uso do java.awt.[b]Desktop[/b] (só a partir do JDK 1.6)
Fica mais ou menos assim
File pdf = new File("arquivo.pdf");
try {
Desktop.getDesktop().open(pdf);
} catch(Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, "Erro no Desktop: " + ex);
}
GOSTEI 0
Ramiro Pamponet
09/04/2009
Olá Pessoal, tentei abrir meus arquivos PDF utilizando as duas sugestões (PDF-Render e Java.awt.Desktop) Mas não obtive sucesso. Meus arquivos estão salvos na mesma pasta do programa, logo (imagino eu) não se faz necessário utilizar o caminho inteiro "C:\...\...\ficha.pdf". O que está faltando???? Alguém pode me ajudar???? Obrigado!!!!
GOSTEI 0
Fabio Volpe
09/04/2009
Obrigada pelo post do codigo cfh. Abre qualquer arquivo. Muito obrigada!! ;)
String caminho = txtSalvoem.getText();
File arquivo = new File(caminho);
try {
Desktop.getDesktop().open(arquivo);
} catch (Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, ex, "ERRO",JOptionPane.ERROR_MESSAGE);
}GOSTEI 0
Ramiro Pamponet
09/04/2009
E para implementar o assunto, as vezes pode ser util para alguém.
Aqui é para abrir qualquer arquivo que o cfh ensinou:
JFileChooser arquivo = new JFileChooser();//instancia da classe JFileChooser
String caminhoArquivo = "";
int retorno = arquivo.showOpenDialog(null);//variavel recebendo o caminho escolhido por vc
if (retorno == JFileChooser.APPROVE_OPTION) {
caminhoArquivo = arquivo.getSelectedFile().getAbsolutePath();
txtSalvoem.setText("" + caminhoArquivo);//campo recebendo o caminho do arquivo
} else {
//não abriu
}
String caminho = txtSalvoem.getText();
File arquivo = new File(caminho);
try {
Desktop.getDesktop().open(arquivo);
} catch (Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, ex, "ERRO",JOptionPane.ERROR_MESSAGE);
}GOSTEI 0