[Gvsig_desarrolladores] ABRIR pdf desde gvSIG

MAU ingmau00 en gmail.com
Lun Dic 17 12:22:27 CET 2007


import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

public class ApplicationLauncher {

  public static void main(String args[]){
      if(args.length!=1) {
          System.out.println("Numero de parametros erroneo forma de uso:
java -cp . ApplicationLauncher fichero|URL");
          return;
      }
      if(args[0].indexOf("http")!=-1) launchURL(args[0]);
      else launchDefaultViewer(args[0]);
  }

  private static String linuxDesktop = null;

  private static String getEnv(String envvar){
      try{
          Process p = Runtime.getRuntime().exec("/bin/sh echo $"+envvar);
          BufferedReader br = new BufferedReader(new InputStreamReader(
p.getInputStream()));
          String value = br.readLine();
          if(value==null) return "";
          else return value.trim();
      }
      catch(Exception error){
          return "";
      }
  }

  private static String getLinuxDesktop(){
      //solo se averigua el entorno de escritorio una vez, despues se
almacena en la variable estatica
      if(linuxDesktop!=null) return linuxDesktop;
      if(!getEnv("KDE_FULL_SESSION").equals("") ||
!getEnv("KDE_MULTIHEAD").equals("")){
          linuxDesktop="kde";
      }
      else if(!getEnv("GNOME_DESKTOP_SESSION_ID").equals("") ||
!getEnv("GNOME_KEYRING_SOCKET").equals("")){
          linuxDesktop="gnome";
      }
      else linuxDesktop="";

      return linuxDesktop;
  }

  public static Process launchURL(String url){
      try{
          if (System.getProperty("os.name").toUpperCase().indexOf("95") !=
-1)
          return Runtime.getRuntime().exec( new String[]{"command.com",
"/C", "start", url} );
          if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS")
!= -1)
          return Runtime.getRuntime().exec( new String[]{"cmd.exe", "/C",
"start", url} );
          if (System.getProperty("os.name").toUpperCase().indexOf("MAC") !=
-1)
          return Runtime.getRuntime().exec( new String[]{"open", url} );
          if (System.getProperty("os.name").toUpperCase().indexOf("LINUX")
!= -1 ) {
              if(getLinuxDesktop().equals("kde"))
              return Runtime.getRuntime().exec( new String[]{"kfmclient",
"exec", url} );
              else
              return Runtime.getRuntime().exec( new String[]{"gnome-open",
url} );
          }
      }
      catch(IOException ioex){System.out.println(ioex);}

      return null;
  }

  public static Process launchDefaultViewer(String filepath){
      return launchURL( new File(filepath).getAbsolutePath());
  }

}




Con este código puedes lanzar ficheros pasandole una URL y te lo abre con la
aplicacion asociada, funciona con Windows, Linux y Mac.
(funciona por supuesto con pdf, de hecho lo uso para eso).
Espero que te sea útil.



El día 17/12/07, Jordi Grimalt <grimalt_jor en gva.es> escribió:
>
> Hola Cesar:
>
>       Una herramienta que te puede servir para enlazar archivos imagen o
> de texto, es el correspondinete al de hiperenlace. Esta herramienta,
> funciona a partir de una ruta configurada por campo seleccionado en su
> .dbf. En esa ruta especificas donde se situa tu archivo de texto o
> imagen, previamente debes configurar desde
> propiedades/hiperenlace/archivos de texto o  imagen... Primero abres
> edición en el shp, luego abres la tabla, y en el registro donde quieres
> que aparezca texto u imagen le pones la ruta desde c:/...
>
>      Una vez tengas la ruta puesta, cierras la tabla, y verás el icono
> del hiperenlace activo. Clickeas y te vas al polígono seleccionado y
> verás como te aparece la imagen u texto, presente en la ruta asignada.
> Para ver textos, sólo puedes vincular ficheros de texto sin formato,
> txt, rtf.. y para imagenes: gif, jpg, y png.
>
>     Espero que te sirva de algo, saludos,
>
>
>
>
> Cesar Escribano escribió:
> > Hola:
> > Me llama un compañero con la siguiente consulta y os la lanzo
> > La envío tanto al foro de desarrolladores como al de usuarios, porque
> > no se cuál es el más idóneo para darle respuesta:
> >
> > Él tiene una shape de puntos, con su dbf asociada.
> > En la dbf tiene un campo que guarda rutas a ficheros .pdf.
> > Él quiere que al pinchar sobre el campo de rutas en uno de los
> > registros, se le abra diréctamente el acrobar reader y le muestre el
> > fichero pdf. Es como tener asociados ficheros .pdf a cada punto
> > gráfico del shape.
> >
> > ¿Este problema tiene solución a nivel de usuario o a nivel de
> > desarrollador?
> > ¿Si la solución es desarrollando...Me podeis indicar en qué dirección
> > trabajar, qué paquetes, clases y métodos son los más idóneos para
> > resolver este porblema ?
> >
> > Muchas gracias.
> >
> > Un saludo.
> > César Escribano.
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > gvSIG_desarrolladores mailing list
> > gvSIG_desarrolladores en runas.cap.gva.es
> > http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >
>
>
> --
> Jordi Grimalt Ivars.
> Proyecto gvSIG
> Conselleria de Infraestructuras y Transportes (GVA).
> Valencia (Spain)
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>



-- 
        //\/\ A U
/************************************************************************
        Miguel Álvarez Úbeda
        ingmau00 en gmail.com

************************************************************************/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20071217/2d5bd686/attachment.htm


Más información sobre la lista de distribución gvSIG_desarrolladores