public virtual void CreatePdf(String dest)
        {
            //Initialize PDF document
            PdfDocument pdf       = new PdfDocument(new PdfWriter(dest));
            PdfPage     page      = pdf.AddNewPage();
            PdfCanvas   pdfCanvas = new PdfCanvas(page);
            Rectangle   rectangle = new Rectangle(36, 650, 100, 100);

            pdfCanvas.Rectangle(rectangle);
            pdfCanvas.Stroke();
            iText.Layout.Canvas canvas1 = new iText.Layout.Canvas(pdfCanvas, rectangle);
            PdfFont             font    = PdfFontFactory.CreateFont(StandardFonts.TIMES_ROMAN);
            PdfFont             bold    = PdfFontFactory.CreateFont(StandardFonts.TIMES_BOLD);
            Text      title             = new Text("The Strange Case of Dr. Jekyll and Mr. Hyde").SetFont(bold);
            Text      author            = new Text("Robert Louis Stevenson").SetFont(font);
            Paragraph p = new Paragraph().Add(title).Add(" by ").Add(author);

            canvas1.Add(p);
            PdfPage   page2      = pdf.AddNewPage();
            PdfCanvas pdfCanvas2 = new PdfCanvas(page2);

            iText.Layout.Canvas canvas2 = new iText.Layout.Canvas(pdfCanvas2, rectangle);
            canvas2.Add(new Paragraph("Dr. Jekyll and Mr. Hyde"));
            PdfPage   page1      = pdf.GetFirstPage();
            PdfCanvas pdfCanvas1 = new PdfCanvas(page1.NewContentStreamBefore(), page1.GetResources(), pdf);

            rectangle = new Rectangle(100, 700, 100, 100);
            pdfCanvas1.SaveState().SetFillColor(ColorConstants.CYAN).Rectangle(rectangle).Fill().RestoreState();
            iText.Layout.Canvas canvas = new iText.Layout.Canvas(pdfCanvas1, rectangle);
            canvas.Add(new Paragraph("Dr. Jekyll and Mr. Hyde"));
            //Close document
            pdf.Close();
        }
        public virtual void CheckIfOcgForPdfA2Works()
        {
            String fileName    = "createdOcgPdfA.pdf";
            Stream colorStream = new FileStream(sourceFolder + "color/sRGB_CS_profile.icm", FileMode.Open, FileAccess.Read
                                                );
            String      outFileName = destinationFolder + fileName;
            String      cmpFileName = sourceFolder + "cmp/PdfA2LayoutOcgTest/cmp_" + fileName;
            PdfDocument pdfDoc      = new PdfADocument(new PdfWriter(outFileName), PdfAConformanceLevel.PDF_A_2A, new PdfOutputIntent
                                                           ("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", colorStream));

            pdfDoc.SetTagged();
            pdfDoc.GetCatalog().SetLang(new PdfString("en-US"));
            pdfDoc.AddNewPage();
            iText.Layout.Element.Image image1 = new Image(ImageDataFactory.Create(sourceFolder + "images/manualTransparency_for_png.png"
                                                                                  ));
            PdfCanvas pdfCanvas = new PdfCanvas(pdfDoc, 1);

            iText.Layout.Canvas canvas1     = new iText.Layout.Canvas(pdfCanvas, pdfDoc, new Rectangle(0, 0, 590, 420));
            PdfLayer            imageLayer1 = new PdfLayer("*[email protected]", pdfDoc);

            imageLayer1.SetOn(true);
            pdfCanvas.BeginLayer(imageLayer1);
            canvas1.Add(image1);
            pdfCanvas.EndLayer();
            canvas1.Close();
            pdfDoc.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outFileName, cmpFileName, destinationFolder
                                                                             , "diff01_"));
        }
        private void DrawSimulatedDiv(PdfPage page, IDictionary <int, Object> styles, float[] margins, bool drawBackground
                                      , int pageNumber, bool recalculateBodyAreaForContentSize)
        {
            Div pageBordersSimulation = new Div().SetFillAvailableArea(true);

            foreach (KeyValuePair <int, Object> entry in styles)
            {
                if ((entry.Key == Property.BACKGROUND || entry.Key == Property.BACKGROUND_IMAGE) && !drawBackground)
                {
                    continue;
                }
                pageBordersSimulation.SetProperty(entry.Key, entry.Value);
            }
            pageBordersSimulation.GetAccessibilityProperties().SetRole(StandardRoles.ARTIFACT);
            Rectangle backgroundArea = new Rectangle(page.GetTrimBox()).ApplyMargins(margins[0], margins[1], margins[2
                                                                                     ], margins[3], false);

            if (recalculateBodyAreaForContentSize)
            {
                if (pageStylesPropertiesMap.Get(pageNumber).lowestAndHighest == null)
                {
                    return;
                }
                HtmlBodyStylesApplierHandler.LowestAndHighest lowestAndHighest = pageStylesPropertiesMap.Get(pageNumber).lowestAndHighest;
                RecalculateBackgroundAreaForBody(backgroundArea, pageBordersSimulation, lowestAndHighest);
            }
            if (pdfCanvas == null)
            {
                pdfCanvas = new PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), page.GetDocument());
            }
            iText.Layout.Canvas canvas = new iText.Layout.Canvas(pdfCanvas, backgroundArea);
            canvas.EnableAutoTagging(page);
            canvas.Add(pageBordersSimulation);
            canvas.Close();
        }
