/// <summary> /// Resolves a node with a /// <see cref="PageContextProperties"/> /// instance as result. /// </summary> /// <param name="rootNode">the root node to resolve</param> /// <param name="cssResolver">the CSS resolver</param> /// <param name="context">the CSS context</param> /// <param name="pageClasses">the page classes</param> /// <returns> /// the /// <see cref="PageContextProperties"/> /// for a specific node /// </returns> public static iText.Html2pdf.Attach.Impl.Layout.PageContextProperties Resolve(INode rootNode, ICssResolver cssResolver, CssContext context, params String[] pageClasses) { PageContextNode pageProps = GetResolvedPageClassNode(rootNode, cssResolver, context, pageClasses); IList <PageMarginBoxContextNode> pagesMarginBoxes = GetResolvedMarginBoxes(pageProps, cssResolver, context); return(new iText.Html2pdf.Attach.Impl.Layout.PageContextProperties(pageProps, pagesMarginBoxes)); }
/// <summary>Gets the resolved page class node.</summary> /// <param name="rootNode">the root node</param> /// <param name="cssResolver">the CSS resolver</param> /// <param name="context">the CSS context</param> /// <param name="pageClasses">the page classes</param> /// <returns>the resolved page class node</returns> private static PageContextNode GetResolvedPageClassNode(INode rootNode, ICssResolver cssResolver, CssContext context, params String[] pageClasses) { PageContextNode pagesClassNode = new PageContextNode(rootNode); foreach (String pageClass in pageClasses) { pagesClassNode.AddPageClass(pageClass); } IDictionary <String, String> pageClassStyles = cssResolver.ResolveStyles(pagesClassNode, context); pagesClassNode.SetStyles(pageClassStyles); return(pagesClassNode); }
/// <summary>Gets the resolved margin boxes.</summary> /// <param name="pageClassNode">the page contex node</param> /// <param name="cssResolver">the CSS resolver</param> /// <param name="context">the CSS context</param> /// <returns>the resolved margin boxes</returns> private static IList <PageMarginBoxContextNode> GetResolvedMarginBoxes(PageContextNode pageClassNode, ICssResolver cssResolver, CssContext context) { IList <PageMarginBoxContextNode> resolvedMarginBoxes = new List <PageMarginBoxContextNode>(); foreach (String pageMarginBoxName in pageMarginBoxNames) { PageMarginBoxContextNode marginBoxNode = new PageMarginBoxContextNode(pageClassNode, pageMarginBoxName); IDictionary <String, String> marginBoxStyles = cssResolver.ResolveStyles(marginBoxNode, context); if (!marginBoxNode.ChildNodes().IsEmpty()) { marginBoxNode.SetStyles(marginBoxStyles); resolvedMarginBoxes.Add(marginBoxNode); } context.SetQuotesDepth(0); } return(resolvedMarginBoxes); }
/// <summary> /// Instantiates a new /// <see cref="PageContextProperties"/> /// instance. /// </summary> /// <param name="pageProps">the page context node</param> /// <param name="pagesMarginBoxes">the page margin boxes</param> private PageContextProperties(PageContextNode pageProps, IList <PageMarginBoxContextNode> pagesMarginBoxes) { this.pageContextNode = pageProps; this.pageMarginBoxes = pagesMarginBoxes; }