Junio 13th, 2011

Imagen de PDF417 en Factura Electrónica

Una de las etapas que se deben enfrentar al implementar un sistema de factura electrónica, es la generación de la representación impresa del XML del DTE. En esta representación impresa, típicamente un PDF, se debe agregar un código de barras bi-dimensional llamado PDF417 que representa al Timbre Electrónico del Documento (TED).

Para generar este timbre, en Java he trabajado con la biblioteca iText que permite generar PDF y en particular PDF417. Si se decide a utilizar esta biblioteca, le recomiendo seguir los siguientes consejos:

  • Genere el objeto PDF417 con las indicaciones que dice el SII para columnas, filas y errores:
BarcodePDF417 pdf417 = new BarcodePDF417();
pdf417.setCodeRows(5);
pdf417.setCodeColumns(18);
pdf417.setErrorLevel(5);
pdf417.setLenCodewords(999);
  • Asegúrese que el timbre se genere de forma binaria y que el texto del TED está en el encoding solicitado por el SII (ISO-8859-1). Asuma que “stringTed” contiene el contenido del TED del DTE.
pdf417.setOptions(BarcodePDF417.PDF417_FORCE_BINARY);
pdf417.setText(stringTed.getBytes("ISO-8859-1"));
  • Genere la imagen y agréguela al documento iText. Asuma que se debe ubicar en las coordenadas (x,y) en el documento Document de iText, con un tamaño de 184 pixeles por 72 pixeles.
com.lowagie.text.Image image = pdf417.getImage();
image.setAbsolutePosition(x, y);
image.scaleAbsolute(184, 72);
documento.add(image);

Con esto, podrían generar sin problemas de encoding ni de lectura los timbres.

  1. jourzua ha publicado esto