Example #4
0
        public virtual void PrecisionTest01()
        {
            String      outFileName      = destinationFolder + "precisionTest01.pdf";
            String      cmpFileName      = sourceFolder + "cmp_precisionTest01.pdf";
            String      imageFileName    = sourceFolder + "LOGO_PDF_77.jpg";
            PdfDocument pdfDoc           = new PdfDocument(new PdfWriter(outFileName));
            PdfPage     page             = pdfDoc.AddNewPage();
            PdfCanvas   currentPdfCanvas = new PdfCanvas(page);
            Rectangle   rc = new Rectangle(56.6929131f, 649.13385f, 481.889771f, 136.062988f);

            iText.Layout.Canvas canvas = new iText.Layout.Canvas(currentPdfCanvas, pdfDoc, rc);
            Table table = new Table(UnitValue.CreatePointArray(new float[] { 158f }));

            table.SetTextAlignment(TextAlignment.LEFT);
            iText.Layout.Element.Image logoImage = new iText.Layout.Element.Image(ImageDataFactory.Create(imageFileName
                                                                                                          ));
            Paragraph p    = new Paragraph().Add(logoImage.SetAutoScale(true));
            Cell      cell = new Cell();

            cell.SetKeepTogether(true);
            cell.Add(p);
            table.AddCell(cell.SetHeight(85.03937f).SetVerticalAlignment(VerticalAlignment.TOP).SetPadding(0));
            canvas.Add(table);
            pdfDoc.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outFileName, cmpFileName, destinationFolder
                                                                             , "diff"));
        }
