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