Esempio n. 1
0
        /* (non-Javadoc)
         * @see com.itextpdf.layout.renderer.DocumentRenderer#addNewPage(com.itextpdf.kernel.geom.PageSize)
         */
        protected override PageSize AddNewPage(PageSize customPageSize)
        {
            PdfPage addedPage;
            int     pageNumber = document.GetPdfDocument().GetNumberOfPages() + 1;
            PageContextProcessor nextProcessor = GetPageProcessor(pageNumber);

            if (customPageSize != null)
            {
                addedPage = document.GetPdfDocument().AddNewPage(customPageSize);
            }
            else
            {
                addedPage = document.GetPdfDocument().AddNewPage(nextProcessor.GetPageSize());
            }
            nextProcessor.ProcessNewPage(addedPage);
            float[] margins = nextProcessor.ComputeLayoutMargins();
            BodyHtmlStylesContainer[] styles = new BodyHtmlStylesContainer[] { ((IPropertyContainer)document).GetProperty
                                                                               <BodyHtmlStylesContainer>(Html2PdfProperty.HTML_STYLING), ((IPropertyContainer)document).GetProperty <BodyHtmlStylesContainer
                                                                                                                                                                                     >(Html2PdfProperty.BODY_STYLING) };
            pageStylesPropertiesMap.Put(pageNumber, new HtmlBodyStylesApplierHandler.PageStylesProperties(styles));
            UpdateDefaultMargins(styles, margins);
            SetProperty(Property.MARGIN_TOP, margins[0]);
            SetProperty(Property.MARGIN_RIGHT, margins[1]);
            SetProperty(Property.MARGIN_BOTTOM, margins[2]);
            SetProperty(Property.MARGIN_LEFT, margins[3]);
            return(new PageSize(addedPage.GetTrimBox()));
        }
 private void ApplyHtmlBodyStyles(PdfPage page, float[] defaultMargins) {
     BodyHtmlStylesContainer[] styles = new BodyHtmlStylesContainer[2];
     styles[0] = ((IPropertyContainer)document).GetProperty<BodyHtmlStylesContainer>(Html2PdfProperty.HTML_STYLING
         );
     styles[1] = ((IPropertyContainer)document).GetProperty<BodyHtmlStylesContainer>(Html2PdfProperty.BODY_STYLING
         );
     int firstBackground = ApplyFirstBackground(page, defaultMargins, styles);
     for (int i = 0; i < 2; i++) {
         if (styles[i] != null) {
             if (styles[i].HasContentToDraw()) {
                 DrawSimulatedDiv(page, styles[i].properties, defaultMargins, firstBackground != i);
             }
             for (int j = 0; j < 4; j++) {
                 defaultMargins[j] += styles[i].GetTotalWidth()[j];
             }
         }
     }
 }