private void RenderPrintView(object printView) { PrintElementMetadataMap elementMetadataMap = null; FrameworkFlowDocument printViewDocument = null; if (printView != null) { try { elementMetadataMap = new PrintElementMetadataMap(); var printViewDocumentModel = PrintViewFactory.Create(printView, null, elementMetadataMap); printViewDocument = FlowDocumentBuilder.Build(printViewDocumentModel, elementMetadataMap); } catch (Exception error) { elementMetadataMap = null; printViewDocument = CreateDocumentByError(error); } } _elementMetadataMap = elementMetadataMap; Editor.Document = printViewDocument; }
/// <summary> /// Создает файл печатного представления. /// </summary> /// <param name="printView">Шаблон печатного представления.</param> /// <param name="printViewSource">Данные печатного представления.</param> /// <param name="printViewFileFormat">Формат файла печатного представления.</param> /// <exception cref="ArgumentNullException"></exception> /// <returns>Файл печатного представления.</returns> public byte[] BuildFile(object printView, object printViewSource, PrintViewFileFormat printViewFileFormat = PrintViewFileFormat.Pdf) { if (printView == null) { throw new ArgumentNullException("printView"); } // Текущая реализация на базе WPF требует STA-поток return(ExecuteInStaThread(() => { // Формирование документа печатного представления var document = _printViewFactory.Create(printView, printViewSource); if (document != null) { // Сохранение документа печатного представления в указанном формате using (var documentStream = new MemoryStream()) { _printViewConverter.Convert(document, documentStream, printViewFileFormat); documentStream.Flush(); return documentStream.ToArray(); } } return null; })); }