Example #5
0
        public virtual void CreatePdf(String dest)
        {
            // Initialize PDF document
            PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
            // Initialize document
            PdfPage   page      = pdf.AddNewPage();
            PdfCanvas pdfCanvas = new PdfCanvas(page);
            Rectangle rectangle = new Rectangle(36, 36, 523, 770);

            iText.Layout.Canvas canvas = new iText.Layout.Canvas(pdfCanvas, rectangle);
            Paragraph           p;

            p = new Paragraph("Testing font methods");
            canvas.Add(p);
            PdfFont font = PdfFontFactory.CreateFont(StandardFonts.TIMES_ROMAN);

            canvas.SetFont(font);
            p = new Paragraph("Testing font methods: changed font");
            canvas.Add(p);
            canvas.SetFontSize(18);
            p = new Paragraph("Testing font methods: changed font size");
            canvas.Add(p);
            canvas.SetFontColor(ColorConstants.BLUE);
            p = new Paragraph("Testing font methods: changed color");
            canvas.Add(p);
            canvas.SetBold();
            p = new Paragraph("Testing font methods: to bold");
            canvas.Add(p);
            canvas.SetItalic();
            p = new Paragraph("Testing font methods: to italic");
            canvas.Add(p);
            canvas.SetProperty(Property.BOLD_SIMULATION, false);
            canvas.SetProperty(Property.ITALIC_SIMULATION, false);
            canvas.SetProperty(Property.FONT_COLOR, null);
            p = new Paragraph("Testing font methods: resetting style and color");
            canvas.Add(p);
            canvas.SetLineThrough();
            p = new Paragraph("Testing font methods: line through (default)");
            canvas.Add(p);
            canvas.SetProperty(Property.UNDERLINE, null);
            canvas.SetUnderline();
            p = new Paragraph("Testing font methods: underline (default)");
            canvas.Add(p);
            canvas.SetProperty(Property.UNDERLINE, null);
            canvas.SetUnderline(2, 4);
            canvas.SetUnderline(ColorConstants.BLUE, 5, 0.1f, 2, -0.5f, PdfCanvasConstants.LineCapStyle.ROUND);
            p = new Paragraph("Testing font methods: underline (custom)");
            canvas.Add(p);
            canvas.SetProperty(Property.UNDERLINE, null);
            canvas.SetTextRenderingMode(PdfCanvasConstants.TextRenderingMode.STROKE);
            p = new Paragraph("Testing font methods: change text rendering mode");
            canvas.Add(p);
            canvas.SetStrokeWidth(0.1f);
            canvas.SetStrokeColor(ColorConstants.BLUE);
            p = new Paragraph("Testing font methods: change stroke width and color");
            canvas.Add(p);
            //Close document
            pdf.Close();
        }
            public virtual void HandleEvent(Event @event)
            {
                PdfDocumentEvent docEvent  = (PdfDocumentEvent)@event;
                PdfDocument      pdf       = docEvent.GetDocument();
                PdfPage          page      = docEvent.GetPage();
                PdfCanvas        pdfCanvas = new PdfCanvas(page);

                iText.Layout.Canvas canvas = new iText.Layout.Canvas(pdfCanvas, page.GetPageSize());
                canvas.Add(new Paragraph().Add(docEvent.GetEventType()));
            }
 /// <summary>Draws page border.</summary>
 /// <param name="page">the page</param>
 private void DrawPageBorders(PdfPage page)
 {
     if (pageBordersSimulation == null)
     {
         return;
     }
     iText.Layout.Canvas canvas = new iText.Layout.Canvas(new PdfCanvas(page), page.GetTrimBox());
     canvas.EnableAutoTagging(page);
     canvas.Add(pageBordersSimulation);
     canvas.Close();
 }
Example #8
0
        public virtual void CanvasImmediateFlushConstructorTest()
        {
            PdfDocument pdf       = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()));
            PdfPage     page      = pdf.AddNewPage();
            PdfCanvas   pdfCanvas = new PdfCanvas(page.GetLastContentStream(), page.GetResources(), pdf);
            Rectangle   rectangle = new Rectangle(0, 0);

            iText.Layout.Canvas canvas = new iText.Layout.Canvas(pdfCanvas, rectangle, false);
            NUnit.Framework.Assert.AreEqual(pdfCanvas.GetDocument(), canvas.GetPdfDocument());
            NUnit.Framework.Assert.IsFalse(canvas.immediateFlush);
        }
