Reports

12/02/2010

1

Olá, pessoal!
preciso criar uma ferramenta que gere relátórios em pdf e envie por email...
entretanto preciso fazer isso em lote...
alguém tem alguma idéia de como eu posso fazer isso?

Obrigada...
Responder

Posts

12/02/2010

Alfran Junior

Boa Noite Paula,
Vamos por partes quanto a geração de arquivos PDF eu custumo utilizar em minha aplicações a API iTextSharp disponivel em (http://sourceforge.net/projects/itextsharp/).
Com ela voce tem varias possibilidades dentre elas a de criação de Arquivos PDF a partir de codigo HTML ou seja usando toda formatação de uma simples linguagem de marcação de texto e bastante conhecida.
 
Para utilizar a biblioteca basta adicionar a referencia da dll no projeto.
 
Segue abaixo codigo como exemplo em C# da geração do mesmo.
 
//Cria um guid para o nome do arquivo
System.Guid nomeArquivo = System.Guid.NewGuid();
//Cria o documento no iTextSharp
Document documento = new Document(PageSize.A4, 80, 50, 30, 65);
//Seta no documento o arquivo pdf
PdfWriter.GetInstance(documento, new FileStream(Server.MapPath(nomeArquivo.ToString() + ".pdf"), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite));

//Criacao do sb para apendar o HTML
StringBuilder sb = new StringBuilder();
//HTML do Relatorio
sb.Append("<html><body><br /><br />");
sb.Append("<table width='100%' ><tr><td align='center' colspan='2'><p>Contrato nr. @NrContrato</p><br /><br /><br /><br /></td></tr></table>");

sb.Append("</body></html>");

//Parametros (Vou cria metodos para receber uma collection de parametros e ja fazer os replaces para o string builder)
sb = sb.Replace("@NrContrato", "20100000038");
documento.Open();
string tempFile = Path.GetTempFileName();
using (StreamWriter tempWriter = new StreamWriter(tempFile, false))
{
tempWriter.Write(sb.ToString());
}
HtmlParser.Parse(documento, tempFile);
documento.Close();
File.Delete(tempFile);
documento = null;
Response.Redirect(nomeArquivo.ToString() + ".pdf",true);
--------------------------------------------------------------------------------------
 
Para envio de emails em massa tu pode utilizar o proprio framework .net para fazer isso enviando o arquivo em anexo. Caso precise de ajuda pode me enviar email juniorsebr@gmail.com
Responder

18/02/2010

Paula Oliveira

Cara, você pode colocar as suas referências aí?
não tô encontrando
Responder

18/02/2010

Netasper

Paula,   Use o ABCpdf, muito bom. Gere os pdfs usando o componente acima. Construa um windows service ou mesmo uma rotina VBS que vai executar quando for agendada e pronto..   []s
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira