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)); }
/// <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())); }
/// <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); }
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); }