:::: MENU ::::
Posts tagged with: java

PDF en Java

Cuando estas metido en un proyecto en el que tienes que generar documentación en PDF llegará un momento en el que tendrás que editar PDF ya generados. Una de las mejores soluciones es utilizar la librería iText. Con la cual, no sólo tienes la opción de editarlos si no también de crearlos.

Pongamos el ejemplo de la edición de un pdf, en la que se inserta un texto:

PdfReader reader = new PdfReader("ruta del pdf a editar");
PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("ruta de la salida del nuevo pdf"));
PdfContentByte cb = stamp.getUnderContent(1);
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA_BOLD,BaseFont.CP1250, BaseFont.NOT_EMBEDDED);
cb.beginText();
// Indico la fuente a utilizar
cb.setFontAndSize(bf, 13);
// Indico la posicion en la que va a ser colocado el texto
cb.setTextMatrix(15,825);
// Escribo el texto
cb.showText("Esto es un ejemplo ");
// Indico que termine de agregar texto
cb.endText();
stamp.close();

El siguiente ejemplo indica la generación de PDF:

Document documento = new Document();
FileOutputStream ficheroPdf = new FileOutputStream("ruta del PDF de salida");
// Se asocia el documento al OutputStream
PdfWriter.getInstance(documento, ficheroPdf);

//Genramos el documento y le asignamos un texto

documento.open();
Paragraph p2 = new Paragraph(new Phrase("Esto es un ejemplo", FontFactory.getFont("arial", 13, Font.BOLD)));

documento.add(p2);

documento.close();

Bueno eso es todo, espero que os haya servido. Con esta librería se pueden hacer muchas cosas mas, pasaros por su API. Saludos.


Intérpretes de Fórmulas en Java

Parecía mentira cuando me encontré, gracias a Google, con la librería exp4j para Java. Y es que andaba buscando un intérprete de fórmulas para un proyecto en el que estoy involucrado.

La idea era que el usuario nos diera una fórmula a través de un formulario, como por ejemplo: (X+Y * (Z/100)). Y luego introdujera las variables para obtener el resultado. Hasta ahí dices: ¡¿y esto es complicado?! No complicado, ¡complicadísimo! ¿Por qué? Pues, ¿Cómo haces para interpretar fórmulas matemáticas pasadas como cadenas en Java? Y ya no solo eso, sino que también admita cualquier fórmula y sea capaz de realizarla. Ya no es tan sencillo ¿verdad?

Pues bien me he hecho con una librería que es capaz de hacer eso. La podéis descargar desde aquí. Leerse un poco la API y tirar de los ejemplos de la Web. Y veréis como os irá bien.

Saludos y gracias por leerme.

 


Tratar archivos CSV en Java

Hoy quiero mencionar el tratado de ficheros CSV a través de la librería CSVReader de Java.

Estos ficheros vienen muy bien si por ejemplo queréis hacer un volcado de datos masivos a una Base de Datos y no os interesa que los usuarios de la aplicación piquen todos los datos a mano. Imaginaros que una empresa tiene cientos o miles de datos en un Excell  y lo quiere pasar a una Base de datos en SQL, Oracle,… Pues gracias a que el Excell tiene la opción de poder guardar los archivos en CSV y al fácil tratado de estos archivos con la librería CSVReader de Java, podéis solucionar este problema muy rápidamente.

En el  ejemplo sencillo que os voy a comentar, la idea principal es mostrar por consola el contenido de un fichero tipo .csv. Pero ya sabemos, que también lo podemos aplicar para ecribir por ejemplo en bases de datos.
Partimos del fichero ejemplo “productos.csv”:

ID,PRODUCTO,STOCK,PRECIO
1,MESA,124,65
2,SILLA,20,25.80
3,LAMPARA,68,30

Y de la clase:

import java.io.FileNotFoundException;
import java.io.IOException;


import com.csvreader.CsvReader;

public class leerCSV {

/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {

//Le pasamos la URL del archivo CSV a leer.
CsvReader reader = new CsvReader("C:\\\\productos.csv",);
//Si partimos de un input type File
/*CsvReader reader = new CsvReader(objetoformulario.getFichero.getInputStream(), Charset.forName("ISO-8859-1"));*/
try {
while (reader.readRecord())
{
String id = reader.get(0);
String producto = reader.get(1);
String stock = reader.get(2);
String precio = reader.get(3);
System.out.println("Filas: " + id + "-" + producto + "-" + stock + "-" + precio);
}
} catch (IOException e) {
e.printStackTrace();
}

reader.close();

}

}

Saludos.