[RESOLVIDO]Não gera PDF quando deixo o programa executável

Leu o tutorial que mandei do iText?

Lá está bem explicadinho.

[quote=Lukas0145][code]
public static void criarPDF(String nomePDF,String diretorio) throws Exception {

	Document doc = null;
	OutputStream os = null;

	try {
		// cria o documento tamanho A4, margens de 2,54cm
		doc = new Document(PageSize.A4, 72, 72, 72, 72);

		// cria a stream de saída
	
		os = new FileOutputStream(diretorio+nomePDF+".pdf"); 
		// associa a stream de saída ao
		PdfWriter.getInstance(doc, os);

		// abre o documento
		doc.open();

		// adiciona o texto ao PDF
		Font f = new Font(FontFamily.COURIER, 20, Font.BOLD);
		Font f2 = new Font(FontFamily.COURIER, 14, Font.BOLD);
		// rescisão
		Paragraph p = new Paragraph("RESCISÃO DE CONTRATO", f);
		p.setAlignment(Element.ALIGN_CENTER);
		p.setSpacingAfter(20);
		doc.add(p);
		Paragraph p1 = new Paragraph("Funcionário:"
				+ JanelaRescisaoComJustaCausa.func.toUpperCase(), f2);
		p1.setAlignment(10);
		doc.add(p1);

} finally {
if (doc != null) {
// fechamento do documento
doc.close();
}
if (os != null) {
// fechamento da stream de saída
os.close();
}
}

[/code]
[/quote]
A primeira coisa é que você não tem um catch. Ok, eu vi o throws Exception no método. Porém, você está tratando a captura da exceção?
Resolva isso e depois podemos prosseguir.
Aliás, teste estourando uma exceção de propósito (adicione throw new Exception(“Exceção de teste”); em qualquer parte do teu try e veja se a exceção é disparada).

[quote=drsmachado][quote=Lukas0145][code]
public static void criarPDF(String nomePDF,String diretorio) throws Exception {

	Document doc = null;
	OutputStream os = null;

	try {
		// cria o documento tamanho A4, margens de 2,54cm
		doc = new Document(PageSize.A4, 72, 72, 72, 72);

		// cria a stream de saída
	
		os = new FileOutputStream(diretorio+nomePDF+".pdf"); 
		// associa a stream de saída ao
		PdfWriter.getInstance(doc, os);

		// abre o documento
		doc.open();

		// adiciona o texto ao PDF
		Font f = new Font(FontFamily.COURIER, 20, Font.BOLD);
		Font f2 = new Font(FontFamily.COURIER, 14, Font.BOLD);
		// rescisão
		Paragraph p = new Paragraph("RESCISÃO DE CONTRATO", f);
		p.setAlignment(Element.ALIGN_CENTER);
		p.setSpacingAfter(20);
		doc.add(p);
		Paragraph p1 = new Paragraph("Funcionário:"
				+ JanelaRescisaoComJustaCausa.func.toUpperCase(), f2);
		p1.setAlignment(10);
		doc.add(p1);

} finally {
if (doc != null) {
// fechamento do documento
doc.close();
}
if (os != null) {
// fechamento da stream de saída
os.close();
}
}

[/code]
[/quote]
A primeira coisa é que você não tem um catch. Ok, eu vi o throws Exception no método. Porém, você está tratando a captura da exceção?
Resolva isso e depois podemos prosseguir.
Aliás, teste estourando uma exceção de propósito (adicione throw new Exception(“Exceção de teste”); em qualquer parte do teu try e veja se a exceção é disparada).[/quote]
Obrigado, verei isso logo que chegar em casa!

Facim de resolver isto lucas na hora que você gera o .jar você não tá colocando
a pasta do Jasper junto de seu .jar, exemplo quando você gera o .jar tem que ter a pasta lib junto certo !?
quando você gera o exe tem que ter a pasta lib junto e a pasta jasper, faz assim cria uma pasta chamada Sistema coloca dentro dela o seu .exe, a pasta lib e a pasta que contém arquivos Jasper e roda =)

[quote=magalli]Facim de resolver isto lucas na hora que você gera o .jar você não tá colocando
a pasta do Jasper junto de seu .jar, exemplo quando você gera o .jar tem que ter a pasta lib junto certo !?
quando você gera o exe tem que ter a pasta lib junto e a pasta jasper, faz assim cria uma pasta chamada Sistema coloca dentro dela o seu .exe, a pasta lib e a pasta que contém arquivos Jasper e roda =)[/quote]
Não existe arquivo jasper, afinal, ele está usando apenas iText e não iReport.

