8.5 x 8.5インチの用紙をセットしたインパクト プリンターで印刷しています。印刷すると、プリンターは 8.5 インチではなく 11 インチを排出します。
PageMediaSize pageSize = new PageMediaSize(PageMediaSizeName.Unknown, element.Width, element.Height);
PrintDialog dialog = new PrintDialog();
dialog.PrintTicket.PageMediaSize = pageSize;
Console.WriteLine(dialog.PrintableAreaHeight); // 816, good!
dialog.PrintQueue = myQueue; // selected from a combobox
Console.WriteLine(dialog.PrintableAreaHeight); // 1056 :(
dialog.PrintVisual(element, description);
「.NET で Twips をピクセルに変換するにはどうすればよいですか?」を使用して、8.5 インチは 816 ピクセルであると判断しましelement.Width
たelement.Height
。新しい を設定してPageMediaSize
いますが、これは効果がないようdialog.PrintableAreaHeight
です。ダイアログでキューを設定すると、まだ 1056 になります。
その場合はdialog.ShowDialog()
、プリンターを手動で選択し、プリンターの詳細設定で [用紙サイズ] を手動で見つけて変更すると、dialog.PrintableAreaHeight
変更が適切に反映されます。
このページhttp://go4answers.webhost4life.com/Example/set-printdialogs-default-page-size-168976.aspxPageMediaSize
は、自分のプリンターでサポートされているもののみを設定できることを示唆しています。GetPrintCapabilities
my で関数を使用するPrintQueue
と、10 個ほどのページ サイズのリストが表示されますが、8.5 x 8.5 のものはありません。これは、Windows でプリンターの詳細設定に移動したときに表示されるリストと同じです。