/* (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); } }
/* (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 ) { SpanTagWorker spanTagWorker = (SpanTagWorker)tagWorker; IDictionary <String, String> cssStyles = stylesContainer.GetStyles(); foreach (IPropertyContainer child in spanTagWorker.GetOwnLeafElements()) { // Workaround for form fields so that SpanTagCssApplier does not apply its font-size to the child. // Form fields have their own CSS applier // TODO remove when form fields are not leaf elements anymore if (!(child is IFormField)) { ApplyChildElementStyles(child, cssStyles, context, stylesContainer); } } VerticalAlignmentApplierUtil.ApplyVerticalAlignmentForInlines(cssStyles, context, stylesContainer, spanTagWorker .GetAllElements()); if (cssStyles.ContainsKey(CssConstants.OPACITY)) { foreach (IPropertyContainer elem in spanTagWorker.GetAllElements()) { if (elem is Text && !elem.HasProperty(Property.OPACITY)) { OpacityApplierUtil.ApplyOpacity(cssStyles, context, elem); } } } // TODO as for now spans are flattened, let's at least make kids of floating spans floating too String floatVal = cssStyles.Get(CssConstants.FLOAT); if (floatVal != null && !CssConstants.NONE.Equals(floatVal)) { foreach (IPropertyContainer elem in spanTagWorker.GetAllElements()) { FloatPropertyValue?kidFloatVal = elem.GetProperty <FloatPropertyValue?>(Property.FLOAT); if (kidFloatVal == null || FloatPropertyValue.NONE.Equals(kidFloatVal)) { FloatApplierUtil.ApplyFloating(cssStyles, context, elem); } } } if (spanTagWorker.GetAllElements() != null) { foreach (IPropertyContainer child in spanTagWorker.GetAllElements()) { FloatPropertyValue?kidFloatVal = child.GetProperty <FloatPropertyValue?>(Property.FLOAT); if (child is Text && !child.HasOwnProperty(Property.BACKGROUND) && (kidFloatVal == null || FloatPropertyValue .NONE.Equals(kidFloatVal))) { BackgroundApplierUtil.ApplyBackground(cssStyles, context, child); } } } }
public virtual void Apply(ProcessorContext context, IStylesContainer stylesContainer, ITagWorker tagWorker ) { IDictionary <String, String> cssStyles = stylesContainer.GetStyles(); IStylesContainer parentToBeProcessed = (IStylesContainer)((CssPseudoElementNode)stylesContainer).ParentNode (); IPropertyContainer elementResult = context.GetState().Top().GetElementResult(); if (elementResult is IPlaceholderable) { IPropertyContainer element = ((IPlaceholderable)elementResult).GetPlaceholder(); FontStyleApplierUtil.ApplyFontStyles(cssStyles, context, parentToBeProcessed, element); BackgroundApplierUtil.ApplyBackground(cssStyles, context, element); OpacityApplierUtil.ApplyOpacity(cssStyles, context, element); } }
/* (non-Javadoc) * @see com.itextpdf.html2pdf.css.apply.impl.BlockCssApplier#apply(com.itextpdf.html2pdf.attach.ProcessorContext, com.itextpdf.html2pdf.html.node.IStylesContainer, com.itextpdf.html2pdf.attach.ITagWorker) */ public override void Apply(ProcessorContext context, IStylesContainer stylesContainer, ITagWorker tagWorker ) { IDictionary <String, String> cssProps = stylesContainer.GetStyles(); base.Apply(context, stylesContainer, tagWorker); TableRowWrapper rowWrapper = ((DisplayTableRowTagWorker)tagWorker).GetTableRowWrapper(); foreach (Cell cell in rowWrapper.GetCells()) { if (!cell.HasProperty(Property.BACKGROUND)) { BackgroundApplierUtil.ApplyBackground(cssProps, context, cell); } if (!cell.HasProperty(Property.OPACITY)) { OpacityApplierUtil.ApplyOpacity(cssProps, context, cell); } } }