コード例 #1
0
        /// <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;
            }));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
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));
            }
        }
コード例 #5
0
 public bool CanConvert(PrintViewFileFormat printViewFileFormat)
 {
     return(_documentConverters.ContainsKey(printViewFileFormat));
 }
コード例 #6
0
        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);
        }