using System; using System.Text; using System.Collections.Generic; using System.Drawing; using System.Drawing.Text; using System.Drawing.Drawing2D; using System.ComponentModel; using FastReport.Utils; using FastReport.Format; using FastReport.Code; using System.Windows.Forms; using System.Drawing.Design; namespace FastReport { public partial class TextObject { #if DOTNET_4 /// public override bool IsHaveToConvert(object sender) { if (TextRenderType == TextRenderType.HtmlParagraph) { if (sender is Export.Pdf.PDFExport || sender is Export.OoXML.Word2007Export || sender is Export.Html.HTMLExport || sender is Export.Image.ImageExport) return base.IsHaveToConvert(sender); if (sender is Export.OoXML.Excel2007Export) { return (sender as Export.OoXML.Excel2007Export).Wysiwyg; } return true; } return base.IsHaveToConvert(sender); } /// public override IEnumerable GetConvertedObjects() { SVG.SVGObject svgObject = new SVG.SVGObject(); svgObject.SetReport(Report); svgObject.Assign(this); svgObject.SetParentCore(this.Parent); svgObject.Left = Left; svgObject.Top = Top; RectangleF textRect = new RectangleF(Padding.Left, Padding.Top, Width - Padding.Horizontal, Height - Padding.Vertical); System.Globalization.NumberFormatInfo nf = System.Globalization.CultureInfo.InvariantCulture.NumberFormat; StringBuilder sb = new StringBuilder(); sb.Append(""); using (HtmlTextRenderer htmlTextRenderer = GetHtmlTextRenderer(Report.MeasureGraphics, textRect, 1, 1)) { foreach (HtmlTextRenderer.RectangleFColor rect in htmlTextRenderer.Backgrounds) { if (rect.Color.A > 0) { sb.Append(""); } } foreach (HtmlTextRenderer.Paragraph paragraph in htmlTextRenderer.Paragraphs) { foreach (HtmlTextRenderer.Line line in paragraph.Lines) { foreach (HtmlTextRenderer.Word word in line.Words) { if (word.Type == HtmlTextRenderer.WordType.Normal) foreach (HtmlTextRenderer.Run run in word.Runs) { if (run is HtmlTextRenderer.RunText) { string text = (run as HtmlTextRenderer.RunText).Text; HtmlTextRenderer.StyleDescriptor style = run.Style; float fontSize = style.Size / DrawUtils.ScreenDpiFX; if (style.BaseLine != HtmlTextRenderer.BaseLine.Normal) fontSize *= 0.6f; sb.Append(""); foreach (char ch in text) { switch (ch) { case '"': sb.Append("""); break; case '&': sb.Append("&"); break; case '<': sb.Append("<"); break; case '>': sb.Append(">"); break; case '\t': sb.Append(" "); break; default: sb.Append(ch); break; } } sb.Append(""); } else if (run is HtmlTextRenderer.RunImage) { HtmlTextRenderer.RunImage runImage = run as HtmlTextRenderer.RunImage; if (runImage.Image != null) { using (Bitmap bmp = new Bitmap(runImage.Image.Width, runImage.Image.Height)) { using (Graphics g = Graphics.FromImage(bmp)) { g.DrawImage(runImage.Image, Point.Empty); } using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png); ms.Flush(); sb.Append(""); } } } } } } } } foreach (HtmlTextRenderer.LineFColor line in htmlTextRenderer.Underlines) { sb.Append(""); } foreach (HtmlTextRenderer.LineFColor line in htmlTextRenderer.Stikeouts) { sb.Append(""); } sb.Append(""); svgObject.SetSVGByContent(sb.ToString()); yield return svgObject; } } #endif } }