Ejemplo n.º 1
0
        private void Test(String fileName, String elementPath, params String[] expectedStyles)
        {
            String        filePath    = sourceFolder + fileName;
            IXmlParser    parser      = new JsoupHtmlParser();
            IDocumentNode document    = parser.Parse(new FileStream(filePath, FileMode.Open, FileAccess.Read), "UTF-8");
            ICssResolver  cssResolver = new DefaultCssResolver(document, MediaDeviceDescription.CreateDefault(), new ResourceResolver
                                                                   (""));
            CssContext context = new CssContext();

            ResolveStylesForTree(document, cssResolver, context);
            IElementNode element = FindElement(document, elementPath);

            if (element == null)
            {
                NUnit.Framework.Assert.Fail(MessageFormatUtil.Format("Element at path \"{0}\" was not found.", elementPath
                                                                     ));
            }
            IDictionary <String, String> elementStyles     = element.GetStyles();
            ICollection <String>         expectedStylesSet = new HashSet <String>(JavaUtil.ArraysAsList(expectedStyles));
            ICollection <String>         actualStylesSet   = StylesMapToHashSet(elementStyles);

            NUnit.Framework.Assert.IsTrue(SetsAreEqual(expectedStylesSet, actualStylesSet), GetDifferencesMessage(expectedStylesSet
                                                                                                                  , actualStylesSet));
        }
Ejemplo n.º 2
0
 /// <summary>Gets the styles of a node.</summary>
 /// <param name="node">the node</param>
 /// <returns>
 /// a list of
 /// <see cref="iText.StyledXmlParser.Css.CssDeclaration"/>
 /// values
 /// </returns>
 public static IList <CssDeclaration> GetStyles(INode node)
 {
     return(defaultCss.GetCssDeclarations(node, MediaDeviceDescription.CreateDefault()));
 }
Ejemplo n.º 3
0
        /// <summary>Resolves node styles without inheritance of parent element styles.</summary>
        /// <param name="node">the node</param>
        /// <param name="cssContext">the CSS context (RootFontSize, etc.)</param>
        /// <returns>the map containing the resolved styles that are defined in the body of the element</returns>
        public virtual IDictionary <String, String> ResolveNativeStyles(INode node, AbstractCssContext cssContext)
        {
            IDictionary <String, String> styles = new Dictionary <String, String>();
            // Load in from collected style sheets
            IList <CssDeclaration> styleSheetDeclarations = css.GetCssDeclarations(node, MediaDeviceDescription.CreateDefault
                                                                                       ());

            foreach (CssDeclaration ssd in styleSheetDeclarations)
            {
                styles.Put(ssd.GetProperty(), ssd.GetExpression());
            }
            // Load in attributes declarations
            if (node is IElementNode)
            {
                IElementNode eNode = (IElementNode)node;
                foreach (IAttribute attr in eNode.GetAttributes())
                {
                    ProcessAttribute(attr, styles);
                }
            }
            return(styles);
        }
Ejemplo n.º 4
0
        public virtual IDictionary <String, String> ResolveStyles(INode node, AbstractCssContext context)
        {
            IDictionary <String, String> styles = new Dictionary <String, String>();
            //Load in from collected style sheets
            IList <CssDeclaration> styleSheetDeclarations = css.GetCssDeclarations(node, MediaDeviceDescription.CreateDefault
                                                                                       ());

            foreach (CssDeclaration ssd in styleSheetDeclarations)
            {
                styles.Put(ssd.GetProperty(), ssd.GetExpression());
            }
            //Load in attributes declarations
            if (node is IElementNode)
            {
                IElementNode eNode = (IElementNode)node;
                foreach (IAttribute attr in eNode.GetAttributes())
                {
                    ProcessAttribute(attr, styles);
                }
            }
            //Load in and merge inherited declarations from parent
            if (node.ParentNode() is IStylesContainer)
            {
                IStylesContainer             parentNode   = (IStylesContainer)node.ParentNode();
                IDictionary <String, String> parentStyles = parentNode.GetStyles();
                if (parentStyles == null && !(node.ParentNode() is IDocumentNode))
                {
                    ILog logger = LogManager.GetLogger(typeof(iText.Svg.Css.Impl.SvgStyleResolver));
                    logger.Error(iText.StyledXmlParser.LogMessageConstant.ERROR_RESOLVING_PARENT_STYLES);
                }
                if (parentStyles != null)
                {
                    foreach (KeyValuePair <String, String> entry in parentStyles)
                    {
                        String parentFontSizeString = parentStyles.Get(CommonCssConstants.FONT_SIZE);
                        if (parentFontSizeString == null)
                        {
                            parentFontSizeString = "0";
                        }
                        sru.MergeParentStyleDeclaration(styles, entry.Key, entry.Value, parentFontSizeString);
                    }
                }
            }
            return(styles);
        }