public void Convert(PrintViewDocument document, Stream documentStream) { using (var writer = new StreamWriter(documentStream, Encoding.UTF8, DefaultBufferSize, true)) { Builder.Build(document, writer); } }
private static void ApplyPageSize(PrintViewDocument element, dynamic pageSize) { // По умолчанию размер страницы A4 const double pageWidthA4 = 21.0 * SizeUnits.Cm; const double pageHeightA4 = 29.7 * SizeUnits.Cm; var pageWidth = pageWidthA4; var pageHeight = pageHeightA4; if (pageSize != null) { if (!BuildHelper.TryToSizeInPixels(pageSize.Width, pageSize.SizeUnit, out pageWidth)) { pageWidth = pageWidthA4; } if (!BuildHelper.TryToSizeInPixels(pageSize.Height, pageSize.SizeUnit, out pageHeight)) { pageHeight = pageHeightA4; } } element.PageSize = new PrintElementSize { Width = pageWidth, Height = pageHeight }; }
private static double CalcContentWidth(PrintViewDocument element) { return(Math.Max((double)element.PageSize.Width - (double)element.PagePadding.Left - (double)element.PagePadding.Right, 0)); }
public void Convert(PrintViewDocument document, Stream documentStream) { var saveSize = document.PageSize; var savePadding = document.PagePadding; document.PagePadding = default(PrintElementThickness); document.PageSize = null; try { using (var htmlStream = new MemoryStream()) { _htmlConverter.Convert(document, htmlStream); htmlStream.Position = 0; _htmlToPdfUtil.Convert(saveSize, savePadding, htmlStream, documentStream); } } finally { document.PageSize = saveSize; document.PagePadding = savePadding; } }
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)); } }
private static void ApplyPagePadding(PrintViewDocument element, dynamic pagePadding) { // По умолчанию отступ на странице 1см const double pagePadding1Cm = 1.0 * SizeUnits.Cm; PrintElementThickness pagePaddingThickness; if (!BuildHelper.TryToThickness(pagePadding, out pagePaddingThickness)) { pagePaddingThickness = new PrintElementThickness(pagePadding1Cm); } element.PagePadding = pagePaddingThickness; }
public object Create(PrintElementBuildContext buildContext, dynamic elementMetadata) { var element = new PrintViewDocument { Font = new PrintElementFont { Family = BuildHelper.DefautlFontFamily } }; // Установка стилей печатного представления ApplyPrintViewStyles(buildContext, elementMetadata.Styles); // Установка общих свойств печатного представления BuildHelper.ApplyTextProperties(element, buildContext.ElementStyle); BuildHelper.ApplyTextProperties(element, elementMetadata); // Настройка размеров страницы печатного представления ApplyPageSize(element, elementMetadata.PageSize); ApplyPagePadding(element, elementMetadata.PagePadding); // Настройка размеров колонки печатного представления var contentWidth = CalcContentWidth(element); // Генерация содержимого печатного представления var contentContext = buildContext.Create(contentWidth); var blocks = buildContext.ElementBuilder.BuildElements(contentContext, elementMetadata.Blocks); if (blocks != null) { foreach (var block in blocks) { element.Blocks.Add(block); } } BuildHelper.PostApplyTextProperties(element, buildContext.ElementStyle); BuildHelper.PostApplyTextProperties(element, elementMetadata); return(element); }
public static System.Windows.Documents.FlowDocument Build(PrintViewDocument innerDocument, PrintElementMetadataMap elementMetadataMap) { return((System.Windows.Documents.FlowDocument)Context.Build(innerDocument, elementMetadataMap)); }
public void ShouldBuildDocumentWithContents() { //Given var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext(); var element = new PrintViewDocument(); var result = new TextWriterWrapper(); var image0 = new PrintElementImage(_getStream(Resources.ImageRotate0)); var image90 = new PrintElementImage(_getStream(Resources.ImageRotate90)); var image180 = new PrintElementImage(_getStream(Resources.ImageRotate180)); var image270 = new PrintElementImage(_getStream(Resources.ImageRotate270)); image0.Size = new PrintElementSize { Height = 50, Width = 150 }; image90.Size = new PrintElementSize { Height = 150, Width = 50 }; image180.Size = new PrintElementSize { Height = 50, Width = 150 }; image270.Size = new PrintElementSize { Height = 150, Width = 50 }; var par1 = new PrintElementParagraph(); par1.Inlines.Add(image0); par1.Inlines.Add(image90); par1.Inlines.Add(image180); par1.Inlines.Add(image270); var runNormal = new PrintElementRun { Text = "Normal" }; var runSubscript = new PrintElementRun { Text = "Subscript", Font = new PrintElementFont { Variant = PrintElementFontVariant.Subscript } }; var runSuperscript = new PrintElementRun { Text = "Superscript", Font = new PrintElementFont { Variant = PrintElementFontVariant.Superscript } }; var par2 = new PrintElementParagraph(); par2.Inlines.Add(runNormal); par2.Inlines.Add(runSubscript); par2.Inlines.Add(runSuperscript); var run = new PrintElementRun { Text = "White Foreground & Black Background" }; var par3 = new PrintElementParagraph(); par3.Foreground = "white"; par3.Background = "black"; par3.Inlines.Add(run); element.Blocks.Add(par1); element.Blocks.Add(par2); element.Blocks.Add(new PrintElementPageBreak()); element.Blocks.Add(par3); element.PagePadding = new PrintElementThickness(100); //When context.Build(element, result.Writer); //Then Assert.AreEqual(Resources.ResultTestShouldBuildDocumentWithContents, result.GetText()); }
public static void ApplyDocumentStyles(System.Windows.Documents.FlowDocument document, PrintViewDocument element) { var pagePadding = new Thickness( element.PagePadding.Left, element.PagePadding.Top, element.PagePadding.Right, element.PagePadding.Bottom); if (element.PageSize != null) { if (element.PageSize.Width != null) { document.PageWidth = element.PageSize.Width.Value - pagePadding.Left - pagePadding.Right + 10 /* RichTextBox Default Padding */; } if (element.PageSize.Height != null) { document.PageHeight = element.PageSize.Height.Value; } } }