C#WPFアプリケーションの特殊なプリンタ(BIXOLON SPP-R200III)に印刷しようとしています。定規で測定されるようにし、Windowsの印刷ダイアログボックスに示すように、このプリンタのロール紙の幅は、58ミリメートル次のとおりです。Windows印刷ダイアログボックスでページ幅が用紙サイズと一致しません
、私はこのプリンタに接続し、その機能を調べるためにしてみてください.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;
しかしその結果、pageWidth
は48.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;
と私は同じ結果を得ました。
これはなぜですか?なぜこれらの幅が一致しないのですか?ドットからミリメートルへの変換が間違っていますか?プリンタ機能を完全に誤解していますか?
この質問の上部にあるスクリーンショットに表示されているように、プリンタでサポートされている用紙サイズを見つける正しい方法は何ですか?
私はそのことについて考えていたが、 'PrintCapabilities.PageBorderlessCapability'は空のコレクションですと' printDialog.PrintTicket.PageBorderless'があるとして 'printQueue.DefaultPrintTicket.PageBorderless'は、' null'なのであります。つまり、プリンタはフチ無し印刷をサポートすることはできませんが、実際に境界線が何であるかはわかりません。私の質問はまだ立っています。 – Xharlie
小さな鳥が5mmだと私に伝えます。 –
PageImageableAreaのOriginWidthとOriginHeightを確認します。 – Clemens