Example #9
0
 /// <summary>Draws page background and borders.</summary>
 /// <param name="page">the page</param>
 private void DrawPageBackgroundAndBorders(PdfPage page)
 {
     iText.Layout.Canvas canvas = new iText.Layout.Canvas(new PdfCanvas(page), page.GetBleedBox());
     canvas.EnableAutoTagging(page);
     canvas.Add(pageBackgroundSimulation);
     canvas.Close();
     canvas = new iText.Layout.Canvas(new PdfCanvas(page), page.GetTrimBox());
     canvas.EnableAutoTagging(page);
     canvas.Add(pageBordersSimulation);
     canvas.Close();
 }
        /// <summary>Draws page background.</summary>
        /// <param name="page">the page</param>
        /// <returns>pdfCanvas instance if there was a background to draw, otherwise returns null</returns>
        internal virtual PdfCanvas DrawPageBackground(PdfPage page)
        {
            PdfCanvas pdfCanvas = null;

            if (pageBackgroundSimulation != null)
            {
                pdfCanvas = new PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), page.GetDocument());
                iText.Layout.Canvas canvas = new iText.Layout.Canvas(pdfCanvas, page.GetBleedBox());
                canvas.EnableAutoTagging(page);
                canvas.Add(pageBackgroundSimulation);
                canvas.Close();
            }
            return(pdfCanvas);
        }
Example #11
0
        private static void AddParaWithImgSetOverflowX(iText.Layout.Canvas canvas, OverflowPropertyValue?overflowX
                                                       )
        {
            String imgPath = sourceFolder + "itis.jpg";

            iText.Layout.Element.Image img = new iText.Layout.Element.Image(ImageDataFactory.Create(imgPath));
            Paragraph p = new Paragraph().SetTextAlignment(TextAlignment.CENTER).SetHeight(150f).SetWidth(150f).SetBorder
                              (new SolidBorder(5f));

            p.SetProperty(Property.OVERFLOW_X, overflowX);
            p.SetProperty(Property.OVERFLOW_Y, OverflowPropertyValue.HIDDEN);
            img.SetProperty(Property.OVERFLOW_X, OverflowPropertyValue.VISIBLE);
            img.SetProperty(Property.OVERFLOW_Y, OverflowPropertyValue.VISIBLE);
            canvas.Add(p.Add(img));
        }
Example #12
0
        public virtual void OverflowVisibleOnCanvasTest02()
        {
            String      outFileName = destinationFolder + "overflowVisibleOnCanvasTest02.pdf";
            String      cmpFileName = sourceFolder + "cmp_overflowVisibleOnCanvasTest02.pdf";
            PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName));
            PdfPage     page        = pdfDocument.AddNewPage();

            iText.Layout.Canvas canvas = new iText.Layout.Canvas(page, page.GetPageSize().Clone().ApplyMargins(36, 36,
                                                                                                               36, 36, false));
            AddParaWithImgSetOverflowX(canvas, OverflowPropertyValue.VISIBLE);
            canvas.Close();
            pdfDocument.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outFileName, cmpFileName, destinationFolder
                                                                             , "diff"));
        }
Example #13
0
        public virtual void CanvasWithPageLinkTest()
        {
            String      testName  = "canvasWithPageLinkTest";
            String      @out      = destinationFolder + testName + ".pdf";
            String      cmp       = sourceFolder + "cmp_" + testName + ".pdf";
            PdfDocument pdf       = new PdfDocument(new PdfWriter(@out));
            PdfPage     page      = pdf.AddNewPage();
            Rectangle   pageSize  = page.GetPageSize();
            Rectangle   rectangle = new Rectangle(pageSize.GetX() + 36, pageSize.GetTop() - 80, pageSize.GetWidth() - 72
                                                  , 50);

            iText.Layout.Canvas canvas = new iText.Layout.Canvas(page, rectangle);
            canvas.Add(new Paragraph(new Link("Google link!", PdfAction.CreateURI("https://www.google.com")).SetUnderline
                                         ().SetFontColor(ColorConstants.BLUE)));
            canvas.Close();
            pdf.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(@out, cmp, destinationFolder));
        }
        private void AddTextToCanvas(String text, PdfFont font, Rectangle dataRect)
        {
            PdfCanvas canvas;

            canvas = new PdfCanvas(n2, document);
            Paragraph paragraph = new Paragraph(text).SetFont(font).SetMargin(0).SetMultipliedLeading(0.9f);

            iText.Layout.Canvas layoutCanvas = new iText.Layout.Canvas(canvas, document, dataRect);
            if (layer2FontSize == 0)
            {
                ApplyCopyFittingFontSize(paragraph, dataRect, layoutCanvas.GetRenderer());
            }
            else
            {
                paragraph.SetFontSize(layer2FontSize);
            }
            layoutCanvas.Add(paragraph);
        }
