2017-08-25 129 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