Как распечатать отчет из CrystalReport (ASP.NET) на клиентском принтере.
Как печатать из ASP.NET CrystalReport на клиентском принтере
comment
Вы никогда не сможете печатать на клиентском принтере. Это не принадлежит вам. пользователь может печатать на своем собственном принтере.
- person John Saunders   schedule 23.09.2014
comment
Не совсем так. Печатать на сервер легко, используя PrintToPrinter или подобное, но печатать на клиенте из собственного кода не так просто.
- person reckface   schedule 23.09.2014
Ответы (1)
У вас есть два варианта:
- Установите для параметра PrintMode значение ActiveX или PDF и оставьте панель инструментов средства просмотра отчетов Crystal для управления этим параметром.
- Создайте PDF-файл в iFrame и запустите команду печати с помощью JavaScript.
Чтобы упростить то, что пользователи должны были установить на каждом клиенте, я выбрал скрытый вариант PDF и отдельную кнопку для печати на клиенте.
На странице aspx у меня есть литерал asp, который я заполняю встроенным объектом pdf размером 1px x 1px, поэтому он не виден пользователю. Затем при загрузке страницы вызовите метод printToPrinter.
// 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
// ...
// Display the pdf object
_sb.AppendFormat("<object ID=\"pdfObject\" type=\"application/pdf\" data=\"{0}\" src=\"{0}\" style=\"width: {1}; height: {2}; ", _pdf2Name, _width, _height);
_sb.AppendLine("z-index:1; display: block; border: 1px solid #cccccc; top: 0; left: 0; position: absolute;-+ \">");
_sb.Append("</object>");
pdfLiteral.Text = _sb.ToString();
pdfLiteral.Visible = true;
// javascript
// on document load call the printWithDialog function
var code = function(){
try
{
var pdf = $get('pdfObject');
if (pdf == null)
return;
try {
pdf.printWithDialog();
}
catch (err) {
alert('Please Install Adobe Acrobat reader to use this feature');
}
}
catch(err)
{
}
};
window.setTimeout(code, 1000);
person
reckface
schedule
23.09.2014