создать printbatch для печати многократных потоковых документов - PullRequest
1 голос
/ 25 июня 2009

Как напечатать многократные flowdocumets в пакете? Следующий код должен печатать разные документы, но печатать одинаково. Этот пример работает довольно хорошо, только если вы печатаете на принтере xps.

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);
    }
  }

1 Ответ

1 голос
/ 27 июня 2009

Это проблемы с многопоточностью. После назначения DataContext убедитесь, что поток обрабатывает свою очередь ожидания:

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