Esempio n. 1
0
        public override void Build(HtmlBuilderContext context, PrintElementLine element, TextWriter result)
        {
            result.Write("<hr style=\"");

            result.ApplyBaseStyles(element);
            result.ApplyBlockStyles(element);

            result.Write("\">");

            result.Write("</hr>");
        }
Esempio n. 2
0
        public override void Build(HtmlBuilderContext context, PrintElementList element, TextWriter result)
        {
            result.Write("<div style=\"");

            result.ApplyBaseStyles(element);
            result.ApplyBlockStyles(element);

            result.Write("\">");

            if (IsUnorderedList(element))
            {
                result.Write("<ul style=\"");
            }
            else
            {
                result.Write("<ol start=\"");
                if (element.StartIndex != null)
                {
                    result.Write(element.StartIndex);
                }
                result.Write("\" style=\"");
            }

            result.ApplyListStyles(element);

            result.Write("\">");

            result.ApplySubOrSup(element);

            foreach (var item in element.Items)
            {
                result.Write("<li style=\"");

                result.Write("padding-left:");
                result.WriteInvariant(element.MarkerOffsetSize);
                result.Write("px;");

                result.Write("\">");

                context.Build(item, result);

                result.Write("</li>");
            }

            result.ApplySubOrSupSlash(element);

            result.Write(IsUnorderedList(element) ? "</ul>" : "</ol>");

            result.Write("</div>");
        }
        public override void Build(HtmlBuilderContext context, PrintElementImage element, TextWriter result)
        {
            result.Write("<img src=\"data:image/png;base64,");
            result.StreamToBase64(element.Source);

            result.Write("\" style=\"");

            result.ApplyBaseStyles(element);
            result.ApplyInlineStyles(element);
            result.ApplyImageStyles(element);

            result.Write("\">");

            result.Write("</img>");
        }
        public override void Build(HtmlBuilderContext context, PrintElementRun element, TextWriter result)
        {
            result.Write("<span style=\"");

            result.ApplyBaseStyles(element);
            result.ApplyInlineStyles(element);

            result.Write("\">");

            result.ApplySubOrSup(element);

            result.Write(element.Text);

            result.ApplySubOrSupSlash(element);

            result.Write("</span>");
        }
Esempio n. 5
0
        public override void Build(HtmlBuilderContext context, PrintElementItalic element, TextWriter result)
        {
            result.Write("<i style=\"");
            result.ApplyBaseStyles(element);
            result.ApplyInlineStyles(element);
            result.Write("\">");

            result.ApplySubOrSup(element);

            foreach (var item in element.Inlines)
            {
                context.Build(item, result);
            }

            result.ApplySubOrSupSlash(element);

            result.Write("</i>");
        }
        public override void Build(HtmlBuilderContext context, PrintElementHyperlink element, TextWriter result)
        {
            result.Write("<a href=\"");
            result.Write(element.Reference);
            result.Write("\" style=\"");
            result.ApplyBaseStyles(element);
            result.ApplyInlineStyles(element);
            result.Write("\">");

            result.ApplySubOrSup(element);

            foreach (var item in element.Inlines)
            {
                context.Build(item, result);
            }

            result.ApplySubOrSupSlash(element);

            result.Write("</a>");
        }
Esempio n. 7
0
        public override void Build(HtmlBuilderContext context, PrintElementSection element, TextWriter result)
        {
            result.Write("<div style=\"");

            result.ApplyBaseStyles(element);
            result.ApplyBlockStyles(element);

            result.Write("\">");

            result.ApplySubOrSup(element);

            foreach (var item in element.Blocks)
            {
                context.Build(item, result);
            }

            result.ApplySubOrSupSlash(element);

            result.Write("</div>");
        }
Esempio n. 8
0
        public override void Build(HtmlBuilderContext context, PrintElementParagraph element, TextWriter result)
        {
            result.Write("<p style=\"");

            result.ApplyBaseStyles(element);
            result.ApplyBlockStyles(element);
            result.ApplyParagraphStyles(element);

            result.Write("\">");

            result.ApplySubOrSup(element);

            foreach (var item in element.Inlines)
            {
                context.Build(item, result);
            }

            result.ApplySubOrSupSlash(element);

            result.Write("</p>");
        }
Esempio n. 9
0
        public override void Build(HtmlBuilderContext context, PrintViewDocument element, TextWriter result)
        {
            result.Write("<!DOCTYPE html><html><head><style>*{margin:0;padding:0;}</style></head><body style=\"");

            result.Write("padding-top:");
            result.WriteInvariant(element.PagePadding.Top);
            result.Write("px;");

            result.Write("padding-right:");
            result.WriteInvariant(element.PagePadding.Right);
            result.Write("px;");

            result.Write("padding-bottom:");
            result.WriteInvariant(element.PagePadding.Bottom);
            result.Write("px;");

            result.Write("padding-left:");
            result.WriteInvariant(element.PagePadding.Left);
            result.Write("px;");

            if (element.PageSize != null && element.PageSize.Width != null)
            {
                result.Write("width:");
                result.WriteInvariant(element.PageSize.Width - element.PagePadding.Left - element.PagePadding.Right);
                result.Write("px;");
            }

            result.ApplyBaseStyles(element);

            result.Write("\">");

            foreach (var item in element.Blocks)
            {
                context.Build(item, result);
            }

            result.Write("</body></html>");
        }
Esempio n. 10
0
        public override void Build(HtmlBuilderContext context, PrintElementTable element, TextWriter result)
        {
            result.Write("<table style=\"");

            result.ApplyBaseStyles(element);
            result.ApplyBlockStyles(element);

            result.Write("border-collapse:collapse;");

            result.Write("\">");

            result.ApplySubOrSup(element);

            foreach (var column in element.Columns)
            {
                result.Write("<col width=\"");

                if (column.Size != null)
                {
                    result.WriteInvariant(column.Size);
                    result.Write("px");
                }

                result.Write("\">");
            }

            foreach (var row in element.Rows)
            {
                result.Write("<tr style=\"");

                result.ApplyRowStyles(row);

                result.Write("border-collapse:collapse;");

                result.Write("\">");

                foreach (var cell in row.Cells)
                {
                    result.Write("<td ");

                    result.ApplyCellProperties(cell);

                    result.Write("style=\"");

                    result.ApplyCellStyles(cell);

                    result.Write("border-collapse:collapse;");

                    //По умолчанию содержимое ячейки выравнивается по верхрнему краю
                    result.Write("vertical-align:top;");

                    //max width and overflow

                    var cellIndex = row.Cells.IndexOf(cell);

                    result.Write("max-width:");

                    if (element.Columns[cellIndex].Size != null)
                    {
                        result.WriteInvariant(element.Columns[cellIndex].Size);
                    }

                    result.Write("px;");
                    result.Write("overflow:hidden;");

                    result.Write("\">");

                    if (cell != null)
                    {
                        context.Build(cell.Block, result);
                    }

                    result.Write("</td>");
                }

                result.Write("</tr>");
            }

            result.ApplySubOrSupSlash(element);

            result.Write("</table>");
        }