2017-08-25 28 views
0

C#WPFアプリケーションの特殊なプリンタ(BIXOLON SPP-R200III)に印刷しようとしています。定規で測定されるようにし、Windowsの印刷ダイアログボックスに示すように、このプリンタのロール紙の幅は、58ミリメートル次のとおりです。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.047ありません 58ミリメートル期待通り!(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'は空のコレクションですと' printDialog.PrintTicket.PageBorderless'があるとして 'printQueue.DefaultPrintTicket.PageBorderless'は、' null'なのであります。つまり、プリンタはフチ無し印刷をサポートすることはできませんが、実際に境界線が何であるかはわかりません。私の質問はまだ立っています。 – Xharlie

+1

小さな鳥が5mmだと私に伝えます。 –

+0

PageImageableAreaのOriginWidthとOriginHeightを確認します。 – Clemens

関連する問題