Author Topic: Abrir .pdf desde java  (Read 65012 times)

Niubi

  • Full Member
  • ***
  • Posts: 154
  • Karma: 0
    • View Profile
Abrir .pdf desde java
« on: Mayo 06, 2008, 02:12:17 am »
Hola

He buscado sobre este problema en el foro y he encontrado el siguiente código en un hilo

Quote
String path = "carpeta\\tuArchivo.pdf";
String comando[] = {"C:\\Program Files\\Adobe\\Acrobat 6.0\\Reader\\", path };

try {
   Runtime.getRuntime().exec(comando);
} catch (Exception e) {
         e.printStacktrace();
}

pero me crea una duda.
Si por ejemplo ejecuto el programa que abra un archivo pdf en una máquina que tiene el acrobat 8.0, ya no me valdría el valor de comando, ¿hay una forma  de poner esta parte genérica?,es decir, que pueda abrir un pdf sin que importe  la versión de acrobat reader.

¿Es posible?

Saludos.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5456
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Abrir .pdf desde java
« Reply #1 on: Mayo 06, 2008, 04:15:26 am »
Hola:

En principio no hay una forma genérica. Es más, si el que sea tiene la misma versión de Acrobat Reader, pero la tiene instalada en otro directorio, tampoco funciona.

Si es posible, es mejor usar alguna librería java que permita abrir pdf en vez de usar un programa nativo, teniendo en cuenta que los jar de esa librería deberás distribuirlos junto a tu programa. Otra opción, que hacen algunos instaladores, es preguntar cual es la ubicación del programa que sea (en tu caso, el acrobat reader).

Se bueno

Niubi

  • Full Member
  • ***
  • Posts: 154
  • Karma: 0
    • View Profile
Re: Abrir .pdf desde java
« Reply #2 on: Mayo 06, 2008, 04:30:45 am »
Hola

Creo que utilizare la opción de utilizar librerias que me permitan abrir pdf, mas que nada, por dar mas facilidad al usuario.

Gracias por la repuesta!

Saludos!

Niubi

  • Full Member
  • ***
  • Posts: 154
  • Karma: 0
    • View Profile
Re: Abrir .pdf desde java
« Reply #3 on: Mayo 06, 2008, 03:26:38 pm »
Hola

Se me había olvidado comentar, lo del pdf, lo quería abrir porque tengo una aplicación y tenía pensado poner un botón de ayuda, y si el usuario pinchará en el que se abriera un manual que tengo en pdf.
He estado pensando... y si yo hago un .jar para pasarselo a alguien, ¿como pasaría el manual? porque me imagino que un .jar no podrá ir incluido.

Saludos.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5456
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Abrir .pdf desde java
« Reply #4 on: Mayo 06, 2008, 03:32:12 pm »
Hola:

El pdf puede ir en un fichero aparte (junto al jar de tu aplicación y al jar de la librería de abrir pdfs) o bien se puede meter dentro del jar (el jar no es más que un zip con otro formato). Lo único es que si lo metes dentro, se lee un poco distinto a como se abre un fichero normal y la librería que uses tendría que admitirlo.

Se bueno.

andyarmin

  • Newbie
  • *
  • Posts: 16
  • Karma: 0
    • View Profile
Re: Abrir .pdf desde java
« Reply #5 on: Mayo 06, 2008, 06:00:59 pm »
Hola, yo para abrir cualquier archivo desde java utilizo la clase Desktop y así no me tengo que preocupar con que programa debo abrir el archivo:

import java.awt.Desktop;
........

try {
          String path = "carpeta/tuArchivo.pdf";
          Desktop.getDesktop().open(path);
} catch (IOException ex) {
..........
}

Espero que te sirva.  (Creo que la clase Desktop viene con la versión de java 1.6, pero no estoy seguro).

Niubi

  • Full Member
  • ***
  • Posts: 154
  • Karma: 0
    • View Profile
Re: Abrir .pdf desde java
« Reply #6 on: Mayo 06, 2008, 09:05:11 pm »
Hola

Gracias por las respuestas de los dos, un pequeño apunte para :
import java.awt.Desktop;
........

try {
          String path = "carpeta/tuArchivo.pdf";
          Desktop.getDesktop().open(path);
} catch (IOException ex) {
..........
}
Tengo la version 1.6 y de la forma que me ha salido es así:
Quote
try {
     File path = new File ("carpeta/tuArchivo.pdf");
     Desktop.getDesktop().open(path);
}catch (IOException ex) {
     ex.printStackTrace();
}

Saludos!

andyarmin

  • Newbie
  • *
  • Posts: 16
  • Karma: 0
    • View Profile