Example #15
0
        public virtual void ShowTextAlignedTest03()
        {
            String      outFileName = destinationFolder + "showTextAlignedTest03.pdf";
            String      cmpFileName = sourceFolder + "cmp_showTextAlignedTest03.pdf";
            PdfDocument pdfDoc      = new PdfDocument(new PdfWriter(outFileName));
            Document    doc         = new Document(pdfDoc);

            iText.Layout.Element.Image img = new Image(ImageDataFactory.Create(sourceFolder + "bruno.jpg"));
            float          width           = img.GetImageScaledWidth();
            float          height          = img.GetImageScaledHeight();
            PdfFormXObject template        = new PdfFormXObject(new Rectangle(width, height));

            iText.Layout.Canvas canvas = new iText.Layout.Canvas(template, pdfDoc);
            canvas.Add(img).ShowTextAligned("HELLO BRUNO", width / 2, height / 2, TextAlignment.CENTER);
            doc.Add(new iText.Layout.Element.Image(template));
            doc.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outFileName, cmpFileName, destinationFolder
                                                                             , "diff"));
        }
Example #16
0
        public virtual void ParentElemWithAbsolPositionKidNotSuitCanvasTest()
        {
            String testName = "parentElemWithAbsolPositionKidNotSuitCanvas";
            String @out     = destinationFolder + testName + ".pdf";
            String cmp      = sourceFolder + "cmp_" + testName + ".pdf";

            using (PdfDocument pdf = new PdfDocument(new PdfWriter(@out))) {
                pdf.AddNewPage();
                iText.Layout.Canvas canvas = new iText.Layout.Canvas(new PdfCanvas(pdf.GetFirstPage()), new Rectangle(120,
                                                                                                                      650, 55, 80));
                Div notFittingDiv = new Div().SetWidth(100).Add(new Paragraph("Paragraph in Div with Not set position"));
                canvas.Add(notFittingDiv);
                Div divWithPosition = new Div().SetFixedPosition(120, 300, 80);
                divWithPosition.Add(new Paragraph("Paragraph in Div with set position"));
                canvas.Add(divWithPosition);
                canvas.Close();
            }
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(@out, cmp, destinationFolder));
        }
Example #17
0
            public void HandleEvent(iText.Kernel.Events.Event @event)
            {
                PdfDocumentEvent docEvent  = (PdfDocumentEvent)@event;
                PdfPage          page      = docEvent.GetPage();
                PdfCanvas        pdfCanvas = new PdfCanvas(page);
                Rectangle        pageSize  = page.GetPageSize();

                iText.Layout.Canvas canvas  = new iText.Layout.Canvas(pdfCanvas, pageSize);
                Paragraph           headerP = new Paragraph();

                foreach (IElement elem in elements)
                {
                    if (elem is IBlockElement)
                    {
                        headerP.Add((IBlockElement)elem);
                    }
                    else
                    {
                        if (elem is Image)
                        {
                            headerP.Add((Image)elem);
                        }
                    }
                }
                Paragraph footerP = new Paragraph();

                foreach (IElement elem in footer)
                {
                    if (elem is IBlockElement)
                    {
                        footerP.Add((IBlockElement)elem);
                    }
                    else
                    {
                        if (elem is Image)
                        {
                            footerP.Add((Image)elem);
                        }
                    }
                }
                canvas.ShowTextAligned(headerP, pageSize.GetWidth() / 2, pageSize.GetTop() - 30, TextAlignment.LEFT);
                canvas.ShowTextAligned(footerP, 0, 0, TextAlignment.LEFT);
            }
        public virtual void CreatePdf(String dest)
        {
            //Initialize PDF document
            PdfDocument pdf       = new PdfDocument(new PdfWriter(dest));
            PdfPage     page      = pdf.AddNewPage();
            PdfCanvas   pdfCanvas = new PdfCanvas(page);
            Rectangle   rectangle = new Rectangle(36, 650, 100, 100);

            pdfCanvas.Rectangle(rectangle);
            pdfCanvas.Stroke();
            iText.Layout.Canvas canvas = new iText.Layout.Canvas(pdfCanvas, rectangle);
            PdfFont             font   = PdfFontFactory.CreateFont(StandardFonts.TIMES_ROMAN);
            PdfFont             bold   = PdfFontFactory.CreateFont(StandardFonts.TIMES_BOLD);
            Text      title            = new Text("The Strange Case of Dr. Jekyll and Mr. Hyde").SetFont(bold);
            Text      author           = new Text("Robert Louis Stevenson").SetFont(font);
            Paragraph p = new Paragraph().Add(title).Add(" by ").Add(author);

            canvas.Add(p);
            //Close document
            pdf.Close();
        }
