Buscar este blog

Mostrando entradas con la etiqueta java. Mostrar todas las entradas
Mostrando entradas con la etiqueta java. Mostrar todas las entradas

lunes, 7 de octubre de 2013

Descargar Java con wget

Cuando descargamos JAVA desde la web oficial, necesitamos aceptar la licencia para poder descargar el fichero. Alguna vez ha necesitado descargar un jre en un servidor que no tenía entorno gráfico, lo único que tenía era wget para hacer descargas http. ¿Como podemos hacer esto con wget?


Pues no es muy complicado, simplemente tenemos que incluir algunos parámetros en el wget para que descargue sin problemas:
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http://www.oracle.com/"
Ejemplo para "jre-6u25-linux-x64.bin":
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http://www.oracle.com/" http://download.oracle.com/otn-pub/java/jdk/6u25-b06/jre-6u25-linux-x64.bin

jueves, 5 de febrero de 2009

Poner clave a un PDF

Después de mucho darle vueltas al tema lo he conseguido.

Necesitaba un programa para ejecuar desde linea de comandos que le pasara un PDF y le pusiera una clave. Encontré multitud de programas que lo hacían en entorno de escritorio, incluso encontré uno que lo hacía desde linea de comandos (PdfEncrypt). Pero este último lanzaba unas ventanas muy molestas cada vez que encriptaba un PDF.

