Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
 /// <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;
 }