/// <summary> /// Inserts a new Component in the container /// </summary> /// <param name="container"></param> /// <param name="index"></param> /// <param name="ele"></param> private void InsertComponentInContainer(IPDFContainerComponent container, int index, IPDFComponent ele, PDFInitContext init, PDFLoadContext load) { ele.Init(init); IPDFComponentList list = container.Content as IPDFComponentList; list.Insert(index, ele); _addedonbind.Add(ele); ele.Load(load); }
protected virtual void ParseHtmlContents(string source, string html, IPDFContainerComponent container, int insertIndex) { HTMLParserSettings settings = GetParserSettings(); if (this.Format == HtmlFormatType.Markdown) { Markdown md = new Markdown(); html = md.Transform(html); } HTMLParser parser = new HTMLParser(html, settings); Stack <IPDFComponent> route = new Stack <IPDFComponent>(); IPDFComponentList contents = container.Content; //int codeDepth = 0; foreach (Scryber.Html.Parsing.HTMLParserResult result in parser) { if (result.Valid && null != result.Parsed) { IPDFComponent parsed = result.Parsed; if (result.IsEnd) { route.Pop(); } else { if (route.Count == 0) { _added.Add(parsed); contents.Insert(insertIndex, parsed); insertIndex++; if (parsed is IPDFLoadableComponent) { ((IPDFLoadableComponent)parsed).LoadedSource = source; } } else { IPDFContainerComponent parent = (IPDFContainerComponent)route.Peek(); ((IPDFComponentList)parent.Content).Add(parsed); } route.Push(result.Parsed); } } } }
public void InstantiateTemplate(IPDFTemplate template, PDFLayoutContext context, PDFRect available, int pageindex) { if (null == template) { throw new ArgumentNullException("template"); } if (null == context) { throw new ArgumentNullException("context"); } List <IPDFComponent> generated = new List <IPDFComponent>(template.Instantiate(GeneratedCount, this)); if (generated.Count == 0) { return; } PDFInitContext init = new PDFInitContext(context.Items, context.TraceLog, context.PerformanceMonitor, this.Document) { Compression = context.Compression, OutputFormat = context.OutputFormat, Conformance = context.Conformance }; PDFLoadContext load = new PDFLoadContext(context.Items, context.TraceLog, context.PerformanceMonitor, this.Document) { Compression = context.Compression, OutputFormat = context.OutputFormat, Conformance = context.Conformance }; PDFDataContext data = new PDFDataContext(context.Items, context.TraceLog, context.PerformanceMonitor, this.Document) { Compression = context.Compression, OutputFormat = context.OutputFormat, Conformance = context.Conformance }; IPDFContainerComponent container = this; IPDFComponentList components = container.Content as IPDFComponentList; for (int index = 0; index < generated.Count; index++) { IPDFComponent comp = generated[index]; components.Insert(index, comp); comp.Init(init); } foreach (IPDFComponent comp in generated) { comp.Load(load); } foreach (IPDFComponent comp in generated) { if (comp is IPDFBindableComponent) { (comp as IPDFBindableComponent).DataBind(data); } } this.GeneratedCount++; }