/// <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; })); }
private static void OpenResultFile(byte[] file, PrintViewFileFormat printViewFileFormat) { var fileName = "PrintView." + printViewFileFormat; using (var writer = File.Create(fileName)) { writer.Write(file, 0, file.Length); writer.Flush(); writer.Close(); } Process.Start(fileName); }
public void ShouldBuildFile(PrintViewFileFormat printViewFileFormat) { // Given var target = new FlowDocumentPrintViewBuilder(new FlowDocumentPrintViewFactory(), new FlowDocumentPrintViewConverter(PrintViewSettings.Default)); var printView = CreateTestPrintView(); // When byte[] result = target.BuildFile(printView, null, printViewFileFormat); // Then Assert.IsNotNull(result); Assert.Greater(result.Length, 0); }
public void Convert(PrintViewDocument printView, Stream printViewStream, PrintViewFileFormat printViewFileFormat) { IFlowDocumentConverter documentConverter; if (_documentConverters.TryGetValue(printViewFileFormat, out documentConverter)) { documentConverter.Convert(printView, printViewStream); } else { throw new NotSupportedException(string.Format(Resources.PrintViewFileFormatIsNotSupported, printViewFileFormat)); } }
public bool CanConvert(PrintViewFileFormat printViewFileFormat) { return(_documentConverters.ContainsKey(printViewFileFormat)); }
public byte[] Build(string documentType, string printViewName, object printViewSource, PrintViewFileFormat priiViewFormat = PrintViewFileFormat.Pdf) { if (string.IsNullOrEmpty(documentType)) { throw new ArgumentNullException(nameof(documentType)); } if (string.IsNullOrEmpty(printViewName)) { throw new ArgumentNullException(nameof(printViewName)); } //Build view name var printViewMetadata = _metadataApi.GetMetadata($"PrintViews.{documentType}.{printViewName}"); if (printViewMetadata == null) { throw new ArgumentException($"Print view '{documentType}/{printViewName}' not found."); } var printViewData = _printViewBuilder.BuildFile(printViewMetadata, printViewSource, priiViewFormat); return(printViewData); }