最近、帳票印刷に関してはまった事について書きたいと思います。
最近、使用した帳票ツールの一つに、ActiveReportがあります。
ActiveReportを使用していて、サーバ上で印刷ができないという現象が発生しました。
調べたところ、ActiveReportがPDFの印刷処理を行なう際に、
アプリケーションを実行しているマシンで、
「通常使うプリンタ」として設定されているプリンタの設定(用紙サイズ)を使用して、PDFを作成するようです。
つまり、プリンタが1つもインストールされていない場合、設定が読み取れずに例外が発生してしまいます。
その場合の対処法として、用紙サイズを「ユーザ定義の用紙」として認識させることです。
実際にはA4サイズで作られたとしていても、「ユーザ定義の用紙」として認識させることで、
プリンタの設定によらず、指定したサイズで印刷を行なうことが出来ます。
以下が、実際に試したコードです。
Dim rpt As New ActiveReportSample() '作成したレポート
rpt.DataSource = ... 'データを設定する
rpt.Document.Printer.PrinterName = "" 'プリンタの設定を使用しないようにする
rpt.PageSettings.PaperKind = _
System.Drawing.Printing.PaperKind.Custom '「ユーザ定義の用紙」として認識させる
rpt.Run(false) '実行
rpt.DataSource = ... 'データを設定する
rpt.Document.Printer.PrinterName = "" 'プリンタの設定を使用しないようにする
rpt.PageSettings.PaperKind = _
System.Drawing.Printing.PaperKind.Custom '「ユーザ定義の用紙」として認識させる
rpt.Run(false) '実行
以上の様にすることで、プリンタがインストールされていないマシン上でも動作する様になりました。