Asp.net Печать без показа отчета

отредактировано 21:49 Раздел: FastReport .NET
Основная идея сформировать параметры в ASP, Передать их отчету, и не показывая отправить на печать.
Отчет сам подлючется к базе(настроено соединение) и забирает что необходимо.
написал:
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using FastReport;
using FastReport.Data;

public partial class _Default : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e){
FastReport.Utils.RegisteredObjects.AddConnection(typeof(OracleDataConnection));
}
protected void Button1_Click(object sender, EventArgs e){
WebReport1.Report.SetParameterValue("pIdBatch", TextBox3.Text);
WebReport1.Report.PrintPrepared();
}
protected void WebReport1_StartReport(object sender, EventArgs e){
Report report = new Report();
report.Load("C:\\Documents and Settings\\bs-dev-tolpegin\\Мои документы\\Visual Studio 2008\\WebSites\\WebSite4\\App_Data\\RepF113-2.frx");
WebReport1.Report = report;
}
}

Пытался реализовать данным вариантом, но печатается пустой лист.
Возможноли релизовать задуманную идею??

Комментарии

  • отредактировано 21:49
    Печать в asp.net реализована только через экспорт в PDF. Если хотите сформировать отчет без его показа - используйте компонент Report, стройте отчет, экспортируйте в PDF и записывайте результат в Page.Response.

    Report report = new Report();
    report.Load(...);
    report.RegisterData(...);
    report.Prepare();
    PDFExport exp = new PDFExport();
    MemoryStream stream = new MemoryStream();
    exp.Export(report, stream);
    // now put this stream in the page response....

    Напрямую печатать нельзя (WebReport1.Report.PrintPrepared), т.к. данный код выполняется на стороне сервера.
  • отредактировано 21:49
    Сори может я что то не понимаю
    написал:
    Report report = new Report();
    report.Load(...);
    report.RegisterData(...) //Вопрос 1???
    report.Prepare();
    PDFExport exp = new PDFExport();
    MemoryStream stream = new MemoryStream(); Вопрос 2??
    exp.Export(report, stream);

    Вопрос 1?? Обязательно регистрировать данные?? Тк отчет сам забирает данные из базы. Ему необходимо передать только параметр.
    В Последствии есть идея сделать страницу с множеством отчетов, которые которые непонятно откуда будут брать данные.

    Вопрос 2?? А нельзя примерчик до конца до вывода на принтер? Буду благодарен.
  • отредактировано June 2010
    1) в Вашем случае это не нужно
    2) не будет никакого вывода на принтер. Будет экспорт в PDF, диалоговое окно браузера "Открыть/Сохранить". При открытии файл открывается в Adobe Acrobat, после этого его можно распечатать.
            protected void Button1_Click(object sender, EventArgs e)
            {
                FastReport.Utils.Config.WebMode = true;
    
                using (Report report = new Report())
                {
                    report.Load("your_report.frx");
                    report.Prepare();
    
                    // Export report to PDF stream
                    FastReport.Export.Pdf.PDFExport pdfExport = new FastReport.Export.Pdf.PDFExport();
                    using (MemoryStream strm = new MemoryStream())
                    {
                        report.Export(pdfExport, strm);
    
                        // Stream the PDF back to the client as an attachment
                        Response.ClearContent();
                        Response.ClearHeaders();
                        Response.Buffer = true;
                        Response.ContentType = "Application/PDF";
                        Response.AddHeader("Content-Disposition", "attachment;filename=report.pdf");
    
                        strm.Position = 0;
                        strm.WriteTo(Response.OutputStream);
                        Response.End();
                    }
    
                }
            }
    
  • отредактировано 21:49
    Спасибо то что надо!!!

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.