Java: Dúvida básica na reta final do Código de Barras...

Iniciado por Aureliex, 06 de Outubro de 2007, 01:50

tópico anterior - próximo tópico

Aureliex

Boa noite!
Bem, esse código abaixo é o meu GeraCodigos.java que estou usando pra gerar códigos de barras e colocá-los num arquivo .PDF que o programinha mesmo cria. O problema é que ele não está deixando colocar o valor inicial menor do que 1000. Ou seja, sempre tem que começar do 1000 e é impossível começar do 0001.
Alguém já passou por isso ou sabe o que eu fiz de errado? Também gostaria de saber como faço pro usuário poder escolher a distância entre as linhas (o número de colunas já fiz uma gambiarra e está sendo possível o usuário escolher).
E a última dúvida de hoje (hehe) é como eu faço pra por exemplo quando o usuário clicar no menu "Ajuda" ele abrir o "Ajuda.txt" que estaria na mesma pasta do JAR.

Obrigado espero por respostas amigos!


//
import java.io.FileOutputStream;

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BarcodeInter25;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;


public class GeraCodigos {
   
   
    static String total  = "";
   
   
    public static String adicionaSequenciaInter25(String adicionar) {
       
        total         = adicionar;
       
        String parte1 = "";
        String parte2 = "";
        int valor2 = 0;
        int valor1 = 0;
       
       
        if (total.length() > 9) {
            valor1 = Integer.parseInt(total.substring(total.length()-9));
           
            valor2 = Integer.parseInt(total.substring(0,total.length()-9));
        } else {
            valor1 = Integer.parseInt(total);
        }
       
        if (total.length() < 10) {
            if (valor1 == 999999999) {
                valor2++;
               
                total = String.valueOf(valor2)+"000000000";
            } else {
                valor1++;
                System.out.println(valor1);
                total = String.valueOf(valor1);
            }
           
        } else {
            if (valor1 == 999999999) {
                valor2++;
                System.out.println(valor2);
                total = String.valueOf(valor2)+"000000000";
            } else {
               
                valor1++;
                System.out.println(valor1);
                total = String.valueOf(valor2)+String.valueOf(valor1);
               
            }
        }
       
        return total;
    }
   
    // Metodo para gerar Codigos de Barra
    public static void geraBarras(String valorInicial, int vezes) {
        // Cria documento no Tamanho A4
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
       
       
        try {
           
            // Gera arquivo PDF
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("Barras.pdf"));
           
            // Abre o Arquivo para manipulacao
            document.open();
           
            // Adiciona conteudo ao documento
            PdfContentByte cb = writer.getDirectContent();
           
            // Tipo do Codigo de Barras: Interleaved 2 of 15
            BarcodeInter25 codeInter25 = new BarcodeInter25();
           
            // Gera Tabela para organizar disposicao de Barras. Apenas Colunas
            PdfPTable table = new PdfPTable(1);
            table.setWidthPercentage(100);
            table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
            table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
            table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE);
            table.getDefaultCell().setFixedHeight(70);
           
            // Gera primeiro Codigo de Barras
            codeInter25.setCode(String.valueOf(valorInicial).trim());
            Image imagemInter25 = codeInter25.createImageWithBarcode(cb,null,null);
            // Adiciona nova tabela o codigo de barras gerado
            table.addCell(new Phrase(new Chunk(imagemInter25, 0, 0)));
            total = valorInicial;
            if (vezes > 1 ) {
                for (int cont = 1; cont < vezes; cont++ ) {
                    codeInter25.setCode(adicionaSequenciaInter25(total));
                   
                    imagemInter25 = codeInter25.createImageWithBarcode(cb,null,null);
                    table.addCell(new Phrase(new Chunk(imagemInter25, 0, 0)));
                }
               
            }
           
           
            // Adiciona a tabela ao documento pdf
            document.add(table);
           
        } catch (Exception de) {
            de.printStackTrace();
        }
       
       
       
       
        //fecha documento
        document.close();
    }
}