2011-10-24 15 views
10

Tôi muốn hiển thị các báo cáo không đồ họa lớn (hàng nghìn trang) ở cấp mã, bỏ qua điều khiển ReportViewer chỉ làm kẹt trình duyệt, từ tệp .rdlc. Khi tôi kiểm tra để hiển thị báo cáo có khoảng 2000 trang, phương pháp Microsoft.Reporting.WebForms.LocalReport.Render mất khoảng nửa giờ để hoàn thành, được coi là trải nghiệm người dùng kém.Làm cách nào để cải thiện hiệu suất của phương thức LocalReport.Render khi xuất PDF từ .rdlc trong mã?

Có bất kỳ thủ thuật hoặc giải pháp thay thế nào để cải thiện hiệu suất hiển thị: trong mã, thiết kế lại tệp .rdlc hay ở một nơi khác, ví dụ: chỉ tăng phần cứng? đang

Ví dụ:

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

Bất kỳ giúp đỡ được nhiều đánh giá, cảm ơn trước!

Trả lời

0

trở DataTable như nguồn dữ liệu chạy nhanh hơn nhiều so với một danh sách các đối tượng

0

Tạo tập tin PDF lớn đòi hỏi bộ nhớ nhưng có một mẹo để tối ưu hóa việc sử dụng bộ nhớ nếu bạn cần phải:

  1. tạo báo cáo dưới dạng các tài liệu PDF riêng biệt có tối đa 5-10 trang (sử dụng các thư viện PDF cụ thể như miễn phí iTextSharp hoặc PDF File Writer
  2. rồi hợp nhất tất cả các tệp PDF này thành một tài liệu PDF lớn duy nhất.

Kỹ thuật này cũng hữu ích khi bạn kiểm soát tiến trình tạo báo cáo.

Các vấn đề liên quan