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();
}
}