Crystal Report |Печать |Принтер по умолчанию - PullRequest
3 голосов
/ 15 июня 2011

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

Пользователь показал мне свое текущее приложение, созданное с использованием ForPro. В этом приложении в форме «Параметры принтера» можно увидеть все установленные принтеры, а пользователь может выбрать принтер по умолчанию. Когда счет выставлен, пользователь нажимает кнопку печати, и появляется одно диалоговое окно с запросом «нет». копий. После ввода счет распечатывается напрямую, без какого-либо диалогового окна «Печать». Если пользователь захочет заменить принтер снова, он / она изменит его в форме параметров принтера.

Я хочу знать, возможно ли подобное в Crystal Report, и мне нужно знать, как к этому подойти.

Ответы [ 2 ]

10 голосов
/ 15 июня 2011

Посмотрите на ReportDocument.PrintToPrinter SAP Docs или MSDN Docs , чтобы узнать, как указать PrinterName, а затем выполнить печать с использованием объекта ReportDocument.

Если выможет попытаться уйти от того, как пользовательский интерфейс приложения FoxPro для выбора принтера.Вместо этого используйте стандартное диалоговое окно печати для выбора принтера.

Следует иметь в виду, что если вы не зададите имя принтера до отправки отчета на принтер, оно будет использовать значение по умолчанию нахрустальный файл.Не путать с принтером по умолчанию для операционной системы пользователя.

Ниже приведен пример показа параметров PrintDialog некоторых параметров с использованием метода SetParameterValue и последующей отправки документа отчета на принтер

// Note: untested
var dialog = new PrintDialog();

Nullable<bool> print = dialog.ShowDialog();
if (print.HasValue && print.Value)
{
    var rd = new ReportDocument();

    rd.Load("ReportFile.rpt");
    rd.SetParameter("Parameter1", "abc");
    rd.SetParameter("Parameter2", "foo");

    rd.PrintOptions.PrinterName = dialog.PrinterSettings.PrinterName;
    rd.PrintToPrinter(1, false, 0, 0);
}
3 голосов
/ 29 ноября 2012

Приведенный выше код больше не работает так, как объявлено , что было принято SAP Вам необходимо установить для документа отчета значение ISCDReportClientDocument, а затем распечатать его. Это более надежный способ убедиться, что задание на печать не отправляется на принтер по умолчанию. Последние две строки можно заменить этим кодом.

    CrystalDecisions.ReportAppServer.Controllers.PrintReportOptions printReportOptions = new CrystalDecisions.ReportAppServer.Controllers.PrintReportOptions();
    CrystalDecisions.ReportAppServer.Controllers.PrintOutputController printOutputController = new CrystalDecisions.ReportAppServer.Controllers.PrintOutputController();
    CrystalDecisions.ReportAppServer.ClientDoc.ISCDReportClientDocument rptClientDoc;
    rptClientDoc = cryRtp.ReportClientDocument;
    printReportOptions.PrinterName = pDialog.PrinterSettings.PrinterName;
    rptClientDoc.PrintOutputController.PrintReport(printReportOptions);

Вот еще одна хорошая ссылка
http://mattruma.azurewebsites.net/?p=258

...