Example #19
0
        public virtual void CanvasWithPageEnableTaggingTest02()
        {
            String      testName = "canvasWithPageEnableTaggingTest02";
            String      @out     = destinationFolder + testName + ".pdf";
            String      cmp      = sourceFolder + "cmp_" + testName + ".pdf";
            PdfDocument pdf      = new PdfDocument(new PdfWriter(@out));

            pdf.SetTagged();
            PdfPage   page      = pdf.AddNewPage();
            Rectangle pageSize  = page.GetPageSize();
            Rectangle rectangle = new Rectangle(pageSize.GetX() + 36, pageSize.GetTop() - 80, pageSize.GetWidth() - 72
                                                , 50);

            iText.Layout.Canvas canvas = new iText.Layout.Canvas(page, rectangle);
            // This will disable tagging and also prevent annotations addition. Created tagged document is invalid. Expected log message.
            canvas.EnableAutoTagging(null);
            canvas.Add(new Paragraph(new Link("Google link!", PdfAction.CreateURI("https://www.google.com")).SetUnderline
                                         ().SetFontColor(ColorConstants.BLUE)));
            canvas.Close();
            pdf.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(@out, cmp, destinationFolder));
        }
        public virtual void CreatePdf(String dest)
        {
            // Initialize PDF document
            PdfDocument pdf       = new PdfDocument(new PdfWriter(dest));
            PdfPage     page      = pdf.AddNewPage();
            PdfCanvas   pdfCanvas = new PdfCanvas(page);
            Rectangle   rectangle = new Rectangle(36, 36, 523, 770);

            iText.Layout.Canvas canvas = new iText.Layout.Canvas(pdfCanvas, rectangle);
            Paragraph           p;

            p = new Paragraph("Testing layout methods");
            canvas.Add(p);
            canvas.SetTextAlignment(TextAlignment.CENTER);
            p = new Paragraph("Testing layout methods");
            canvas.Add(p);
            p = new Paragraph();
            for (int i = 0; i < 6; i++)
            {
                p.Add("singing supercalifragilisticexpialidocious ");
            }
            canvas.Add(p);
            canvas.SetHyphenation(new HyphenationConfig("en", "uk", 3, 3));
            canvas.Add(p);
            canvas.SetTextAlignment(TextAlignment.JUSTIFIED);
            canvas.Add(p);
            canvas.SetHyphenation(null);
            canvas.SetSplitCharacters(new _ISplitCharacters_62());
            canvas.Add(p);
            canvas.SetSplitCharacters(new DefaultSplitCharacters());
            canvas.SetTextAlignment(TextAlignment.LEFT);
            canvas.Add(p);
            canvas.SetWordSpacing(10);
            canvas.Add(p);
            canvas.SetCharacterSpacing(5);
            canvas.Add(p);
            //Close document
            pdf.Close();
        }