Re: Abrir .pdf desde java
« Reply #7 on: Mayo 06, 2008, 10:35:39 pm »
Upsss Niubi tienes razón!!!! Estaba diciéndotelo de memoria y la he cagado  :-\ , realmente tienes que pasarle un File a Desktop.getDesktop.open(File) y no un String.

Me alegro que te funcione!!!!

Bradbury

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
    • View Profile
Re: Abrir .pdf desde java
« Reply #8 on: Mayo 08, 2008, 08:10:12 am »
Siendo estrictos creo que habria que añadir el

import java.io*;  para que nos reconociera el File.

(perdón si parece muy obvio)

Saludos
« Last Edit: Mayo 08, 2008, 08:12:01 am by Bradbury »

Niubi

  • Full Member
  • ***
  • Posts: 154
  • Karma: 0
    • View Profile
Re: Abrir .pdf desde java
« Reply #9 on: Mayo 22, 2008, 10:21:57 pm »
Hola

Me ha surgido una nueva duda sobre como abrir pdfs desde java..

Tengo un paquete dentro de mi proyecto en el que tengo unas cuantas imagenes y para ponerle a un botón una imagen de esas de fondo lo hago mediante la siguiente instrucción:
Code: [Select]
jButtonAyuda.setIcon(new ImageIcon(getClass().getResource("/paqueteImagenes/interrogacion.JPG")));

Es decir, no hace falta poner D:\Mis Documentos\eclipse\workspace\PFCOntologia\src\paqueteImagenes, simplemente vale con poner el path del paquete.

Tengo un paquete en el que tengo varios pdfs y he pensado hacer lo mismo que con las imagenes, pero no se como poner esa parte de código, lo he hecho de esta manera y no funciona.
Code: [Select]
File path = new File(getClass().getResource(("/paqueteManuales/MenuPrincipal.pdf"));
Desktop.getDesktop().open(path);

¿Alguien me podría echar una mano con ello?

Saludos.


manix

  • Sr. Member
  • ****
  • Posts: 361
  • Karma: 0
    • View Profile
Re: Abrir .pdf desde java
« Reply #10 on: Mayo 23, 2008, 04:03:54 am »
Amigo te falto poner toURI() al final

Code: [Select]
File path;
        try {
            path = new File(getClass().getResource("/paqueteManuales/MenuPrincipal.pdf").toURI());
            Desktop.getDesktop().open(path);
        } catch (Exception ex) {
        }


saludos
« Last Edit: Mayo 23, 2008, 04:09:35 am by manix »

Niubi

  • Full Member
  • ***
  • Posts: 154
  • Karma: 0
    • View Profile
Re: Abrir .pdf desde java
« Reply #11 on: Mayo 23, 2008, 04:22:15 am »
Hola

Que bueno! Muchas Gracias.

He hecho un fichero .jar con fatjar exporter mediante el codigo y no me abre los pdfs

¿sabes porque puede ser?

Saludos
« Last Edit: Mayo 23, 2008, 04:43:52 am by Niubi »

Tania

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
    • View Profile
Re: Abrir .pdf desde java
« Reply #12 on: Agosto 18, 2009, 02:34:11 am »
Buscando sobre el tema he encontrado lo anterior y me funciono espero les ayude, aki no se especifica directamente la ruta del Acrobat, espero les sirva...

            try {
                Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + PATH);
            } catch (IOException e) {
                e.printStackTrace();
            }

Saludos...

victorgonzaleza

  • Newbie
  • *
  • Posts: 2
  • Karma: 0
    • View Profile
Re: Abrir .pdf desde java
« Reply #13 on: Agosto 25, 2009, 11:48:47 pm »
Bueno, hasta ahi vamos bien

Pero que pasa cuando lo que pretendemos hacer es poner un PDF en el browser ya sea en un IFRAME o FRAME

Como seria el codigo, hago la aclaracion de que hay miles de librerias para eso, pero resulta que la idea es hacerlo con lo que tiene JAVA lo basico o lo primitivo.

Ideas???

Gracias

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5456
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Abrir .pdf desde java
« Reply #14 on: Agosto 26, 2009, 03:03:29 pm »
Hola:

Java no es capaz de abrir pdf con lo estándar de java. Se tiene que basar en el sistema operativo (clase Desktop o con Runtime).

En el browser no se abren los pdf con java, es el mismo browser el que los abre. Si quieres abrirlo en un frame o iframe, pon que el contenido de ese frame o iframe sea el pdf

<iframe src="el_fichero.pdf"/>

(no he probado, no sé qué tal le sentará al browser hacer eso).

Se bueno.

 

ey