2009-06-25 4 views
1

Comment imprimer multiplier flowdocumets dans un lot? Le code suivant devrait imprimer différents documents, mais imprimer la même chose. Cet exemple fonctionne très bien uniquement si vous imprimez sur l'imprimante xps.créer printbatch pour imprimer multiplier flowdocuments

var printDialog = new PrintDialog(); 
if(printDialog.ShowDialog() == true) {  
    var xpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(printDialog.PrintQueue); 

    foreach(var person in persons) { 
    var doc = Application.LoadComponent(new Uri("Template.xaml", UriKind.Relative)) as FlowDocument; 
     doc.DataContext = persons; 
     var paginator = ((IDocumentPaginatorSource)doc).DocumentPaginator;   
     xpsDocumentWriter.Write(paginator); 
    } 
    } 

Répondre

1

Ce sont des problèmes de threading. Après avoir affecté le DataContext, assurez-vous que le thread traite sa file d'attente:

Dispatcher.CurrentDispatcher.Invoke(
     DispatcherPriority.SystemIdle, new DispatcherOperationCallback(_ => null), null);