2013-03-15 238 views
5

我正在向冲击打印机进行打印,该打印机装有8.5 x 8.5英寸的纸张。当我打印时,打印机弹出11英寸而不是8.5英寸。将自定义纸张尺寸打印到WPF中的冲击打印机

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); 

使用“How do I convert Twips to Pixels in .NET?”我已经确定,8.5英寸是816个像素,这是我的element.Widthelement.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中打印机的高级设置时看到的列表相同。

回答

2

请找到下面的代码,它设置为所需的纸张尺寸

 var printerSettings = new PrinterSettings(); 
     var labelPaperSize = new PaperSize { RawKind = (int)PaperKind.A6, Height = 148, Width = 105 }; 
     printerSettings.DefaultPageSettings.PaperSize = labelPaperSize; 
     var labelPaperSource = new PaperSource { RawKind = (int)PaperSourceKind.Manual }; 
     printerSettings.DefaultPageSettings.PaperSource = labelPaperSource; 
     if (printerSettings.CanDuplex) 
     { 
      printerSettings.Duplex = Duplex.Default; 
     } 
相关问题