トップ回答者
プリンターごとの印刷可能領域の調整方法

質問
-
おはようございます。
VB2005Express+SQLServerExpressを使用しております。
PrintDocumentを利用して印刷を行っております。
あるプリンターですべて表示される印刷が別のプリンターでは一部切れてしまうという現象が起こっています。
調べたところ、プリンターの種類によりPrintDocumentで指定する余白とは別に、印刷可能領域というものがあり、
それが印刷が切れてしまう原因らしいというところまではわかりました。何とかこれに対応しようと考えており、以下2つの方法を考えています。
1.ほぼすべてのプリンターの印刷可能領域に対応できる範囲内での印刷とあらかじめしておく。
2.印刷可能領域により、印刷を自動縮小できるようなプログラムをする。「1」については、すべてのプリンターの印刷可能領域を把握することが不可能なので、100%の対応は無理だとは
思うのですが、ある程度の範囲内に印刷を納めるようにあらかじめプログラムをしておけばよいので、すぐにできます。「2」については、こちらが希望する動作なのですが、どのように手掛けてよいか悩み中です。
(まだ、勉強中なのでもともとWordなどで作ってあった印刷見本の幅を測り、それを用いて位置を指定しています。
なので、自動修正するとなると幅や高さなどは個別指定する必要はあると思うのですが、それぞれの項目の印字開始位置は
プログラムで順次計算していく必要があるように思われます)みなさまは、プリンターにより印刷可能領域が異なる点にどのように対応していらっしゃるのでしょうか。
アドバイスいただければ幸いです。
回答
-
PageSettings.PrintableArea の値は使えないのでしょうか?
http://msdn.microsoft.com/ja-jp/library/system.drawing.printing.pagesettings.printablearea.aspxPrintDocument.DefaultPageSettings から参照できます。
えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2010/12 -
>Excelのように、1ページに収まるように印刷というオプションがあれば便利だなと思っているのですが、そんなに都合の
よいものはないのですよね。Graphics のワールド座標をいじれば似たようなことをできると思います。
DpiX DpiY PageScale TransForm あたりですね。
http://msdn.microsoft.com/ja-jp/library/system.drawing.graphics_members(v=VS.90).aspx
えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2010/12
すべての返信
-
PageSettings.PrintableArea の値は使えないのでしょうか?
http://msdn.microsoft.com/ja-jp/library/system.drawing.printing.pagesettings.printablearea.aspxPrintDocument.DefaultPageSettings から参照できます。
えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2010/12 -
>Excelのように、1ページに収まるように印刷というオプションがあれば便利だなと思っているのですが、そんなに都合の
よいものはないのですよね。Graphics のワールド座標をいじれば似たようなことをできると思います。
DpiX DpiY PageScale TransForm あたりですね。
http://msdn.microsoft.com/ja-jp/library/system.drawing.graphics_members(v=VS.90).aspx
えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2010/12