• Lunes 29 de Abril de 2024, 00:02

Autor Tema:  Generar PDF a partir de reportviewer  (Leído 10608 veces)

lugarda

  • Miembro activo
  • **
  • Mensajes: 52
  • Nacionalidad: co
    • Ver Perfil
Generar PDF a partir de reportviewer
« en: Lunes 3 de Enero de 2011, 21:10 »
0
Hola a todos, tengo un pequeño inconveniente y lo pongo en el foro para ver si me dan alguna idea:

Desarrolle en c# un programa para generar un informe a partir de un reportviewer con informacion de la base de datos y me lo despliega en pantalla. Hasta alli todo va super. Lo que quiero es que el informe no lo despliegue en pantalla , sino que automaticamente se genere el archivo en PDF y se almacene fisicamente en una carpeta de mi disco.
Estuve revisando algunos ejemplos que encontré para generar archivos PDF haciendo uso de la libreria iTextSharp, pero la desventaja que tengo es que solo podria usar esta libreria , si los datos los estuviera leyendo de un archivo tipo texto y mi  informe se genera, es leyendo info de la base de datos directamente.

Bueno si alguien me puede dar una idea se los agradezco mucho. Por lo pronto voy a tratar de encontrar solucion.

Moni.

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re: Generar PDF a partir de reportviewer
« Respuesta #1 en: Martes 4 de Enero de 2011, 11:20 »
0
Pues, yo simplemente uso el método ExportToDisk de mi Reporte (un cristal reports) y le pase los parámetros que me pide (ExportFormatType.PortableDocFormat,"DIRECTORIO\NombreArchivo.PDF").

Pero eso sí tuve que importar (using) esta libreria: CrystalDecisions.Shared, OBVIAMENTE antes tuve que hacer referencia a mi proyecto a la libreria.. clic derecho a References ... agregar referencia ... y busque la de CrystalDecisions.Shared.

Código: C#
  1.  
  2. using CrystalDecisions.Shared;
  3.  
  4.  

Si no entendiste alguna parte.. me dices... saludos! :D
@gabio87

lugarda

  • Miembro activo
  • **
  • Mensajes: 52
  • Nacionalidad: co
    • Ver Perfil
Re: Generar PDF a partir de reportviewer
« Respuesta #2 en: Martes 4 de Enero de 2011, 17:56 »
0
Gracias por tu respuestas. La tendré en cuenta cuando use Cristal.
Por lo pronto te cuento que yo estoy trabajando con ReportViewer y lo solucioné  usando  reportViewer1.LocalReport.Render , asi:

Código: C#
  1.  
  2. private void frmReporte_Load(object sender, EventArgs e)
  3.         {
  4.  
  5.             DateTime fecha = Convert.ToDateTime("26/11/2010");
  6.             List<string> lista = new GenMailNotasNG().notas_cliente(conexionOracle,fecha);
  7.             foreach (string nota in lista)
  8.             {
  9.                 this.reportViewer1.ProcessingMode = ProcessingMode.Local;
  10.                 this.reportViewer1.LocalReport.ReportPath = pathReportes;
  11.                 try
  12.                 {
  13.                     this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("dsReporte_dtNota",
  14.                            new GenMailNotasNG().obtenerNota(conexionOracle,nota)));                }
  15.                 catch (Exception ex)
  16.                 {
  17.                     MessageBox.Show(ex.Message + "n" + ex.Source, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  18.                 }
  19.                 finally
  20.                 {
  21.                     this.reportViewer1.RefreshReport();
  22.                     byte[] bytes = reportViewer1.LocalReport.Render("PDF", null, out mimeType,
  23.                         out encoding, out extension, out streamids, out warnings);
  24.                     FileStream fs = new FileStream(@"c:\tmp\"+nota+@".pdf", FileMode.Create);
  25.                     fs.Write(bytes, 0, bytes.Length);
  26.                     fs.Close();
  27.                 }
  28.             }
  29.  
  30.  

cLaH2L

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re:Generar PDF a partir de reportviewer
« Respuesta #3 en: Jueves 9 de Mayo de 2013, 16:09 »
0
Lugarda me podrias explicar tu codigo, ya que tengo que generar lo mismo y no lo comprendo bien!