我正在使用一台冲击式打印机,装有8.5 x 8.5英寸的纸张。当我打印时,打印机会弹出11英寸而不是8.5英寸。
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.aspx建议我只能设置打印机支持的PageMediaSize
。通过在我的PrintQueue
上使用GetPrintCapabilities
函数,我看到了一个包含10个左右页面大小的列表,其中没有8.5 x 8.5。这与我在Windows中进入打印机的高级设置时看到的列表相同。