Печать Crystal Report на стороне клиента в ASP.NET C # - PullRequest
0 голосов
/ 01 марта 2012

Я создал приложение ASP.NET, в котором печатал отчет Crystal Report.Проблема заключается в том, что отчет распечатывается на серверном принтере, и, поскольку это веб-приложение, его нужно распечатать на клиентском компьютере.

Я использую метод PrintToPrinter(1, false, 0, 0), чтобы распечататьбез Crystal Report Viewer.

Кто-нибудь знает, есть ли способ напечатать его на стороне клиента?Если не;что вы рекомендуете для создания отчетов на стороне клиента для приложений ASP.Net?

Ответы [ 3 ]

0 голосов
/ 01 марта 2012

вот что вам нужно сделать / попытаться получить отчет для печати на клиентском компьютере

Внизу строки открывается диалоговое окно печати для печати без предварительного просмотра

crystalReportViewer1.PrintReport();

Ниже строка напрямую отправляет отчетный документ на принтер по умолчанию.

oReportDocument.PrintToPrinter(1,true,0,0); 
0 голосов
/ 18 апреля 2017

Средство просмотра отчетов Crystal - это серверный элемент управления, который не обеспечивает простой способ печати на клиенте.В прошлом мне удавалось добиться этого, экспортировав отчет в PDF, а затем с помощью встроенного средства просмотра PDF и некоторого JavaScript распечатал PDF.

// On server side
// Export to PDF
Guid imageGuid = Guid.NewGuid();
string pdfName = String.Format(@"{0}{1}{2}.pdf", pdfPath, reportName, imageGuid);
// expport to unique filename
report.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, pdfName);

// Display the pdf object in a literal control (mine's called pdfLiteral)
sb.AppendFormat("<object ID=\"pdfObject\" type=\"application/pdf\" data=\"{0}\" src=\"{0}\" style=\"width: 2px; height: 2px; ", pdfName);
sb.AppendLine("z-index:1; display: block; top: 0; left: 0; position: absolute; \">");
sb.Append("</object>");
pdfLiteral.Text = sb.ToString();
pdfLiteral.Visible = true;

// client side
// on document load call the printWithDialog function
 var code = function(){
    var pdf = document.getElementById('pdfObject');
    if (pdf == null)
        return;
    try {
        pdf.printWithDialog();
    }
    catch (err) {
        alert('Please Install Adobe Acrobat reader to use this feature');
    }
  };
// window onload, with delay
window.setTimeout(code, 1000);

См .: https://stackoverflow.com/a/25994086/474702

Примечание: хотя это хорошо работает в Chrome, оно работает только в IE, если на клиенте установлен Acrobat Reader в качестве средства просмотра PDF по умолчанию.

0 голосов
/ 01 марта 2012

Лучший способ - создать «версию для печати HTML» вашей страницы со ссылкой, которая называется:

javascript:window.print(); 
...