Entonces fue cuando decidí crear mi propio encriptador de PDFs. Y buscando encontré unas librerías en Java para la manipulación de PDFs (itext) y además de otras muchas cosas podía encriptar PDFs. Así que me puse manos a la obra y este fue el resultado.
import java.io.FileOutputStream;
import java.io.File;
import com.lowagie.text.pdf.PdfEncryptor;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;
/**
* Encriptador de PDFs
* @author José Manuel Ruiz Baena
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String PdfOriginal,PdfEncriptado,Clave;
try{
PdfOriginal = args[0];
PdfEncriptado = args[1];
Clave = args[2];
}catch(Exception ex){
ayuda();
return;
}

try{
File pdf = new File(PdfOriginal);
if(pdf.exists()){
PdfReader reader = new PdfReader(PdfOriginal);
PdfEncryptor.encrypt(reader,
new FileOutputStream(PdfEncriptado),
Clave.getBytes(),
"".getBytes(),
PdfWriter.ALLOW_PRINTING,
false);
}else
System.out.println("El fichero no existe");
}catch ( Exception e ) {
e.printStackTrace();
}
}
//Ayuda, explica el orden a seguir para pasar los parámetros a la aplicación
public static void ayuda(){
System.out.println("Necesita definir algunos argumentos para que la aplicacion funcione correctamente.");
System.out.println("1- Ruta del PDF a encriptar");
System.out.println("2- Ruta del PDF destino");
System.out.println("3- Clave ");
}
}

Para crear tu propio encriptador de PDFs lo primero que tienes que hacer es descargar las librerías .jar de iText. Son algunos pasos, aquí tienes el primer .jar y después tendrás que descargar el resto con svn, aquí tienes explicado como hacerlo.

Una vez que tengas todas las librerías .jar te creas un proyecto en tu IDE y pegas el código que he puesto arriba. Después tendrás que incluir las librerías descargadas.

Teóricamente ya podrás ejecutar la aplicación que encripta PDFs, pero tendrás que pasarle los argumentos oportunos. Según el IDE de desarrollo que uses se hará una u otra forma.

Una vez construido el proyecto podrás ejecutarlo desde la linea de comandos con:
java -jar EncriptadorPDF < ruta pdf original > < ruta pdf encriptado > < clave >
Yo he usado NetBeans, porque con Eclipse al crear el .jar y ejecutarlo me marcaba errores del tipo "no encuentro la clases...", así que lo intenté con NetBeans y sin problemas. Simplemente construir el proyecto y él solo me crea el .jar con mi código fuente y un directorio lib con los .jar de itext.

miércoles, 21 de enero de 2009

Conector JAVA contra un ODBC

Necesitaba hacer una conexión entre una aplicación de escritorio PHP con PHP+GTK (cuando tenga un rato publicaré algo sobre este tema). Pero no era capaz de conectar PHP con un ODBC del sistema, ya que el paquete PHP+GTK que uso para ejecutar la aplicación no contenía la librería necesaria para hacer una conexión ODBC.

Así que opté por crearme un conector en JAVA. Solo necesitaba una aplciación "tonta" que devolviera dos columnas de una tabla de una base de datos SQL Server. Así que programé esta clase:
import java.sql.*;
public class Lanzadora {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
String DSN,Usuario,Clave,Opcion;
try{
DSN = args[0];
Usuario = args[1];
Clave = args[2];
Opcion = args[3];
}catch(Exception ex){
ayuda();
return;
}
Connection connection = DriverManager.getConnection("jdbc:odbc:"+DSN,Usuario,Clave);
if (connection != null) {
if(Opcion.compareTo("listado")==0)
listado(connection);
if(Opcion.compareTo("debug")==0)
infoConexion(connection);
}else
System.out.println("No fue posible establecer la conexión.");
}

public static void infoConexion(Connection connection) throws Exception {
System.out.println();
System.out.println("Successfully connected");
System.out.println();
// Meta data
DatabaseMetaData meta = connection.getMetaData();
System.out.println("Driver Information");
System.out.println("Driver Name: "+ meta.getDriverName());
System.out.println("Driver Version: "+ meta.getDriverVersion());
System.out.println("Database Information ");
System.out.println("Database Name: "+ meta.getDatabaseProductName());
System.out.println("Database Version: "+meta.getDatabaseProductVersion());
}

public static void listado(Connection connection)throws Exception{
// Get connection
Statement sentencia = connection.createStatement();
// listado de DNIs y CLAVES
String sql="SELECT campo1,campo2 FROM tabla WHERE campo3>0";
ResultSet result=sentencia.executeQuery(sql);
while(result.next())
System.out.println(result.getString(1)+";"+result.getString(2)+".");
}

public static void ayuda(){
System.out.println("Necesita definir algunos argumentos para que la aplicación funcione correctametne.");
System.out.println("1º nombre del DSN a utilizar");
System.out.println("2º nombre del usuario de la base de datos Epsilon");
System.out.println("3º contraseña del usuario");
System.out.println("4º opcion");
System.out.println(" listado (muestra el listado de DNIs y Claves)");
System.out.println(" debug (valida conexión)");

}
}

Como podéis ver solo necesito pasarle como parámetros el nombre del DSN, el usuario, la clave del usuario y la opción que quiero usar (listado o debug). Esto me devolverá en la salida estandar el listado como si fuera un fichero CSV.

Para ejecutar la clase y hacerla externa al entorno de desarrollo necesitaremos exportarla a fichero JAR. Yo particularmente uso como IDE Eclipse y en Eclipse para exportar un proyecto como JAR es muy sencillo, solo vas a "Archivo->Exportar...->Como fichero JAR" y sigues las instrucciones del asistente.

Una vez que tenemos el fichero .jar, solo tenemos que ejecutarlo con los parámetros correcto para obtener la relación de campo1 y campo2 de la base de datos.
java -jar fichero.jar < nombre del DSN > < usuario > < clave > < listado|debug >

domingo, 23 de septiembre de 2007

Archive: Java[tm] Technology Products Download

Archive: Java[tm] Technology Products Download
Alguna vez os habéis vuelto locos buscando alguna versión concreta de algo de Java. Yo sí, sobre todo cuando necesitas un JRE para ejecutar alguna aplicación que te dicen "se recomienda versión XX JRE...", a mí me ha pasado con Eclipse así que buscando encontré esta web en SUN que nos ayudará a obtener cualquier versión antigua de sus productos.

DynDns OVH Sincronización de IP pública dinámica

  Si tienes un servidor en casa o detrás de una conexión con IP dinámica, sabes que tarde o temprano tu dirección IP pública cambia y tu dom...