2017-08-25 28 views
0

我试图从C#WPF应用程序打印到不同寻常的打印机(BIXOLON SPP-R200III)。这台打印机的纸卷宽度58毫米,如用尺子测量和显示在Windows打印对话框:页面宽度与Windows打印对话框中的纸张大小不匹配

Printer Settings for the BIXOLON SPP-R200III

然而,当我尝试连接到这台打印机,并询问其能力通过.NET Framework中的System.Printing API,我获得了不同的纸张宽度。

下面的代码枚举打印队列,并找到正确的一个:

 const string printQueueName = @"BIXOLON SPP-R200III"; 
     PrintServer printServer = new PrintServer(); 
     PrintQueue printQueue = null; 
     PrintQueueCollection printQueues = printServer.GetPrintQueues(); 
     foreach (PrintQueue queue in printQueues) 
     { 
      if (String.Equals(queue.FullName, printQueueName, StringComparison.CurrentCultureIgnoreCase)) 
      { 
       printQueue = queue; 
       break; 
      } 
     } 

此代码询问其功能:

 PrintTicket defaultTicket = printQueue.DefaultPrintTicket; 
     PrintCapabilities printCapabilities = printQueue.GetPrintCapabilities(defaultTicket); 
     double pageWidth = (printCapabilities.OrientedPageMediaWidth.Value/96.0) * 25.4; 

但结果,pageWidth48.04758毫米如预期的那样(PrintCapabilities.OrientedPageMediaWidth是181.59496062992128。)

我也尝试查看默认的打印票结构本身,但printQueue.DefaultPrintTicket.PageMediaSize.Width具有相同的值181.59496062992128。

最后,我想用下面的代码使用System.Windows.Controls.PrintDialog

 PrintDialog printDialog = new PrintDialog(); 
     printDialog.PrintQueue = printQueue; 
     printDialog.ShowDialog(); 

     double pageWidth = (printDialog.PrintTicket.PageMediaSize.Width.Value/96.0) * 25.4; 

而且我得到了相同的结果。

这是为什么?为什么这些宽度不匹配?我是否将点不正确地转换为毫米?我完全误解打印机功能吗?

找到打印机支持的纸张尺寸的正确方法是什么?如问题顶部的屏幕截图所示?

回答

1

因为有所谓的“可拍摄区域”,它总是小于纸张的物理尺寸。 也许,您的打印机无法在纸张的边缘打印。 您可以通过检查PrintCapabilities.PageBorderlessCapability Property来确定。

请参阅此链接:https://msdn.microsoft.com/en-us/library/system.printing.printcapabilities.pageborderlesscapability(v=vs.110).aspx

大多数激光和喷墨打印机不支持无边距打印。他们必须允许未打印的边距,以防止碳粉进入打印机移动纸张的部件。但是,许多照片打印机确实支持无边距打印。 如果打印机不支持无边距打印,则该集合为空。

+0

我没有想到这一点,但是'PrintCapabilities.PageBorderlessCapability'是一个空的收集和'printQueue.DefaultPrintTicket.PageBorderless'是'null',因为是'printDialog.PrintTicket.PageBorderless'。这意味着打印机不能支持无边界打印,但它不会显示边界实际是什么。我的问题依然存在。 – Xharlie

+1

有点小鸟告诉我它是5毫米。 –

+0

检查PageImageableArea的OriginWidth和OriginHeight。 – Clemens

相关问题