J'utilise le code suivant dans mon projet. La boîte de dialogue d'impression s'affiche, mais elle imprime toujours sur l'imprimante par défaut, quelle que soit la sélection de l'utilisateur. J'ai lu des sujets similaires mais aucun d'entre eux ne semble utiliser le SerializerWriterCollator. Quel est le problème ?
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();
}
}