1
我在我的項目中使用下面的代碼。打印對話框顯示,但始終在默認打印機上打印,無論用戶選擇何種方式。我讀過類似的主題,但他們都沒有使用SerializerWriterCollator。問題是什麼?C#WPF Paginator打印機忽略用戶的打印機選擇
PrintQueue printQueue = LocalPrintServer.GetDefaultPrintQueue();
XpsDocumentWriter xpsWriter = PrintQueue.CreateXpsDocumentWriter(printQueue);
SerializerWriterCollator batchPrinter = xpsWriter.CreateVisualsCollator();
var printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
PrintTicket ticket = printDialog.PrintTicket;
ticket.PageOrientation = PageOrientation.Landscape;
var paginator1 = new PagePrinter(winchFlightsCount,
new Size(printDialog.PrintableAreaWidth,
printDialog.PrintableAreaHeight), winchFlights);
var paginator2 = new PagePrinter(tugFlightCount,
new Size(printDialog.PrintableAreaWidth,
printDialog.PrintableAreaHeight), tugFlights);
var paginator3 = new PagePrinter(selfFlightCount,
new Size(printDialog.PrintableAreaWidth,
printDialog.PrintableAreaHeight), selfFlights);
batchPrinter.BeginBatchWrite();
for (int i = 0; i < paginator1.PageCount; i++)
{
batchPrinter.Write(paginator1.GetPage(i).Visual, ticket);
}
for (int i = 0; i < paginator2.PageCount; i++)
{
batchPrinter.Write(paginator2.GetPage(i).Visual, ticket);
}
for (int i = 0; i < paginator3.PageCount; i++)
{
batchPrinter.Write(paginator3.GetPage(i).Visual, ticket);
}
batchPrinter.EndBatchWrite();
}
}
非常感謝!我替換了printDialog.DefaultPrinter;與printDialog.PrintQueue ;.除此之外,它的工作! – Anders 2010-06-01 16:29:53
@安德斯,謝謝你指出,你是對的。我輸入了錯誤的東西,所以我編輯了我的帖子,以防其他人遇到此頁面。 – Oliver 2010-06-02 17:46:49