viernes, 16 de marzo de 2018

Crear PDF con Ireport

Se me presento la oportunidad de crear un reporte en PDF desde JAVA SWING y posteriormente abrir el PDF creado.

Para implementarlo use los siguientes recursos:

  1. Ireport 4.7: Para crear el reporte y compilar a .jasper, en la propiedades del reporte se debe indicar lenguaje java. (Por defecto esta seleccionado Groovy)
  2. Las librerias utilizadas son: 
    • commons-beanutils-1.8.2.jar
    • commons-collections-3.2.1.jar
    • commons-digester-2.1.jar
    • commons-javaflow-20060411.jar
    • commons-logging-1.1.jar
    • iText-2.1.7.jar
    • jasperreports-4.7.1.jar
    • jasperreports-fonts-4.5.0.jar
    • jfreechart-1.0.17.jar
    • jxl-2.6.10.jar
    • png-encoder-1.5.jar
    • poi-3.7-20101029.jar
  3. Creamos una clase con el metodo para crear los reportes PDF:
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;

/**
 *
 * @author lcampos
 */
public class UtilJasper {

    final public static void repPdf(
            Map parametro,
            String _rutaJasper,
            String _rutaPdf
    ) {
        JasperPrint jasperPrint = null;
        JasperReport masterReport = null;
        try {
            masterReport = (JasperReport) JRLoader.loadObject(_rutaJasper);
            jasperPrint = JasperFillManager.fillReport(masterReport, parametro, Mdi.cn);
            JasperExportManager.exportReportToPdfFile(jasperPrint, _rutaPdf);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Error al Generar Reporte..");
        }
    }
}

Observacion: El parametro Mdi.cn, hace referencia a la conexion a la base de datos via JDBC.

El método se llama de la siguiente manera:

 //CREAR PDF
                        Map _parm = new HashMap();
                        _parm.put("_parm1", parametro1);
                        _parm.put("_parmN", parametroN);      
                        UtilJasper.repPdf(_parm, _ruta, _urlPdf);
Donde: 

_parm: Es el conjunto de parametros que estan definidos es nuestro reporte.
_ruta: Es el directorio en donde se encuentra el archivo .jasper (Fuera del SRC)
_urlPdf: Es el directorio en donde se guarda el PDF creado

Para abrir el PDF creado usaremos el siguiente codigo:

//ABRIR PDF
 try {
       File path = new File(_urlPdf);
       Desktop.getDesktop().open(path);
 } catch (IOException ex) {
       ex.printStackTrace();
 }

jueves, 8 de marzo de 2018

Backup Automatico Base de Datos MySQL

Para asegurar la disponibilidad de los datos de nuestros clientes, es necesario tomar diferentes medidas de seguridad, una de estas medidas es realizar copias de seguridad de la base de datos.

En esta oportunidad les enseñare la forma de generar los BACKUPS de una base de datos MYSQL en un Sistema Operativo Windows.

PRIMERO: Debemos construir un archivo de texto plano con extension *.BAT, en el cual escribiremos las siguientes sentencias:

@echo off
title Creando BackUp base de datos MySQL
color 0a
set FECHA=%date%
set FECHA=%FECHA:/=%
set FECHA=%FECHA: =%
set FECHA=%FECHA::=%
set FECHA=%FECHA:,=%
set hora= %time%
set hora=%hora::=%
set hora=%hora: =%
set hora=%hora:.=%
set us=USR_BASEDEDATOS
set pa=PASWD_BASEDEDATOS
set db=NOMBRE_BASEDEDATOS
"C:/Program Files/MySQL\MySQL Server 5.7/bin/mysqldump.exe" --host=192.168.10.100 --port=3306 --user=%us% --password=%pa%  %db% > D:/SQL/%db%_BK_%FECHA%%hora%.sql

Los parametros sombreados con amarillo deben ser reemplazados de acuerdo a su configuracion de su base de datos y al directorio en donde quieren guardar las copias de seguridad.

SEGUNDO: En el programador de tareas de windows, crearemos una tarea simple, indicandole los parametros de acuerdo a las siguientes imagenes.




Tarea programada.





martes, 6 de marzo de 2018

Creando Código de Barras


Mediante la Resolución Superintendencia 185-2015, a partir del 01/01/2018, los emisores de comprobantes electronicos, estan obligados a colocar el un codigo de barras en la parte inferior de la representacion impresa del comprobante electronico.

Para los que usan Tecnologia Java como herramienta de desarrollo les entrego un pequeño aporte para poder generar el codigo de barras QR y PDF417.

Codigo Fuente:

import com.google.zxing.BarcodeFormat;
import com.google.zxing.Writer;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.pdf417.PDF417Writer;
import com.google.zxing.qrcode.QRCodeWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 *
 * @author Lusmilo Campos
 */

public class CodigoFS {

    public static void main(String[] args) throws WriterException, IOException {
        BitMatrix bitMatrix;
        Writer writer = new QRCodeWriter();
     
        bitMatrix = writer.encode("www.google.com", BarcodeFormat.QR_CODE, 200, 200);
        MatrixToImageWriter.writeToStream(bitMatrix, "png", new FileOutputStream(new File("d:/codigoQR.png")));
        System.out.println("Codigo Generado:");
     
     
     
        //EL NOMBRE DEL PNG DEBE SER EL MISMO DE LA FACTURA
        writer = new PDF417Writer();
        bitMatrix = writer.encode("www.titorlab.com", BarcodeFormat.PDF_417, 200, 200);
        MatrixToImageWriter.writeToStream(bitMatrix, "png", new FileOutputStream(new File("d:/codigoPDF417.png")));
        System.out.println("Codigo Generado:");
    }

}


Las librerias utilizadas son:

zxing-core-3.1.0.jar
zxing-core-1.7.jar
zxing-j2se-1.7.jar

Resultado:


Codigo de Barra PDF417

Codigo de Barra QR