Abaixo alguns tutoriais para dar uma mãozinha.

http://www.vogella.com/articles/JavaPDF/article.html

http://www.htmlstaff.org/ver.php?id=25089

E ae lukas0145 seguinte, procure saber mais sobre o ireport isso vai acrescentar muito em seu curriculum, fica mais fácil com banco de dados imagens, criar graficos!
da forma que esta fazendo é muito trabalhoso e a manutenção disso é muito complicado, vamos falar que seja para uma empresa de médio porte, não poderia gerar um relatorio em pdf dessa forma.
Aqui vai o código espero que vc estude mais sobre ireport
Fiz o código em minha máquina e esta funcionando normal, fiz os testes gerou os pdf como vc queria!
Qualquer coisa posta a dúvida ae! abraços

import java.io.FileOutputStream;
import java.io.OutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;

public class criaPdf_Unha {

	public String endereco1;
	public String endereco2;

	public static void criarPDF(String nomePDF, String diretorio)
			throws Exception {
		Document doc = null;
		OutputStream os = null;

		try {
			// cria o documento tamanho A4, margens de 2,54cm
			doc = new Document(PageSize.A4, 72, 72, 72, 72);

			// cria a stream de saída

			os = new FileOutputStream(diretorio + nomePDF + ".pdf");
			// associa a stream de saída ao
			PdfWriter.getInstance((com.lowagie.text.Document) doc, os);

			// abre o documento
			doc.open();

			String funcionario;

			funcionario = "Daniel";

			// rescisão
			Paragraph p = new Paragraph("RESCISÃO DE CONTRATO");
			p.setAlignment(Element.ALIGN_CENTER);
			p.setSpacingAfter(20);
			doc.add(p);
			Paragraph p1 = new Paragraph("Funcionário:"
					+ funcionario.toUpperCase());
			p1.setAlignment(10);
			doc.add(p1);

		}catch(Exception e){
			
			System.out.println("Erro : "+e.getLocalizedMessage());
			
		}
		if (doc != null) {
			// fechamento do documento
			doc.close();
		}
		if (os != null) {
			// fechamento da stream de saída
			os.close();
		}
		System.out
				.println("************************************************************");
		System.out
				.println("************************************************************");

	}

	public static void main(String[] args) throws Exception {

		System.out
				.println("************************************************************");

		criaPdf_Unha cp = new criaPdf_Unha();

		String diretorio = "c:/dump/";

		String arquivo = "teste2";

		cp.criarPDF(arquivo, diretorio);

	}

}

[quote=snowblacksoul]E ae lukas0145 seguinte, procure saber mais sobre o ireport isso vai acrescentar muito em seu curriculum, fica mais fácil com banco de dados imagens, criar graficos!
da forma que esta fazendo é muito trabalhoso e a manutenção disso é muito complicado, vamos falar que seja para uma empresa de médio porte, não poderia gerar um relatorio em pdf dessa forma.
Aqui vai o código espero que vc estude mais sobre ireport
Fiz o código em minha máquina e esta funcionando normal, fiz os testes gerou os pdf como vc queria!
Qualquer coisa posta a dúvida ae! abraços

[code]
import java.io.FileOutputStream;
import java.io.OutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;

