Report plugins


Bueno una de las cosas que me quedan por hacer o empezar ha hacer es el motor de informes o yai que es el codeName.

Estuve que elegir en que formatos pdf, RTF, excel , Open  Calc, pues viendo todas las herramientas de reporting vi que lo estándar es pdf,excel y html, esto me llevo a una pregunta que usar para pdf ya que para Excel esta mas que claro POI por que es la única que conozca.

Pero para pdf he visto algunas sobre todo con 2 una que me la enseño dagi3d programador cualificado donde los alla y es una capa que recubre a  iText que es la otra.

Voy a enseñar un poco ambas con algunos ejemplos y los resultados de mis pruebas con ellas , siempre con una cantidad de datos mas grande de lo avitual para los sistemas de reporte.

la Primera es iText,a segunda es la que he hablado anterior mente Flying Saucer y por ultima la todo poderosa PIO de Apache.

iText

iText

iText es una biblioteca Open Source para crear y manipular archivos PDF, RTF, y HTML en Java. Fue escrita por Bruno Lowagie, Paulo Soares; está distribuida bajo la Mozilla Public License con la LGPL como licencia alternativa.

Esta librería es de las mejores en el mundo java para la exportación a pdf , el problema que tiene es la maqueta  es muy complicada y eso hacer difícil su uso , requiere una gran cantidad  horas de pruebas para poder usarlas.

Flying Saucer

Esta librería es la que he comentado antes muy por encima , esta iberia emcapsula a iText y lo que   hace es renderizar una pagina xhtml+css y sacarte el pdf . Esta librería tiene problemas o mas de 6000 registros en base de datos , usa mucha memoria ya que utiliza DOM para poder pasear el xhtml.

Esta es POI para poder generar ficheros excel ya que es el formato de fichero mas común dentro de los negocios , hay barbaridades hechas con POI , tiene otras aplicaciones pero esta creo que es la mas común.

Ejemplos de uso

Ahora voy a explicar como voy a usar cada una y por que. La primera es POI , necesito un método para que cuando ejecute la query me de un fichero .xsl con el nombre que yo quiera tanto en el fichero como en las pestañas.

xsl

public void escribirExcelOnlySheetHerad(String nameXsl, String nameSheet,
ResultSet datos) throws SQLException, IOException {
HSSFWorkbook wb = new HSSFWorkbook();
// Creo la pestaña
HSSFSheet sheet = wb.createSheet(nameSheet);
HSSFRow row = sheet.createRow((short) 1);
// pongo las cabezeras de la query
for (int j = 1; j <= datos.getMetaData().getColumnCount(); j++) {
HSSFCell cell = row.createCell(j, HSSFCell.CELL_TYPE_BLANK);
.......

Ahora toca iText :D.Como ya hable iText es para pasar a pdf tiene muy buena documentación y es potente , pero es complicada de manejar.Tiene un buen libro

itext

public void RendderPEF(ResultSet rs,String NameFile,String size){
try {
int numS = rs.getMetaData().getColumnCount();
Document document  = new Document();
PdfWriter.getInstance(document, new FileOutputStream(NameFile));
document.open();
PdfPTable table = new PdfPTable(numS);
PdfPCell cell = new PdfPCell(new Paragraph("Informe Ejemplo"));
cell.setColspan(numS);
table.addCell(cell);
int i = 1;
while (rs.next()) {
for(int j = 0 ; j>rs.getMetaData().getColumnCount();j++){
table.addCell(rs.getString(j));
….

y por ultimo flying saucer , lo que tengo es un método que saca un xhtml con el ResulSet y me genera el informe, el problema de esta librería es que come mucha ram para informes de 6000 registros , por usar DOM para renderizar el informe , pero esta librería es muy sencilla de manipular ya que con css uno hace maravillaras.

String inputFile = "samples/firstdoc.xhtml";
String url = new File(inputFile).toURI().toURL().toString();
String outputFile = "firstdoc.pdf";
OutputStream os = new FileOutputStream(outputFile);

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(os);

os.close();

Este es el diagrama UML de yai que es básicamente un modelo Strategy.

reportSiento si el post es algo grande :P.

Fuentes:

Anuncios

5 comentarios en “Report plugins

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s