Example #21
0
 public virtual void NestedElementWithAbsolutePositioningInCanvasTest()
 {
     NUnit.Framework.Assert.That(() => {
         //TODO: DEVSIX-4820 (NullPointerException on processing absolutely positioned elements in small canvas area)
         String testName = "nestedElementWithAbsolutePositioningInCanvas";
         String @out     = destinationFolder + testName + ".pdf";
         String cmp      = sourceFolder + "cmp_" + testName + ".pdf";
         using (PdfDocument pdf = new PdfDocument(new PdfWriter(@out))) {
             pdf.AddNewPage();
             iText.Layout.Canvas canvas = new iText.Layout.Canvas(new PdfCanvas(pdf.GetFirstPage()), new Rectangle(120,
                                                                                                                   650, 55, 80));
             Div notFittingDiv   = new Div().SetWidth(100).Add(new Paragraph("Paragraph in Div with Not set position"));
             Div divWithPosition = new Div().SetFixedPosition(50, 20, 80);
             divWithPosition.Add(new Paragraph("Paragraph in Div with set position"));
             notFittingDiv.Add(divWithPosition);
             canvas.Add(notFittingDiv);
             canvas.Close();
         }
         NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(@out, cmp, destinationFolder));
     }
                                 , NUnit.Framework.Throws.InstanceOf <NullReferenceException>())
     ;
 }
Example #22
0
        private void DrawOverlayText(PdfCanvas canvas, String overlayText, Rectangle annotRect, PdfBoolean repeat,
                                     PdfString defaultAppearance, int justification)
        {
            IDictionary <String, IList> parsedDA;

            try {
                parsedDA = ParseDAParam(defaultAppearance);
            }
            catch (NullReferenceException) {
                throw new PdfException(PdfException.DefaultAppearanceNotFound);
            }
            PdfFont       font;
            float         fontSize       = 12;
            IList         fontArgs       = parsedDA.Get("Tf");
            PdfDictionary formDictionary = pdfDocument.GetCatalog().GetPdfObject().GetAsDictionary(PdfName.AcroForm);

            if (fontArgs != null && formDictionary != null)
            {
                font     = GetFontFromAcroForm((PdfName)fontArgs[0]);
                fontSize = ((PdfNumber)fontArgs[1]).FloatValue();
            }
            else
            {
                font = PdfFontFactory.CreateFont();
            }
            if (pdfDocument.IsTagged())
            {
                canvas.OpenTag(new CanvasArtifact());
            }
            iText.Layout.Canvas modelCanvas   = new iText.Layout.Canvas(canvas, pdfDocument, annotRect, false);
            Paragraph           p             = new Paragraph(overlayText).SetFont(font).SetFontSize(fontSize).SetMargin(0);
            TextAlignment?      textAlignment = TextAlignment.LEFT;

            switch (justification)
            {
            case 1: {
                textAlignment = TextAlignment.CENTER;
                break;
            }

            case 2: {
                textAlignment = TextAlignment.RIGHT;
                break;
            }

            default: {
                break;
            }
            }
            p.SetTextAlignment(textAlignment);
            IList strokeColorArgs;

            parsedDA.TryGetValue("StrokeColor", out strokeColorArgs);
            if (strokeColorArgs != null)
            {
                p.SetStrokeColor(GetColor(strokeColorArgs));
            }
            IList fillColorArgs;

            parsedDA.TryGetValue("FillColor", out fillColorArgs);
            if (fillColorArgs != null)
            {
                p.SetFontColor(GetColor(fillColorArgs));
            }
            modelCanvas.Add(p);
            if (repeat != null && repeat.GetValue())
            {
                bool?isFull = modelCanvas.GetRenderer().GetPropertyAsBoolean(Property.FULL);
                while (isFull == null || (bool)!isFull)
                {
                    p.Add(overlayText);
                    LayoutArea previousArea = modelCanvas.GetRenderer().GetCurrentArea().Clone();
                    modelCanvas.Relayout();
                    if (modelCanvas.GetRenderer().GetCurrentArea().Equals(previousArea))
                    {
                        // Avoid infinite loop. This might be caused by the fact that the font does not support the text we want to show
                        break;
                    }
                    isFull = modelCanvas.GetRenderer().GetPropertyAsBoolean(Property.FULL);
                }
            }
            modelCanvas.GetRenderer().Flush();
            if (pdfDocument.IsTagged())
            {
                canvas.CloseTag();
            }
        }