/* (non-Javadoc) * @see com.itextpdf.html2pdf.css.apply.ICssApplier#apply(com.itextpdf.html2pdf.attach.ProcessorContext, com.itextpdf.html2pdf.html.node.IStylesContainer, com.itextpdf.html2pdf.attach.ITagWorker) */ public virtual void Apply(ProcessorContext context, IStylesContainer stylesContainer, ITagWorker tagWorker ) { IDictionary <String, String> cssProps = stylesContainer.GetStyles(); IPropertyContainer container = tagWorker.GetElementResult(); if (container != null) { WidthHeightApplierUtil.ApplyWidthHeight(cssProps, context, container); BackgroundApplierUtil.ApplyBackground(cssProps, context, container); MarginApplierUtil.ApplyMargins(cssProps, context, container); PaddingApplierUtil.ApplyPaddings(cssProps, context, container); FontStyleApplierUtil.ApplyFontStyles(cssProps, context, stylesContainer, container); BorderStyleApplierUtil.ApplyBorders(cssProps, context, container); HyphenationApplierUtil.ApplyHyphenation(cssProps, context, stylesContainer, container); FloatApplierUtil.ApplyFloating(cssProps, context, container); PositionApplierUtil.ApplyPosition(cssProps, context, container); OpacityApplierUtil.ApplyOpacity(cssProps, context, container); PageBreakApplierUtil.ApplyPageBreakProperties(cssProps, context, container); OverflowApplierUtil.ApplyOverflow(cssProps, container); TransformationApplierUtil.ApplyTransformation(cssProps, context, container); OutlineApplierUtil.ApplyOutlines(cssProps, context, container); OrphansWidowsApplierUtil.ApplyOrphansAndWidows(cssProps, container); } }
/// <summary>Flush hanging leaves.</summary> /// <param name="container">a container element</param> public virtual void FlushHangingLeaves(IPropertyContainer container) { Paragraph p = CreateLeavesContainer(); if (p != null) { IDictionary <String, String> map = new Dictionary <String, String>(); map.Put(CssConstants.OVERFLOW, CommonCssConstants.VISIBLE); OverflowApplierUtil.ApplyOverflow(map, p); if (container is Document) { ((Document)container).Add(p); } else { if (container is Paragraph) { foreach (IElement leafElement in waitingLeaves) { if (leafElement is ILeafElement) { ((Paragraph)container).Add((ILeafElement)leafElement); } else { if (leafElement is IBlockElement) { ((Paragraph)container).Add((IBlockElement)leafElement); } } } } else { if (container is Div) { ((Div)container).Add(p); } else { if (container is Cell) { ((Cell)container).Add(p); } else { if (container is List) { ListItem li = new ListItem(); li.Add(p); ((List)container).Add(li); } else { throw new InvalidOperationException("Unable to process hanging inline content"); } } } } } waitingLeaves.Clear(); } }