わんくまライブラリ Wankuma.Drawing.Printing.PrinterInfoクラス Version1
2005/07/19
この文書はVisual Studio 2003(.NET1.1)をベースに記述されています。それ以降のバージョンや、あなたが読んでいる時点では変更されている可能性があります。
またバージョンアップされている場合にはなんらかかの不具合を含んでいる可能性があります。
ソースファイルへ
Wankuma.Drawing.Printing.PrinterInfo1s.htm
ソースファイル直接ダウンロードへ
Wankuma.Drawing.Printing.PrinterInfo1c.txt
利用規約へ
../kiyaku.htm
このクラスを利用するために必要なクラス
Wankuma.Interop.GetDeviceCapsWrapper Version1
Wankuma.Interop.GetDeviceCapsWrapper1d.htm
クラスの説明
プリンタの情報はPrinterSettingsクラスで取得できます。
ただしこのPrinterSettingsはWindowsとしてプリンタの管理している情報のごく一部のみにしかアクセスすることが出来ません。
本来のプリンタの余白を、Wankuma.Interop.GetDeviceCapsWrapper経由で取得するようにしたのがこのクラスです。
スタティックメソッドの説明
public static Rectangle MarginBounds( string PrinterName, Rectangle PageBounds )
余白を取得します。プリンタ名と、印刷するページのサイズなどを渡すと余白を加味したRectangleを返します。
テストコード
C#
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings(); Rectangle 元矩形 = new Rectangle(0, 0, ps.PaperSizes[0].Width, ps.PaperSizes[0].Height ); Rectangle 結果矩形 = Wankuma.Drawing.Printing.PrinterInfo.MarginBounds(ps.PrinterName, 元矩形); System.Diagnostics.Debug.WriteLine(string.Format( "Top:{0}", 元矩形.Top )); System.Diagnostics.Debug.WriteLine(string.Format( "Height:{0}", 元矩形.Height )); System.Diagnostics.Debug.WriteLine(string.Format( "Left:{0}", 元矩形.Left )); System.Diagnostics.Debug.WriteLine(string.Format( "Width:{0}", 元矩形.Width )); System.Diagnostics.Debug.WriteLine(string.Format( "Top:{0}", 結果矩形.Top )); System.Diagnostics.Debug.WriteLine(string.Format( "Height:{0}", 結果矩形.Height )); System.Diagnostics.Debug.WriteLine(string.Format( "Left:{0}", 結果矩形.Left )); System.Diagnostics.Debug.WriteLine(string.Format( "Width:{0}", 結果矩形.Width ));
VB
Dim ps As New System.Drawing.Printing.PrinterSettings Dim 元矩形 As New Rectangle(0, 0, ps.PaperSizes.Item(0).Width, ps.PaperSizes.Item(0).Height) Dim 結果矩形 As Rectangle = Wankuma.Drawing.Printing.PrinterInfo.MarginBounds(ps.PrinterName, 元矩形) Debug.WriteLine(String.Format("Top:{0}", 元矩形.Top)) Debug.WriteLine(String.Format("Height:{0}", 元矩形.Height)) Debug.WriteLine(String.Format("Left:{0}", 元矩形.Left)) Debug.WriteLine(String.Format("Width:{0}", 元矩形.Width)) Debug.WriteLine(String.Format("Top:{0}", 結果矩形.Top)) Debug.WriteLine(String.Format("Height:{0}", 結果矩形.Height)) Debug.WriteLine(String.Format("Left:{0}", 結果矩形.Left)) Debug.WriteLine(String.Format("Width:{0}", 結果矩形.Width))
結果
Top:0 Height:1799 Left:0 Width:1201 Top:20 Height:1759 Left:20 Width:1161
もとのサイズは紙のサイズそのものですが、結果の矩形は余白を加味した矩形になっています。
この例では上下左右共に0.2Inchの余白で印刷可能なプリンタのようです。