Я разработал отчет Crystal, который будет отправляться на определенный принтер (штрих-код) через веб-интерфейс. Разрешение на создание отчета в стандартной программе просмотра отчетов Crystal было причиной проблем, поэтому сейчас я использую кодовый код для отправки отчета непосредственно на принтер.
ReportDocument Report = new ReportDocument();
ParameterDiscreteValue Order = new ParameterDiscreteValue();
Order.Value = Convert.ToInt32(txtOrder);
Report.Load(reportPath);
Report.SetParameterValue("OrderNo", Order);
PageMargins margins;
margins = Report.PrintOptions.PageMargins;
margins.bottomMargin = 0;
margins.leftMargin = 0;
margins.rightMargin = 0;
margins.topMargin = 0;
Report.PrintOptions.ApplyPageMargins(margins);
Report.PrintOptions.PrinterName = "\\\\printserver\\Zebra Z6M Plus (300dpi)";
Report.PrintToPrinter(1, false, PageNum, PageNum);
Report.Close();
При печати из конструктора (CRXI) все работает нормально, но когда веб-интерфейс отправляет задание на принтер (любой принтер), он меняет шрифт на Times New Roman, который портит все размеры полей. Если я использую стандартный просмотрщик отчетов .NET, он использует правильный шрифт, так что я уверен, что изменение вызвано созданием / использованием ReportDocument.
Как я могу отправить отчет напрямую на печать, не возвращая шрифты по умолчанию в Times New Roman?