■83247 / inTopicNo.7) |
Re[3]: PrintPreviewControl の表示方法について |
□投稿者/ 魔界の仮面弁士 (1185回)-(2017/03/14(Tue) 19:30:33)
|
■No83245 (夜叉丸 さん) に返信 > OriginAtMargins を trueにしてみましたが何も変化がないように思います。
あれ。余白サイズや用紙サイズが変わるわけでは無いですが、 e.Graphics.ResetTransform() しないかぎり、 原点座標がずれたままになったような…。
そもそも、pdoc.DefaultPageSettings.Margins や QueryPageSettings イベントの e.PageSettings.Margins では 余白サイズを幾つに指定しているのでしょうか。
> 実際に印刷されるのが 58x100だったとしても表示が58x297の縦長で表示されるのを > プレビュー画面の用紙サイズを58x100のサイズで表示したいのです。
pdoc.DefaultPageSettings.PaperSize = new PaperSize("任意の名前", 228, 394); ppc.InvalidatePreview();
ということではなく?
> このプリンターにはありませんでした。 コントロールパネルの[デバイスとプリンター]あたりを参照していると思いますが、 用紙設定を追加するのは、『プリンターのプロパティ』ダイアログではなく、 『プリント サーバーのプロパティ』ダイアログの方ですよ。 http://www.nsgd.co.jp/nsd/NSDGoods/mswin_tl/TA12DK5/W8_Cp4.JPG
コントロールパネルで用紙名を事前定義しているのなら、new PaperSize せずとも TM-m10 なら PaperSizes の一覧で返されます。どちらが良いのかはケースバイケースですが。
■No83243 (夜叉丸 さん) に返信 > A4, LT, ハガキの設定値は読み込めますが、プリンター自体10cmの立方体なので > 給紙することはできませんし、設定しなくてもRollに印刷できてました。
その点については、ドライバ設定次第ですね。
デフォルトでは、用紙サイズ "Roll Paper 58 x 297 mm" が既定の用紙として設定されているはず。 プリンタードライバーの[レイアウト]-[詳細設定]ボタンあたりで確認できるかと。
> その後とりあえず、以下のコードを呼び出し、戻り値も True を確認しています。 > pdoc.SetPaperSize("Roll Paper 58 x 297 mm");
"SetPaperSize" という名前のメソッドは、PrintDocument どころか .NET Framework の他のクラスにも見当たらないですね。
https://referencesource.microsoft.com/#q=SetPaperSize https://social.msdn.microsoft.com/Search/ja-JP?query=SetPaperSize
もしかして拡張メソッドでしょうか?
using System.Drawing.Printing; using System.Linq;
public static class PrintDocumentExtensions { public static bool SetPaperSize(this PrintDocument pdoc, string paperName) { PaperSize p = pdoc.PrinterSettings.PaperSizes.OfType<PaperSize>().FirstOrDefault(_ => _.PaperName == paperName); if (p != null) { pdoc.DefaultPageSettings.PaperSize = p; return p == pdoc.DefaultPageSettings.PaperSize; } return false; } }
|
|