public class criaPdf_Unha {

public String endereco1;
public String endereco2;

public static void criarPDF(String nomePDF, String diretorio)
		throws Exception {
	Document doc = null;
	OutputStream os = null;

	try {
		// cria o documento tamanho A4, margens de 2,54cm
		doc = new Document(PageSize.A4, 72, 72, 72, 72);

		// cria a stream de saída

		os = new FileOutputStream(diretorio + nomePDF + ".pdf");
		// associa a stream de saída ao
		PdfWriter.getInstance((com.lowagie.text.Document) doc, os);

		// abre o documento
		doc.open();

		String funcionario;

		funcionario = "Daniel";

		// rescisão
		Paragraph p = new Paragraph("RESCISÃO DE CONTRATO");
		p.setAlignment(Element.ALIGN_CENTER);
		p.setSpacingAfter(20);
		doc.add(p);
		Paragraph p1 = new Paragraph("Funcionário:"
				+ funcionario.toUpperCase());
		p1.setAlignment(10);
		doc.add(p1);

	}catch(Exception e){
		
		System.out.println("Erro : "+e.getLocalizedMessage());
		
	}
	if (doc != null) {
		// fechamento do documento
		doc.close();
	}
	if (os != null) {
		// fechamento da stream de saída
		os.close();
	}
	System.out
			.println("************************************************************");
	System.out
			.println("************************************************************");

}

public static void main(String[] args) throws Exception {

	System.out
			.println("************************************************************");

	criaPdf_Unha cp = new criaPdf_Unha();

	String diretorio = "c:/dump/";

	String arquivo = "teste2";

	cp.criarPDF(arquivo, diretorio);

}

}
[/code][/quote]
Com iText ele consegue fazer.
Caramba, como esse povo tem visão limitada. Acha que qualquer tecnologia é bala de prata e de uso obrigatório.
Tentar ajudar o cara com o problema dele ninguém tenta, apenas sugere que ele mude para iReport.
Já pensaram se ele não tem esta opção?

Caro drsmachado o que o lukas quer é exatamente o que coloquei!
Ele nao quer usar ireport e muito menos iText
Ele quer fazer na unha, se você rodasse o código veria que nao tem nada demais !

O que falei pra ele é simples, ele pode usar o ireport , pode usar o iText! é só procurar , estudar sobre o assunto!
Pra quando precisar destas tecnologia ele saber se virá!
Eu já dei a solução pra ele e espero que ele consiga fazer o que ele quer!!

Ninguém ainda me entendeu, rsrs… As soluções anteriores são ótimas, porém não são as quais eu procuro. Eu queria algo com o iText e nada de iReport. Eu faço o PDF na mão, daria muito trabalho eu trocar todo programa agora, pois o mesmo está em função do iText. O problema é: Ele gera PDF numa boa se NÃO compilado para .jar e se compilá-lo, ele simplesmente não gera o PDF! Deve ter algum jeito sim de faze-lo gerar PDF quando eu compila-lo.

O que eu faço:

  1. Abro um JOptionPane e peço que o usuário dê um nome ao PDF.
  2. Peço que ele digite também o diretório em que será salvo.
  3. Recolho os dados digitados pelo usuário.
  4. Gero o PDF.

Sim, já tratei a exceção mas não era isso, o erro continuou. Suspeito de ser alguma coisa a ver com a biblioteca na hora de compilar…

public class GerarPDFComJustaCausa{
	// String func, String catg, String causa, String dataAdm, String dataDm,
	// double salario
	public static void criarPDF(String nomePDF,String diretorio) throws Exception {

		Document doc = null;
		OutputStream os = null;

		try {
			// cria o documento tamanho A4, margens de 2,54cm
			doc = new Document(PageSize.A4, 72, 72, 72, 72);

			// cria a stream de saída
		//	os = new FileOutputStream(nomePDF+".pdf");
			os = new FileOutputStream(diretorio+nomePDF+".pdf"); 
			// associa a stream de saída ao
			PdfWriter.getInstance(doc, os);

			// abre o documento
			doc.open();

			// adiciona o texto ao PDF
			Font f = new Font(FontFamily.COURIER, 20, Font.BOLD);
			Font f2 = new Font(FontFamily.COURIER, 14, Font.BOLD);
			// rescisão
			Paragraph p = new Paragraph("RESCISÃO DE CONTRATO", f);
			p.setAlignment(Element.ALIGN_CENTER);
			p.setSpacingAfter(20);
			doc.add(p);
                    } finally {
			if (doc != null) {
				// fechamento do documento
				doc.close();
			}
			if (os != null) {
				// fechamento da stream de saída
				os.close();
			}
		}
	}
}

Imagem dos Warnings após compilar:


SOLUÇÃO:

[list]
Botão Direito no src
Export
Runnable JAR file
Extract required libraries into generated JAR
Finish
[/list]

Obs: Obrigado a todos que tentaram me ajudar com dicas e soluções!

1 curtida