特定のプリンタについて、印刷時のカラー/モノクロ指定が有効にならない
対象製品
ActiveReports 2.0J Professional
詳細
ActiveReports では、印刷時のカラー/モノクロ指定をコード上であらかじめ設定する機能として Printer.ColorModeプロパティを用意しております。
◆サンプルコード
しかしながら、過去の事例として、印刷時に ColorModeプロパティの設定が反映されない機種が存在することが確認されております。
(参考)これまでに弊社にて本事象を確認した機種
上記のように使用するプリンタによって動作結果が異なりますので、本現象はプリンタまたはプリンタドライバ側の動作に依存して発生している現象となります。
また、本事象は、ActiveReports を使用せずに、Visual Basic標準の印刷機能を使用して印刷しても、同様に発生します。
◆サンプルコード
ActiveReportsの印刷処理は、ActiveReportsが直接プリンタを制御している訳ではなく、インタフェースであるWindows API関数を呼び出しているのみです。その先のデバイスは意識しておりません。Windows API関数に対して出力するデータも、プリンタやプリンタドライバごとに内容が変わるという訳ではなく、同一内容のデータを出力しています。
最終的な印刷結果や動作は、使用するプリンタやプリンタドライバに依存しますので、それらの条件によって印刷結果や動作に差異が生じる場合がございます。
本件については、Visual Basic 標準の印刷機能でも発生する問題であり、ActiveReports 側で対処することが困難であるため、製品の制限事項となります。
◆サンプルコード
Dim rpt As New ActiveReport1
' 印刷時のカラー/モノクロ指定を設定します。
rpt.Printer.ColorMode = vbPRCMMonochrome
'rpt.Printer.ColorMode = vbPRCMColor
' レポートを生成します。
rpt.Run False
' 印刷します。
rpt.PrintReport True
' 印刷時のカラー/モノクロ指定を設定します。
rpt.Printer.ColorMode = vbPRCMMonochrome
'rpt.Printer.ColorMode = vbPRCMColor
' レポートを生成します。
rpt.Run False
' 印刷します。
rpt.PrintReport True
しかしながら、過去の事例として、印刷時に ColorModeプロパティの設定が反映されない機種が存在することが確認されております。
(参考)これまでに弊社にて本事象を確認した機種
- カラー/モノクロ設定が反映されるプリンタ
- Canon LBP-2810
- EPSON PM-4000PX
- OKI C8600dn
- カラー/モノクロ設定が反映されないプリンタ
- Canon PIXUS 6100i
- FUJI XEROX DocuPrint C2425/C2426
- FUJI XEROX FX ApeosPort-IV C5570
- FUJI XEROX FX DocuCentre-Ⅱ C5400
- HP Designjet 111 Roll
- Kyocera FS-C5400DN
上記のように使用するプリンタによって動作結果が異なりますので、本現象はプリンタまたはプリンタドライバ側の動作に依存して発生している現象となります。
また、本事象は、ActiveReports を使用せずに、Visual Basic標準の印刷機能を使用して印刷しても、同様に発生します。
◆サンプルコード
Private Sub Command1_Click()
' 印刷時のカラー/モノクロ指定を設定します。
Printer.ColorMode = vbPRCMMonochrome
'Printer.ColorMode = vbPRCMColor
' 印刷します。
Printer.ForeColor = vbRed
Printer.Print "白黒印刷"
Printer.EndDoc
End Sub
' 印刷時のカラー/モノクロ指定を設定します。
Printer.ColorMode = vbPRCMMonochrome
'Printer.ColorMode = vbPRCMColor
' 印刷します。
Printer.ForeColor = vbRed
Printer.Print "白黒印刷"
Printer.EndDoc
End Sub
ActiveReportsの印刷処理は、ActiveReportsが直接プリンタを制御している訳ではなく、インタフェースであるWindows API関数を呼び出しているのみです。その先のデバイスは意識しておりません。Windows API関数に対して出力するデータも、プリンタやプリンタドライバごとに内容が変わるという訳ではなく、同一内容のデータを出力しています。
最終的な印刷結果や動作は、使用するプリンタやプリンタドライバに依存しますので、それらの条件によって印刷結果や動作に差異が生じる場合がございます。
本件については、Visual Basic 標準の印刷機能でも発生する問題であり、ActiveReports 側で対処することが困難であるため、製品の制限事項となります。