2011-10-24 26 views
10

Quiero generar grandes informes no gráficos (miles de páginas) en el nivel de código, omitiendo el control ReportViewer que simplemente atasca el navegador, desde los archivos .rdlc. Cuando realizo la prueba para generar un informe de aproximadamente 2000 páginas, el método Microsoft.Reporting.WebForms.LocalReport.Render tarda aproximadamente media hora en finalizar, lo que se considera una mala experiencia del usuario.¿Cómo puedo mejorar el rendimiento del método LocalReport.Render al exportar PDF desde .rdlc en el código?

¿Hay algún truco o solución alternativa para mejorar el rendimiento de la representación: en código, rediseñando el archivo .rdlc o en otro lugar, por ejemplo, simplemente aumentando el hardware? código

Ejemplo:

LocalReport localReport = new LocalReport(); 
localReport.ReportPath = Server.MapPath("~/report.rdlc"); 

SetDataSources(ref localReport); 

string reportType = "PDF"; 
string mimeType; 
string encoding; 
string fileNameExtension; 

string deviceInfo = 
"<DeviceInfo>" + 
" <OutputFormat>PDF</OutputFormat>" + 
" <PageWidth>8.5in</PageWidth>" + 
" <PageHeight>11in</PageHeight>" + 
" <MarginTop>0in</MarginTop>" + 
" <MarginLeft>0in</MarginLeft>" + 
" <MarginRight>0in</MarginRight>" + 
" <MarginBottom>0in</MarginBottom>" + 
"</DeviceInfo>"; 
} 

Warning[] warnings; 
string[] streams; 
byte[] renderedBytes; 

//Render the report 
renderedBytes = localReport.Render(
      reportType, 
      deviceInfo, 
      out mimeType, 
      out encoding, 
      out fileNameExtension, 
      out streams, 
      out warnings); 

Cualquier ayuda es muy apreciada, gracias de antemano!

Respuesta

0

regresar tabla de datos como fuente de datos se ejecuta mucho más rápido que una lista de objetos

0

generar grandes archivos PDF, se necesita memoria, pero hay un truco para optimizar el uso de memoria si es necesario:

  1. generar el informe como documentos PDF independientes con un máximo de 5-10 páginas (usando bibliotecas PDF específicos como libre de iTextSharp o PDF File Writer
  2. luego fusionar todos estos archivos PDF en un documento PDF de gran tamaño individual.

Esta técnica también es útil para controlar el progreso de la generación de informes.

Cuestiones relacionadas