Desenvolvimento - Java

Geração de arquivos PDF com Java – Parte III (Codigos de Barra)

Esse artigo é complementar aos dois artigos já publicados aqui no Linha de Código. O exemplo de uso de código de barras do artigo tem como base o tutorial disponível na web do próprio site do iText.

por Eric C M Oliveira



A API iText apresenta uma série de classes para a geração e manipulação de arquivos no formato PDF que contenham código de barras.

Esse artigo é complementar aos dois artigos já publicados aqui no Linha de Código, sob o título “Geração de arquivos PDF com Java – Parte I” e “Geração de arquivos PDF com Java – Parte II” (ver abaixo em “Outros Artigos Do Colunista”). O exemplo de uso de código de barras abaixo tem como base o tutorial disponível na web do próprio site do iText (ver referências).

O iText suporta os principais tipos de código de barra, como Barcode39, Barcode128 (128, 128_UCC, 128_RAW), BarcodeEAN (EAN13, EAN8, UPCA, UPCE), EANSUP, etc.

O processo basicamente se inicia com um objeto da classe do tipo de código de barra desejado. Então deve-se usar o método setCode para o valor desejado do mesmo e se finaliza com o método createImageWithBarcode. Ao fim, como de costume, adiciona-se todo conteúdo (o código de barra em si) em um documento.

Abaixo segue um código básico para gerar um barcode EAN com valor hardcode 9780201615883:

PdfContentByte cb = writer.getDirectContent();

BarcodeEAN codeEAN = new BarcodeEAN();

codeEAN.setCodeType(codeEAN.EAN13);

codeEAN.setCode("9780201615883");

Image imageEAN = codeEAN.createImageWithBarcode(cb, null, null);

document.add(new Phrase(new Chunk(imageEAN, 0, 0)));

É importante notar que todas as classes de código de barras implementam a classe abstrata Barcode. Há classes para os principais de tipos de códigos de barra, assim como métodos para manipulação dos mesmos. Abaixo alguns exemplos de import para trabalhar com os diversos tipos de códigos de barra:

import com.lowagie.text.pdf.Barcode;

import com.lowagie.text.pdf.Barcode128;

import com.lowagie.text.pdf.Barcode39;

import com.lowagie.text.pdf.BarcodeEAN;

import com.lowagie.text.pdf.BarcodeEANSUPP;

import com.lowagie.text.pdf.BarcodeInter25;

import com.lowagie.text.pdf.BarcodePostnet;

Abaixo podemos ver uma classe que gera um arquivo PDF no Drive C, conforme codificado:

package pdfLinhaCodigo;

import java.io.FileOutputStream;

import com.lowagie.text.Chunk;

import com.lowagie.text.Document;

import com.lowagie.text.Image;

import com.lowagie.text.PageSize;

import com.lowagie.text.Phrase;

import com.lowagie.text.pdf.BarcodeEAN;

import com.lowagie.text.pdf.PdfContentByte;

import com.lowagie.text.pdf.PdfWriter;

public class PDF_LinhaCodigo3 {

public static void main(String[] args) {

System.out.println("Barcode Linha de Código ");

Document document = new Document(PageSize.A4, 50, 50, 50, 50);

try {

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C://Codigo_Barra_Java_Linha_Codigo.pdf"));

document.open();

PdfContentByte cb = writer.getDirectContent();

BarcodeEAN codeEAN = new BarcodeEAN();

codeEAN.setCodeType(codeEAN.EAN13);

codeEAN.setCode("9780201615883");

Image imageEAN = codeEAN.createImageWithBarcode(cb, null, null);

document.add(new Phrase(new Chunk(imageEAN, 0, 0)));

}

catch (Exception de) {

de.printStackTrace();

}

document.close();

}

}

Após executar a classe acima, verifique em seu Drive C e busque pelo artigo pdf de nome “Codigo_Barra_Java_Linha_Codigo”:

Assim sendo, apresentamos um dos recursos mais usados em geração de arquivos de formato PDF, e muito comum em sistemas web que geram boletos de pagamento contendo códigos de barra.

Referências:

http://itextdocs.lowagie.com/tutorial/

http://itextdocs.lowagie.com/tutorial/objects/images/tiff/index.html#barcode

Eric C M Oliveira

Eric C M Oliveira - Bacharel em Ciencia da Computação/FASP e Comunicação/Unesp, tem experiência em desenvolvimento Java nas plataformas J2SE, J2EE e J2ME, além de atividades ligadas a disciplina de testes, engenharia e qualidade de software. Tem certificações Java SCJP 1.3, SCJP 1.4, Rational Test Management, Rational Robot e RUP (Rational Unified Process).