実現したいこと
WPF で印刷時にプレビュー表示させています。
そこまではできているのですが、以下のコードでは印刷プリンタを設定しているのにプレビュー表示から印刷ボタンで印刷すると「通常使うプリンタ」が選択されているようで正しく動作していません。
通常使うプリンタ → トレイ
プレビュー表示の設定 → 手差し
としてもトレイから印刷される。
発生している問題・エラーメッセージ
エラーなどのメッセージはなく、想定通りの動作をしない!
想定とは、指定したプリンタの違うトレイや手差しから出てしまう。
(通常使うプリンタが有効のままのよう)
該当のソースコード
C#
1 public static void DoPrint(IEnumerable<System.Windows.Controls.Page> pages)2 {3 try 4 {5 FixedDocument doc = new FixedDocument();6 foreach (System.Windows.Controls.Page p in pages)7 {8 FixedPage fp = CreateFixedPage(p, 1);9 PageContent pc = new PageContent();10 pc.Child = fp;11 doc.Pages.Add(pc);12 }13 14 DocumentViewer viewer = new DocumentViewer 15 {16 Document = doc 17 };18 viewer.CommandBindings.Add(new CommandBinding(ApplicationCommands.Print, PrintExecute));19 preView = new Window()20 {21 Title = "xxxxxxxx 印刷",22 WindowStartupLocation = WindowStartupLocation.CenterScreen,23 Content = viewer,24 };25 preView.ShowDialog();26 27 28 29 private static void PrintExecute(object sender, ExecutedRoutedEventArgs e)30 {31 e.Handled = true;32 PrintDialog dlg = new PrintDialog();33 34 // 用紙向き(縦)35 dlg.PrintTicket.PageOrientation = System.Printing.PageOrientation.Portrait; // ;Landscape36 // 用紙サイズ37 dlg.PrintTicket.PageMediaSize = PageMediaSize;38 // カラーモード39 dlg.PrintTicket.OutputColor = OutputColor;40 // 印刷部数(同じものがもう一部必要)41 dlg.PrintTicket.CopyCount = CopyCount;42 // Create a local print server43 LocalPrintServer ps = new LocalPrintServer();44 dlg.PrintQueue = ps.GetPrintQueue(printerMei);45 46 System.Windows.Xps.XpsDocumentWriter xpsdw = PrintQueue.CreateXpsDocumentWriter(dlg.PrintQueue);47 FixedDocument doc = (FixedDocument)((DocumentViewer)sender).Document;48 doc.PrintTicket = dlg.PrintTicket;49 xpsdw.Write(doc, dlg.PrintTicket);50 51 preView.Close();52 }
補足情報(FW/ツールのバージョンなど)
Windows11 VS2019 WPF C#

0 コメント