CrystalReportsで任意で選択したプリンターで印刷を行いたい場合、通常のプリンター指定では認識されないようです。
認識させるには、少し特殊な指定が必要なようです。
動作環境
Windows | 10 |
---|---|
VisualStudio | Community 2015 Update3 |
.NETFramework | 4.6.1 |
CrystalReports | 13.0.20 |
通常の設定方法
こちらの設定で行っても指定したプリンターで印刷はされません。
public void Print(PrinterSettings settings) // デザイナーで定義したレポート TestReport r = new TestReport(); r.Load(); r.Refresh(); // 給紙トレイ設定 r.PrinterOptions.CustomPaperSource = settings.DefaultPageSettings.PaperSource; // プリンター名設定 r.PrinterOptions.PrinterName = settings.PrinterName; // ←設定されない!! // 印刷実行 r.PrintToPrinter(printer.Copies, false, 0, 0); }
正しい設定方法
1.プロジェクトの参照からアセンブリタブにある4項目を追加する
- CrystalDecisions.ReportAppServer.ClientDoc
- CrystalDecisions.ReportAppServer.Controllers
- CrystalDecisions.ReportAppServer.DataDefModel
- CrystalDecisions.ReportAppServer.ReportDefModel
2.プリンター名の設定方法を次のように変更する
public void Print(PrinterSettings settings) // デザイナーで定義したレポート TestReport r = new TestReport(); r.Load(); r.Refresh(); // 給紙トレイ設定 r.PrinterOptions.CustomPaperSource = settings.DefaultPageSettings.PaperSource; // プリンター名設定 // r.PrinterOptions.PrinterName = settings.PrinterName; ISCDReportClientDocument cdoc = r.ReportClientDocument; cdoc.PrintOutputController.GetPrintOptions().PrinterName = printer.PrinterName; // 印刷実行 r.PrintToPrinter(printer.Copies, false, 0, 0); }