public void DrawCircle(EbReportField field, float printingTop)
        {
            float radius = field.Width / 2;
            float xval   = field.Left + radius;
            float yval   = Report.Height - (printingTop + field.Top + radius);

            cb.SetColorStroke(GetColor(field.BorderColor));
            cb.SetColorFill(GetColor(field.BackColor));
            cb.SetLineWidth(field.Border);
            cb.Circle(xval, yval, radius);
            cb.FillStroke();
        }
示例#2
0
        public void Verify_GraphicsStateStack_CanBeCreated()
        {
            var pdfFilePath = TestUtils.GetOutputFileName();
            var stream      = new FileStream(pdfFilePath, FileMode.Create);

            // step 1
            var document = new Document(new Rectangle(200, 120));

            // step 2
            PdfWriter writer = PdfWriter.GetInstance(document, stream);

            // step 3
            document.AddAuthor(TestUtils.Author);
            document.Open();
            // step 4
            PdfContentByte canvas = writer.DirectContent;

            // state 1:
            canvas.SetRgbColorFill(0xFF, 0x45, 0x00);
            // fill a rectangle in state 1
            canvas.Rectangle(10, 10, 60, 60);
            canvas.Fill();
            canvas.SaveState();
            // state 2;
            canvas.SetLineWidth(3);
            canvas.SetRgbColorFill(0x8B, 0x00, 0x00);
            // fill and stroke a rectangle in state 2
            canvas.Rectangle(40, 20, 60, 60);
            canvas.FillStroke();
            canvas.SaveState();
            // state 3:
            canvas.ConcatCtm(1, 0, 0.1f, 1, 0, 0);
            canvas.SetRgbColorStroke(0xFF, 0x45, 0x00);
            canvas.SetRgbColorFill(0xFF, 0xD7, 0x00);
            // fill and stroke a rectangle in state 3
            canvas.Rectangle(70, 30, 60, 60);
            canvas.FillStroke();
            canvas.RestoreState();
            // stroke a rectangle in state 2
            canvas.Rectangle(100, 40, 60, 60);
            canvas.Stroke();
            canvas.RestoreState();
            // fill and stroke a rectangle in state 1
            canvas.Rectangle(130, 50, 60, 60);
            canvas.FillStroke();

            document.Close();
            stream.Dispose();

            TestUtils.VerifyPdfFileIsReadable(pdfFilePath);
        }
示例#3
0
// ---------------------------------------------------------------------------

        /**
         * Draws a row of stars and circles.
         * @param canvas the canvas to which the shapes have to be drawn
         * @param x      X coordinate to position the row
         * @param y      Y coordinate to position the row
         * @param radius the radius of the circles
         * @param gutter the space between the shapes
         */
        public static void CreateStarsAndCircles(PdfContentByte canvas,
                                                 float x, float y, float radius, float gutter)
        {
            canvas.SaveState();
            canvas.SetColorStroke(new GrayColor(0.2f));
            canvas.SetColorFill(new GrayColor(0.9f));
            CreateStar(canvas, x, y);
            CreateCircle(canvas, x + radius, y - 70, radius, true);
            CreateCircle(canvas, x + radius, y - 70, radius / 2, true);
            canvas.Fill();
            x += 2 * radius + gutter;
            CreateStar(canvas, x, y);
            CreateCircle(canvas, x + radius, y - 70, radius, true);
            CreateCircle(canvas, x + radius, y - 70, radius / 2, true);
            canvas.EoFill();
            x += 2 * radius + gutter;
            CreateStar(canvas, x, y);
            canvas.NewPath();
            CreateCircle(canvas, x + radius, y - 70, radius, true);
            CreateCircle(canvas, x + radius, y - 70, radius / 2, true);
            x += 2 * radius + gutter;
            CreateStar(canvas, x, y);
            CreateCircle(canvas, x + radius, y - 70, radius, true);
            CreateCircle(canvas, x + radius, y - 70, radius / 2, false);
            canvas.FillStroke();
            x += 2 * radius + gutter;
            CreateStar(canvas, x, y);
            CreateCircle(canvas, x + radius, y - 70, radius, true);
            CreateCircle(canvas, x + radius, y - 70, radius / 2, true);
            canvas.EoFillStroke();
            canvas.RestoreState();
        }
// ===========================================================================
        public override void Write(Stream stream)
        {
            // step 1
            using (Document document = new Document()) {
                // step 2
                PdfWriter writer = PdfWriter.GetInstance(document, stream);
                // step 3
                document.Open();
                // step 4
                PdfContentByte canvas = writer.DirectContent;
                PdfShading     axial  = PdfShading.SimpleAxial(writer, 36, 716, 396,
                                                               788, BaseColor.ORANGE, BaseColor.BLUE
                                                               );
                canvas.PaintShading(axial);
                document.NewPage();
                PdfShading radial = PdfShading.SimpleRadial(writer,
                                                            200, 700, 50, 300, 700, 100,
                                                            new BaseColor(0xFF, 0xF7, 0x94),
                                                            new BaseColor(0xF7, 0x8A, 0x6B),
                                                            false, false
                                                            );
                canvas.PaintShading(radial);

                PdfShadingPattern shading = new PdfShadingPattern(axial);
                ColorRectangle(canvas, new ShadingColor(shading), 150, 420, 126, 126);
                canvas.SetShadingFill(shading);
                canvas.Rectangle(300, 420, 126, 126);
                canvas.FillStroke();
            }
        }
示例#5
0
 public static void DrawRoundedRectangle(PdfContentByte canvas, Rectangle rectangle, BaseColor baseColor)
 {
     canvas.SetColorFill(baseColor);
     canvas.SetColorStroke(BaseColor.BLACK);
     canvas.RoundRectangle(rectangle.Left, rectangle.Bottom, rectangle.Width, rectangle.Height, 5f);
     canvas.FillStroke();
 }
示例#6
0
        private static void Legenda(PdfContentByte cb, int i, float valor, string label, int[,] cores, float xCentro, float yCentro, float raio)
        {
            float h = PageSize.LETTER.Width;             // paisagem
            float w = PageSize.LETTER.Height;
            float x = xCentro + raio + 200;
            float y = h - yCentro + raio - (22 * i);

            cb.SetRGBColorFill(0, 0, 0);
            cb.BeginText();
            cb.SetTextMatrix(x - 100, y - 10);
            cb.ShowText(valor.ToString("###,###,##0.00").PadLeft(14));
            cb.EndText();

            cb.BeginText();
            cb.SetTextMatrix(x + 40, y - 10);
            cb.ShowText(label);
            cb.EndText();

            cb.SetRGBColorFill(cores[i, 0], cores[i, 1], cores[i, 2]);
            cb.MoveTo(x, y);
            cb.LineTo(x + 20, y);
            cb.LineTo(x + 20, y - 10);
            cb.LineTo(x, y - 10);
            cb.LineTo(x, y);
            cb.FillStroke();
        }
示例#7
0
 public virtual void ColorRectangle(PdfContentByte canvas,
     BaseColor color, float x, float y, float width, float height) {
     canvas.SaveState();
     canvas.SetColorFill(color);
     canvas.Rectangle(x, y, width, height);
     canvas.FillStroke();
     canvas.RestoreState();
 }
示例#8
0
// ===========================================================================
        public void Write(Stream stream)
        {
            // step 1
            using (Document document = new Document()) {
                // step 2
                PdfWriter writer = PdfWriter.GetInstance(document, stream);
                // step 3
                document.Open();
                // step 4
                PdfContentByte canvas = writer.DirectContent;
                // draw squares
                CreateSquares(canvas, 50, 720, 80, 20);
                ColumnText.ShowTextAligned(
                    canvas, Element.ALIGN_LEFT,
                    new Phrase(
                        "Methods MoveTo(), LineTo(), stroke(), closePathStroke(), Fill(), and closePathFill()"
                        ),
                    50, 700, 0
                    );
                // draw Bezier curves
                createBezierCurves(canvas, 70, 600, 80, 670, 140, 690, 160, 630, 160);
                ColumnText.ShowTextAligned(
                    canvas, Element.ALIGN_LEFT,
                    new Phrase("Different CurveTo() methods, followed by stroke()"),
                    50, 580, 0
                    );
                // draw stars and circles
                CreateStarsAndCircles(canvas, 50, 470, 40, 20);
                ColumnText.ShowTextAligned(
                    canvas, Element.ALIGN_LEFT,
                    new Phrase(
                        "Methods Fill(), eoFill(), NewPath(), FillStroke(), and EoFillStroke()"
                        ),
                    50, 450, 0
                    );
                // draw different shapes using convenience methods
                canvas.SaveState();
                canvas.SetColorStroke(new GrayColor(0.2f));
                canvas.SetColorFill(new GrayColor(0.9f));
                canvas.Arc(50, 270, 150, 330, 45, 270);
                canvas.Ellipse(170, 270, 270, 330);
                canvas.Circle(320, 300, 30);
                canvas.RoundRectangle(370, 270, 80, 60, 20);
                canvas.FillStroke();
                canvas.RestoreState();
                Rectangle rect = new Rectangle(470, 270, 550, 330);
                rect.BorderWidthBottom = 10;
                rect.BorderColorBottom = new GrayColor(0f);
                rect.BorderWidthLeft   = 4;
                rect.BorderColorLeft   = new GrayColor(0.9f);
                rect.BackgroundColor   = new GrayColor(0.4f);
                canvas.Rectangle(rect);
                ColumnText.ShowTextAligned(
                    canvas, Element.ALIGN_LEFT,
                    new Phrase("Convenience methods"), 50, 250, 0
                    );
            }
        }
示例#9
0
        public static void Pizza(PdfContentByte cb, ArrayList valores, ArrayList labels, float xCentro, float yCentro, float raio)
        {
            float h = PageSize.LETTER.Width;             // paisagem
            float w = PageSize.LETTER.Height;

            cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.COURIER, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 10);

            float total = 0;

            foreach (float valor in valores)
            {
                total += valor;
            }

            int[,] cores = new int[, ]
            {
                { 255, 0, 0 },
                { 0, 255, 0 },
                { 0, 0, 255 },
                { 255, 255, 0 },
                { 255, 0, 255 },
                { 0, 255, 255 },
                { 255, 128, 0 },
                { 0, 255, 128 },
                { 128, 0, 255 },
                { 255, 128, 128 },
                { 128, 255, 128 },
                { 128, 128, 255 }
            };

            int   i   = 0;
            float _dx = 0;
            float _dy = 0;
            float _a  = 0;

            foreach (float valor in valores)
            {
                float  a      = valor * 360 / total;
                double coseno = System.Math.Cos((a + _a) * System.Math.PI / 180);
                double seno   = System.Math.Sin((a + _a) * System.Math.PI / 180);
                float  dx     = (float)(raio * coseno);
                float  dy     = (float)(raio * seno);
                if (valor != 0)
                {
                    cb.SetRGBColorFill(cores[i, 0], cores[i, 1], cores[i, 2]);
                    cb.MoveTo(xCentro, h - yCentro);
                    cb.LineTo(xCentro + _dx, h - yCentro + _dy);
                    cb.Arc(xCentro - raio, h - yCentro + raio, xCentro + raio, h - yCentro - raio, _a, a);
                    cb.LineTo(xCentro, h - yCentro);
                    cb.FillStroke();
                }
                _dx = dx;
                _dy = dy;
                _a += a;
                Legenda(cb, i, valor, labels[i].ToString(), cores, xCentro, yCentro, raio);
                i++;
            }
        }
示例#10
0
        private void AfficherRectangleArrondi(PdfWriter writer, int posX, int posY, int largeur, int hauteur, int radius, int lineWidth, int r, int g, int b)
        {
            PdfContentByte cb = writer.DirectContent;

            cb.SetLineWidth(lineWidth);
            cb.SetRGBColorFill(r, g, b);
            cb.SetRGBColorStroke(20, 20, 20);
            cb.RoundRectangle(posX, posY, largeur, hauteur, radius);
            cb.FillStroke();
        }
示例#11
0
        private void AfficherRectangle(PdfWriter writer, int posX, int posY, int largeur, int hauteur, int r, int g, int b)
        {
            PdfContentByte cb = writer.DirectContent;

            //cb.SetRGBColorStroke(r, g, b);
            // cb.SetLineWidth(0);
            cb.SetRGBColorFill(r, g, b);
            cb.Rectangle(posX, posY, largeur, hauteur);          // 50 / 350
            cb.FillStroke();
        }
示例#12
0
// ---------------------------------------------------------------------------

        /**
         * Draws three rectangles
         * @param canvas
         */
        public void DrawRectangles(PdfContentByte canvas)
        {
            canvas.SaveState();
            canvas.SetGrayFill(0.9f);
            canvas.Rectangle(33, 592, 72, 72);
            canvas.Rectangle(263, 406, 72, 72);
            canvas.Rectangle(491, 168, 72, 72);
            canvas.FillStroke();
            canvas.RestoreState();
        }
示例#13
0
        public static void CreateSeatplanPdf(Document doc, string imageFilePath, LocationSeatplan plan, PdfContentByte pdfContentByte, float scaleFactor, float pageBorderLeft = 0)
        {
            var jpg = Image.GetInstance(imageFilePath);

            //Resize image depend upon your need for give the size to image
            jpg.ScaleToFit(jpg.Width * scaleFactor, jpg.Height * scaleFactor);

            //image as background
            jpg.Alignment = Image.UNDERLYING;


            jpg.SetAbsolutePosition(pageBorderLeft, doc.Top - (jpg.GetTop(0) * scaleFactor) - SpaceForHeader);

            doc.Add(jpg);
            var seatCount = 0;

            foreach (var seat in plan.LocationSeats)
            {
                seatCount++;
                var seatRadius = (seat.Width / 2f) * scaleFactor;
                pdfContentByte.Circle(pageBorderLeft + (seat.PositionX * scaleFactor), doc.Top - (seat.PositionY * scaleFactor) - SpaceForHeader, seatRadius);

                pdfContentByte.SetRGBColorFill(51, 204, 0);
                pdfContentByte.SetRGBColorStroke(51, 204, 0);


                pdfContentByte.FillStroke();

                pdfContentByte.SetRGBColorFill(0, 0, 0);

                // add text to seat & set the right font size
                var fontSizeSeat = seatRadius / 1.8;
                pdfContentByte.BeginText();
                pdfContentByte.SetFontAndSize(_fontBase, (float)fontSizeSeat);

                var seatText = string.Empty;

                foreach (var s in seat.SeatIdentification.Split(' '))
                {
                    if ((s.Contains(',') || seat.SeatIdentification.Split(' ').Last() == s) && s.Length < 5)
                    {
                        seatText += s;
                    }
                }

                pdfContentByte.ShowTextAligned(PdfContentByte.ALIGN_CENTER, seatText, pageBorderLeft + (seat.PositionX * scaleFactor), doc.Top - (seat.PositionY * scaleFactor) - SpaceForHeader - 1, 0);
                pdfContentByte.EndText();
            }


            pdfContentByte.ClosePathFillStroke();

            doc.NewPage();
        }
示例#14
0
 // ===========================================================================
 public void Write(Stream stream)
 {
     // step 1
     using (Document document = new Document(new Rectangle(200, 120)))
     {
         // step 2
         PdfWriter writer = PdfWriter.GetInstance(document, stream);
         // step 3
         document.Open();
         // step 4
         PdfContentByte canvas = writer.DirectContent;
         // state 1:
         canvas.SetRGBColorFill(0xFF, 0x45, 0x00);
         // fill a rectangle in state 1
         canvas.Rectangle(10, 10, 60, 60);
         canvas.Fill();
         canvas.SaveState();
         // state 2;
         canvas.SetLineWidth(3);
         canvas.SetRGBColorFill(0x8B, 0x00, 0x00);
         // fill and stroke a rectangle in state 2
         canvas.Rectangle(40, 20, 60, 60);
         canvas.FillStroke();
         canvas.SaveState();
         // state 3:
         canvas.ConcatCTM(1, 0, 0.1f, 1, 0, 0);
         canvas.SetRGBColorStroke(0xFF, 0x45, 0x00);
         canvas.SetRGBColorFill(0xFF, 0xD7, 0x00);
         // fill and stroke a rectangle in state 3
         canvas.Rectangle(70, 30, 60, 60);
         canvas.FillStroke();
         canvas.RestoreState();
         // stroke a rectangle in state 2
         canvas.Rectangle(100, 40, 60, 60);
         canvas.Stroke();
         canvas.RestoreState();
         // fill and stroke a rectangle in state 1
         canvas.Rectangle(130, 50, 60, 60);
         canvas.FillStroke();
     }
 }
示例#15
0
        private void AfficherTexte(PdfWriter writer, string texte, int posX, int posY, iTextSharp.text.Font font, int r, int g, int b)
        {
            PdfContentByte cb = writer.DirectContent;

            cb.SetLineWidth(15);
            // cb.SetRGBColorFill(255,255,255);
            cb.SetRGBColorFill(r, g, b);
            cb.FillStroke();
            ColumnText ct     = new ColumnText(cb);
            Phrase     myText = new Phrase(texte, font);

            ct.SetSimpleColumn(myText, posX, posY, posX + 130, posY + 130, 15, Element.ALIGN_LEFT);
            ct.Go();
        }
示例#16
0
        // ---------------------------------------------------------------------------

        /**
         * Draws a rectangle
         * @param content the direct content layer
         * @param width the width of the rectangle
         * @param height the height of the rectangle
         */
        public static void DrawRectangle(
            PdfContentByte content, float width, float height)
        {
            content.SaveState();
            PdfGState state = new PdfGState();

            state.FillOpacity = 0.6f;
            content.SetGState(state);
            content.SetRGBColorFill(0xFF, 0xFF, 0xFF);
            content.SetLineWidth(3);
            content.Rectangle(0, 0, width, height);
            content.FillStroke();
            content.RestoreState();
        }
示例#17
0
// ---------------------------------------------------------------------------

        /**
         * Prints a square and fills half of it with a gray rectangle.
         *
         * @param x
         * @param y
         * @param cb
         * @throws Exception
         */
        public static void PictureBackdrop(float x, float y, PdfContentByte cb,
                                           PdfWriter writer)
        {
            PdfShading axial = PdfShading.SimpleAxial(writer, x, y, x + 200, y,
                                                      BaseColor.YELLOW, BaseColor.RED
                                                      );
            PdfShadingPattern axialPattern = new PdfShadingPattern(axial);

            cb.SetShadingFill(axialPattern);
            cb.SetColorStroke(BaseColor.BLACK);
            cb.SetLineWidth(2);
            cb.Rectangle(x, y, 200, 200);
            cb.FillStroke();
        }
示例#18
0
        /// <summary>
        /// Renders the object in a document using a <see cref="PdfContentByte"/> by invoking the <see cref="Render(ContentWriter, Vector2D)"/> method.
        /// This method can be overridden in derived classes to specify rendering.
        /// </summary>
        /// <param name="cb">The <see cref="PdfContentByte"/> used for rendering.</param>
        /// <param name="offset">The calculated offset for the rendered item.</param>
        protected internal virtual void Render(PdfContentByte cb, Vector2D offset)
        {
            using (var writer = new ContentWriter(cb))
            {
                var stroke = this as StrokeObject;
                var fill   = this as FillObject;

                bool hasstroke = stroke?.BorderColor.HasValue ?? false;
                bool hasfill   = fill?.FillColor.HasValue ?? false;

                if (hasstroke)
                {
                    cb.SetLineWidth((float)stroke.BorderWidth.Value(UnitsOfMeasure.Points));
                    cb.SetColorStroke(new Color(stroke.BorderColor.Value));
                }
                if (hasfill)
                {
                    cb.SetColorFill(new Color(fill.FillColor.Value));
                }

                Render(writer, offset);

                if (hasstroke && hasfill)
                {
                    if (writer.CloseShape)
                    {
                        cb.ClosePathFillStroke();
                    }
                    else
                    {
                        cb.FillStroke();
                    }
                }
                else if (hasstroke)
                {
                    if (writer.CloseShape)
                    {
                        cb.ClosePathStroke();
                    }
                    else
                    {
                        cb.Stroke();
                    }
                }
                else if (hasfill)
                {
                    cb.Fill();
                }
            }
        }
示例#19
0
        public void RoundRectangle(float xInit, float yInit, float width, float height, float radius = 0, float lineWidth = 1, float opacity = 0, BaseColor boarderColor = null, BaseColor insideColor = null)
        {
            var gs1 = new PdfGState
            {
                FillOpacity = opacity,
            };

            _contentByte.SetGState(gs1);
            _contentByte.SaveState();
            _contentByte.SetColorFill(insideColor ?? BaseColor.White);
            _contentByte.SetLineWidth(lineWidth);
            _contentByte.SetColorStroke(boarderColor ?? BaseColor.Black);
            _contentByte.RoundRectangle(xInit, yInit, width, height, radius);
            _contentByte.FillStroke();
            _contentByte.RestoreState();
        }
        public void Verify_ShadingPatternColor_CanBeCreated()
        {
            var pdfFilePath = TestUtils.GetOutputFileName();
            var stream      = new FileStream(pdfFilePath, FileMode.Create);

            // step 1
            var document = new Document();

            // step 2
            PdfWriter writer = PdfWriter.GetInstance(document, stream);

            // step 3
            document.AddAuthor(TestUtils.Author);
            document.Open();
            // step 4
            PdfContentByte canvas = writer.DirectContent;
            PdfShading     axial  = PdfShading.SimpleAxial(writer, 36, 716, 396,
                                                           788, BaseColor.Orange, BaseColor.Blue
                                                           );

            canvas.PaintShading(axial);
            document.NewPage();
            PdfShading radial = PdfShading.SimpleRadial(writer,
                                                        200, 700, 50, 300, 700, 100,
                                                        new BaseColor(0xFF, 0xF7, 0x94),
                                                        new BaseColor(0xF7, 0x8A, 0x6B),
                                                        false, false
                                                        );

            canvas.PaintShading(radial);

            PdfShadingPattern shading = new PdfShadingPattern(axial);

            colorRectangle(canvas, new ShadingColor(shading), 150, 420, 126, 126);
            canvas.SetShadingFill(shading);
            canvas.Rectangle(300, 420, 126, 126);
            canvas.FillStroke();

            document.Close();
            stream.Dispose();

            TestUtils.VerifyPdfFileIsReadable(pdfFilePath);
        }
示例#21
0
        public void Close(PdfContentByte cb, IDictionary <String, String> css)
        {
            //default is true for both
            String fillValue;
            String strokeValue;

            bool fill   = (!css.TryGetValue("fill", out fillValue) || fillValue == null || !fillValue.Equals("none"));
            bool stroke = (!css.TryGetValue("stroke", out strokeValue) || strokeValue == null || !strokeValue.Equals("none"));

            if (fill && stroke)
            {
                cb.FillStroke();
            }
            else if (fill)
            {
                cb.Fill();
            }
            else if (stroke)
            {
                cb.Stroke();
            }
        }
示例#22
0
// ---------------------------------------------------------------------------

        /**
         * Draws a row of squares.
         * @param canvas the canvas to which the squares have to be drawn
         * @param x      X coordinate to position the row
         * @param y      Y coordinate to position the row
         * @param side   the side of the square
         * @param gutter the space between the squares
         */
        public void CreateSquares(PdfContentByte canvas,
                                  float x, float y, float side, float gutter)
        {
            canvas.SaveState();
            canvas.SetColorStroke(new GrayColor(0.2f));
            canvas.SetColorFill(new GrayColor(0.9f));
            canvas.MoveTo(x, y);
            canvas.LineTo(x + side, y);
            canvas.LineTo(x + side, y + side);
            canvas.LineTo(x, y + side);
            canvas.Stroke();
            x = x + side + gutter;
            canvas.MoveTo(x, y);
            canvas.LineTo(x + side, y);
            canvas.LineTo(x + side, y + side);
            canvas.LineTo(x, y + side);
            canvas.ClosePathStroke();
            x = x + side + gutter;
            canvas.MoveTo(x, y);
            canvas.LineTo(x + side, y);
            canvas.LineTo(x + side, y + side);
            canvas.LineTo(x, y + side);
            canvas.Fill();
            x = x + side + gutter;
            canvas.MoveTo(x, y);
            canvas.LineTo(x + side, y);
            canvas.LineTo(x + side, y + side);
            canvas.LineTo(x, y + side);
            canvas.FillStroke();
            x = x + side + gutter;
            canvas.MoveTo(x, y);
            canvas.LineTo(x + side, y);
            canvas.LineTo(x + side, y + side);
            canvas.LineTo(x, y + side);
            canvas.ClosePathFillStroke();
            canvas.RestoreState();
        }
示例#23
0
 private static void DrawRectangle(PdfContentByte content, Rectangle rectangle)
 {
     content.Rectangle(rectangle.Left, rectangle.Bottom, rectangle.Width, rectangle.Height);
     content.FillStroke();
 }
示例#24
0
 public void fillStroke()
 {
     m_canvas.FillStroke();
 }
示例#25
0
    private static Boolean PrintShape(Shape shape, FrameworkElement relativeTo, PdfContentByte dc)
    {
      var noBorder = Helper.IsNullOrZero(shape.StrokeThickness) || Helper.IsTransparent(shape.Stroke);
      var noBackground = Helper.IsTransparent(shape.Fill);
      if (noBorder && noBackground)
        return true;

      dc.SaveState();

      try
      {
        var clipRect = GetClipRectange(shape, relativeTo);
        if (clipRect != null)
        {
          dc.Rectangle(clipRect.Value.Left, clipRect.Value.Top - clipRect.Value.Height, clipRect.Value.Width, clipRect.Value.Height);
          dc.Clip();
          dc.NewPath();
        }

        dc.SetColorFill(GetBaseColor(shape.Fill));
        dc.SetColorStroke(GetBaseColor(shape.Stroke));
        dc.SetLineWidth(shape.StrokeThickness);
        if (shape.StrokeDashArray != null && shape.StrokeDashArray.Any())
          dc.SetLineDash(shape.StrokeDashArray.Select(p => p * shape.StrokeThickness).ToArray(), 0);

        float left, top;
        if (!GetElementLocation(shape, relativeTo, out left, out top))
          return false;

        var lineGeometry = shape.RenderedGeometry as LineGeometry;
        if (lineGeometry != null)
        {
          var startPoint = shape.RenderedGeometry.Transform.Transform(lineGeometry.StartPoint);
          var endPoint = shape.RenderedGeometry.Transform.Transform(lineGeometry.EndPoint);
          dc.MoveTo(left + startPoint.X, top - startPoint.Y);
          dc.LineTo(left + endPoint.X, top - endPoint.Y);
        }
        var rectangleGeometry = shape.RenderedGeometry as RectangleGeometry;
        if (rectangleGeometry != null)
        {
          if (!rectangleGeometry.Rect.IsNaNOrZeroOrEmpty())
          {
            var bottomLeft = shape.RenderedGeometry.Transform.Transform(rectangleGeometry.Rect.BottomLeft);
            var widthHeight = shape.RenderedGeometry.Transform.Transform(new Point(rectangleGeometry.Rect.Width, rectangleGeometry.Rect.Height));
            dc.Rectangle(left + bottomLeft.X, top - bottomLeft.Y, widthHeight.X, widthHeight.Y);
          }
        }
        var ellipseGeometry = shape.RenderedGeometry as EllipseGeometry;
        if (ellipseGeometry != null)
        {
          var center = shape.RenderedGeometry.Transform.Transform(ellipseGeometry.Center);
          center = new Point(left + center.X, top - center.Y);
          if (Helper.IsNullOrZero(ellipseGeometry.RadiusX) && Helper.IsNullOrZero(ellipseGeometry.RadiusY))
            dc.Circle(center.X, center.Y, 0.01);
          else
          {
            var radius = shape.RenderedGeometry.Transform.Transform(new Point(ellipseGeometry.RadiusX, ellipseGeometry.RadiusY));
            var x1 = (Int32)Math.Max(1, Math.Round(center.X - radius.X));
            var y1 = (Int32)Math.Max(1, Math.Round(center.Y - radius.Y));
            var x2 = (Int32)Math.Max(1, Math.Round(center.X + radius.X));
            var y2 = (Int32)Math.Max(1, Math.Round(center.Y + radius.Y));
            dc.Ellipse(x1, y1, x2, y2);
          }
        }
        var streamGeometry = shape.RenderedGeometry as StreamGeometry;
        if (streamGeometry != null)
        {
          var figures = GeometryDataParser.GetDataFigures(streamGeometry.ToString());
          foreach (var figure in figures)
          {
            if (!figure.Draw(left, top, dc, shape.LayoutTransform))
              break;
          }
        }
        var pathGrometry = shape.RenderedGeometry as PathGeometry;
        if (pathGrometry != null)
        {
          var pathFigure = pathGrometry.Figures.First(p => p != null);
          if (pathFigure != null)
          {
            var points = new List<Point>();
            points.Add(shape.RenderedGeometry.Transform.Transform(pathFigure.StartPoint));

            var lineSegments = pathFigure.Segments.OfType<LineSegment>();
            if (lineSegments != null)
              points.AddRange(lineSegments.Select(p => shape.RenderedGeometry.Transform.Transform(p.Point)));

            var polyLineSegment = pathFigure.Segments.OfType<PolyLineSegment>().FirstOrDefault();
            if (polyLineSegment != null)
              points.AddRange(polyLineSegment.Points.Select(p => shape.RenderedGeometry.Transform.Transform(p)));

            points = points.Select(p => new Point(left + p.X, top - p.Y)).ToList();
            foreach (var point in points)
            {
              if (points.IndexOf(point) == 0)
                dc.MoveTo(point.X, point.Y);
              else
                dc.LineTo(point.X, point.Y);
            }
          }
        }

        if (!noBorder && !noBackground)
          dc.FillStroke();
        else
        {
          if (!noBorder)
            dc.Stroke();
          if (!noBackground)
            dc.Fill();
        }

        return true;
      }
      catch (Exception ex)
      {
        ExceptionHandler.ThrowException(ex);
        return false;
      }
      finally
      {
        dc.RestoreState();
      }
    }
示例#26
0
        public Chap13_form()
        {
            Console.WriteLine("Chapter 13: a form with some text");

            // step 1: creation of a document-object
            Document document = new Document(PageSize.A4, 50, 50, 50, 50);

            try {
                // step 2: we create a writer that listens to the document
                PdfWriter   writer   = PdfWriter.GetInstance(document, new FileStream("Chap13_form.pdf", FileMode.Create));
                PdfAcroForm acroForm = writer.AcroForm;
                // step 3: we open the document
                document.Open();
                // step 4: we add some content
                BaseFont helv     = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
                float    fontSize = 12;
                acroForm.AddSingleLineTextField("name", "your name", helv, fontSize, 171, 800, 350, 820);
                acroForm.AddMultiLineTextField("msg", "Hello iText!\nThis is a Test\nThere are multiple lines in this textfield", helv, fontSize, 171, 730, 350, 790);
                acroForm.AddSingleLinePasswordField("password", "", helv, fontSize, 171, 700, 350, 720);
                acroForm.AddHtmlPostButton("btn", "SUBMIT", "noValue", "Chap13.php", helv, fontSize, 355, 700, 420, 725);
                acroForm.AddResetButton("reset", "RESET", null, helv, fontSize, 430, 700, 495, 725);
                acroForm.AddCheckBox("CB1", "Food", true, 180, 685, 190, 695);
                acroForm.AddCheckBox("CB2", "Drinks", false, 180, 645, 210, 675);
                PdfFormField radiogroup = acroForm.GetRadioGroup("CreditCard", "Visa", true);
                acroForm.AddRadioButton(radiogroup, "Visa", 180, 625, 195, 640);
                acroForm.AddRadioButton(radiogroup, "MasterCard", 200, 625, 215, 640);
                acroForm.AddRadioButton(radiogroup, "American", 220, 625, 235, 640);
                acroForm.AddRadioGroup(radiogroup);
                String[] colors = { "Red", "Green", "Blue" };
                String[,] colorvalues = { { "#FF0000", "Red" }, { "#00FF00", "Green" }, { "#0000FF", "Blue" } };
                acroForm.AddSelectList("list1", colors, "Green", helv, fontSize, 171, 550, 300, 600);
                acroForm.AddSelectList("list2", colorvalues, "#0000FF", helv, fontSize, 315, 550, 450, 600);
                acroForm.AddComboBox("combo1", colors, "Green", true, helv, fontSize, 171, 440, 300, 490);
                acroForm.AddComboBox("combo2", colorvalues, "#0000FE", false, helv, fontSize, 315, 440, 450, 490);
                PdfContentByte cb = new PdfContentByte(null);
                cb.SetRGBColorStroke(0x00, 0x00, 0x00);
                cb.SetRGBColorFill(0xFF, 0x00, 0x00);
                cb.Arc(0, 0, 100, 100, 0, 360);
                cb.FillStroke();
                cb.SetRGBColorStroke(0x00, 0x00, 0x00);
                cb.SetRGBColorFill(0xFF, 0xFF, 0xFF);
                cb.Arc(20, 20, 80, 80, 0, 360);
                cb.FillStroke();
                cb.SetRGBColorStroke(0x00, 0x00, 0x00);
                cb.SetRGBColorFill(0xFF, 0x00, 0x00);
                cb.Arc(40, 40, 60, 60, 0, 360);
                cb.FillStroke();
                cb.SetRGBColorFill(0x00, 0x00, 0x00);
                cb.Arc(48, 48, 52, 52, 0, 360);
                cb.Fill();
                acroForm.AddMap("map", null, "Chap13.php", cb, 171, 300, 271, 400);
                acroForm.AddHiddenField("hidden", "secret");
            }
            catch (DocumentException de)
            {
                Console.Error.WriteLine(de.Message);
            }
            catch (IOException ioe)
            {
                Console.Error.WriteLine(ioe.Message);
            }

            // step 5: close the document
            document.Close();
        }
示例#27
0
        public virtual void DeviceNSpotBasedGradient()
        {
            // step 1
            Document document = new Document(PageSize.A3);
            // step 2
            String    dest_file = DEST_FOLDER + "/device_n_gradient_base.pdf";
            PdfWriter writer    = PdfWriter.GetInstance(document, new FileStream(dest_file, FileMode.Create));

            // step 3
            document.Open();
            // step 4
            PdfContentByte canvas         = writer.DirectContent;
            PdfSpotColor   psc_gray       = new PdfSpotColor("iTextGray", new GrayColor(0f));
            PdfSpotColor   psc_cmyk_yell  = new PdfSpotColor("iTextYellow", new CMYKColor(0f, 0f, 1f, 0f));
            PdfSpotColor   psc_cmyk_magen = new PdfSpotColor("iTextMagenta", new CMYKColor(0f, 1f, 0f, 0f));
            PdfSpotColor   psc_rgb_blue   = new PdfSpotColor("iTextBlue", new BaseColor(0, 0, 255));

            PdfDeviceNColor pdfDeviceNNChannelColor =
                new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue });
            PdfDeviceNColor pdfDeviceNNChannelColor2 =
                new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_magen, psc_cmyk_yell, psc_rgb_blue });

            ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextGray", new GrayColor(0f)), 0.8f), 36, 824, 36, 36);
            ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextYellow", new CMYKColor(0f, 0f, 1f, 0f)), 0.8f), 90, 824,
                           36, 36);
            ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextMagenta", new CMYKColor(0f, 1f, 0f, 0f)), 0.4f), 144, 824,
                           36, 36);
            ColorRectangle(canvas, new SpotColor(new PdfSpotColor("iTextBlue", new BaseColor(0, 0, 255)), 0.7f), 198, 824, 36, 36);

            ColorRectangle(canvas,
                           new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue }),
                                            new float[] { 0, 0.0f, 1 }), 36, 770, 36, 36);
            ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.1f, 0.1f, 1 }), 90, 770, 36, 36);
            ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.2f, 0.2f, 1 }), 144, 770, 36, 36);
            ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.3f, 0.3f, 1 }), 198, 770, 36, 36);
            ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.4f, 0.4f, 1 }), 252, 770, 36, 36);
            ColorRectangle(canvas,
                           new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue, psc_gray }),
                                            new float[] { 0.5f, 0.5f, 1, 0.5f }), 306, 770, 36, 36);
            ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor2, new float[] { 0.6f, 0.1f, 1 }), 360, 770, 36, 36);
            ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.7f, 0.7f, 1 }), 416, 770, 36, 36);
            ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0.8f, 0.8f, 1 }), 470, 770, 36, 36);
            ColorRectangle(canvas,
                           new DeviceNColor(new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue }),
                                            new float[] { 0.9f, 0.9f, 1 }), 524, 770, 36, 36);
            ColorRectangle(canvas, new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 1, 1 }), 578, 770, 36, 36);

            PdfDeviceNColor pdfDeviceNColor = new PdfDeviceNColor(new PdfSpotColor[] { psc_cmyk_yell, psc_cmyk_magen, psc_rgb_blue });

            canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0, 0, 1 }));
            canvas.Rectangle(36, 716, 36, 36);
            canvas.FillStroke();
            canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.1f, 0.1f, 1 }));
            canvas.Rectangle(90, 716, 36, 36);
            canvas.FillStroke();
            canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.2f, 0.2f, 1 }));
            canvas.Rectangle(144, 716, 36, 36);
            canvas.FillStroke();
            canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.3f, 0.3f, 1 }));
            canvas.Rectangle(198, 716, 36, 36);
            canvas.FillStroke();
            canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.4f, 0.4f, 1 }));
            canvas.Rectangle(252, 716, 36, 36);
            canvas.FillStroke();
            canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.5f, 0.5f, 1 }));
            canvas.Rectangle(306, 716, 36, 36);
            canvas.FillStroke();
            canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.6f, 0.1f, 1 }));
            canvas.Rectangle(360, 716, 36, 36);
            canvas.FillStroke();
            canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.7f, 0.7f, 1 }));
            canvas.Rectangle(416, 716, 36, 36);
            canvas.FillStroke();
            canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.8f, 0.8f, 1 }));
            canvas.Rectangle(470, 716, 36, 36);
            canvas.FillStroke();
            canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 0.9f, 0.9f, 1 }));
            canvas.Rectangle(524, 716, 36, 36);
            canvas.FillStroke();
            canvas.SetColorFill(new DeviceNColor(pdfDeviceNColor, new float[] { 1, 1, 1 }));
            canvas.Rectangle(578, 716, 36, 36);
            canvas.FillStroke();

            canvas.SaveState();
            canvas.Rectangle(418, 412, -329, 189);
            canvas.Clip();
            canvas.NewPath();
            canvas.SaveState();
            canvas.ConcatCTM(329f, 0f, 0f, -329f, 89f, 506.5f);
            canvas.PaintShading(PdfShading.SimpleAxial(writer, 0, 0, 1, 0,
                                                       new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 1, 0 }),
                                                       new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 0, 0, 1 })));
            canvas.RestoreState();
            canvas.RestoreState();
            canvas.SetColorStroke(new DeviceNColor(pdfDeviceNNChannelColor, new float[] { 1, 1, 1 }));
            canvas.Rectangle(418, 412, -329, 189);
            canvas.Stroke();

            // step 5
            document.Close();

            CompareTool compareTool = new CompareTool();
            String      error       = compareTool.Compare(dest_file, TEST_RESOURCES_PATH + "cmp_device_n_gradient_base.pdf", DEST_FOLDER, "diff_");

            if (error != null)
            {
                Assert.Fail(error);
            }
        }
示例#28
0
 protected static void FinishShape(PdfContentByte contentByte)
 {
     contentByte.FillStroke();
     contentByte.ResetRGBColorFill();
 }
示例#29
0
// ===========================================================================
        public virtual void Write(Stream stream)
        {
            // step 1
            using (Document document = new Document()) {
                // step 2
                PdfWriter writer = PdfWriter.GetInstance(document, stream);
                // step 3
                document.Open();
                // step 4
                PdfContentByte canvas = writer.DirectContent;
                // RGB Colors
                ColorRectangle(canvas, new BaseColor(0x00, 0x00, 0x00),
                               36, 770, 36, 36
                               );
                ColorRectangle(canvas, new BaseColor(0x00, 0x00, 0xFF),
                               90, 770, 36, 36
                               );
                ColorRectangle(canvas, new BaseColor(0x00, 0xFF, 0x00),
                               144, 770, 36, 36
                               );
                ColorRectangle(canvas, new BaseColor(0xFF, 0x00, 0x00),
                               198, 770, 36, 36
                               );
                ColorRectangle(canvas, new BaseColor(0f, 1f, 1f), 252, 770, 36, 36);
                ColorRectangle(canvas, new BaseColor(1f, 0f, 1f), 306, 770, 36, 36);
                ColorRectangle(canvas, new BaseColor(1f, 1f, 0f), 360, 770, 36, 36);
                ColorRectangle(canvas, BaseColor.BLACK, 416, 770, 36, 36);
                ColorRectangle(canvas, BaseColor.LIGHT_GRAY, 470, 770, 36, 36);
                // CMYK Colors
                ColorRectangle(canvas, new CMYKColor(0x00, 0x00, 0x00, 0x00),
                               36, 716, 36, 36
                               );
                ColorRectangle(canvas, new CMYKColor(0x00, 0x00, 0xFF, 0x00),
                               90, 716, 36, 36
                               );
                ColorRectangle(canvas, new CMYKColor(0x00, 0x00, 0xFF, 0xFF),
                               144, 716, 36, 36
                               );
                ColorRectangle(canvas, new CMYKColor(0x00, 0xFF, 0x00, 0x00),
                               198, 716, 36, 36
                               );
                ColorRectangle(canvas, new CMYKColor(0f, 1f, 0f, 0.5f),
                               252, 716, 36, 36
                               );
                ColorRectangle(canvas, new CMYKColor(1f, 0f, 0f, 0f),
                               306, 716, 36, 36
                               );
                ColorRectangle(canvas, new CMYKColor(1f, 0f, 0f, 0.5f),
                               360, 716, 36, 36
                               );
                ColorRectangle(canvas, new CMYKColor(1f, 0f, 0f, 1f),
                               416, 716, 36, 36
                               );
                ColorRectangle(canvas, new CMYKColor(0f, 0f, 0f, 1f),
                               470, 716, 36, 36
                               );
                // Gray color
                ColorRectangle(canvas, new GrayColor(0x20), 36, 662, 36, 36);
                ColorRectangle(canvas, new GrayColor(0x40), 90, 662, 36, 36);
                ColorRectangle(canvas, new GrayColor(0x60), 144, 662, 36, 36);
                ColorRectangle(canvas, new GrayColor(0.5f), 198, 662, 36, 36);
                ColorRectangle(canvas, new GrayColor(0.625f), 252, 662, 36, 36);
                ColorRectangle(canvas, new GrayColor(0.75f), 306, 662, 36, 36);
                ColorRectangle(canvas, new GrayColor(0.825f), 360, 662, 36, 36);
                ColorRectangle(canvas, GrayColor.GRAYBLACK, 416, 662, 36, 36);
                ColorRectangle(canvas, GrayColor.GRAYWHITE, 470, 662, 36, 36);
                // Alternative ways to color the rectangle
                canvas.SetRGBColorFill(0x00, 0x80, 0x80);
                canvas.Rectangle(36, 608, 36, 36);
                canvas.FillStroke();
                canvas.SetRGBColorFillF(0.5f, 0.25f, 0.60f);
                canvas.Rectangle(90, 608, 36, 36);
                canvas.FillStroke();
                canvas.SetGrayFill(0.5f);
                canvas.Rectangle(144, 608, 36, 36);
                canvas.FillStroke();
                canvas.SetCMYKColorFill(0xFF, 0xFF, 0x00, 0x80);
                canvas.Rectangle(198, 608, 36, 36);
                canvas.FillStroke();
                canvas.SetCMYKColorFillF(0f, 1f, 1f, 0.5f);
                canvas.Rectangle(252, 608, 36, 36);
                canvas.FillStroke();
            }
        }
示例#30
0
// ===========================================================================
        public override void Write(Stream stream)
        {
            // step 1
            using (Document document = new Document()) {
                // step 2
                PdfWriter writer = PdfWriter.GetInstance(document, stream);
                // step 3
                document.Open();
                // step 4
                PdfContentByte canvas = writer.DirectContent;
                PdfSpotColor   psc_g  = new PdfSpotColor(
                    "iTextSpotColorGray", new GrayColor(0.9f)
                    );
                PdfSpotColor psc_rgb = new PdfSpotColor(
                    "iTextSpotColorRGB", new BaseColor(0x64, 0x95, 0xed)
                    );
                PdfSpotColor psc_cmyk = new PdfSpotColor(
                    "iTextSpotColorCMYK", new CMYKColor(0.3f, .9f, .3f, .1f)
                    );
                ColorRectangle(canvas, new SpotColor(psc_g, 0.5f),
                               36, 770, 36, 36
                               );
                ColorRectangle(canvas, new SpotColor(psc_rgb, 0.1f),
                               90, 770, 36, 36
                               );
                ColorRectangle(canvas, new SpotColor(psc_rgb, 0.2f),
                               144, 770, 36, 36
                               );
                ColorRectangle(canvas, new SpotColor(psc_rgb, 0.3f),
                               198, 770, 36, 36
                               );
                ColorRectangle(canvas, new SpotColor(psc_rgb, 0.4f),
                               252, 770, 36, 36
                               );
                ColorRectangle(canvas, new SpotColor(psc_rgb, 0.5f),
                               306, 770, 36, 36
                               );
                ColorRectangle(canvas, new SpotColor(psc_rgb, 0.6f),
                               360, 770, 36, 36
                               );
                ColorRectangle(canvas, new SpotColor(psc_rgb, 0.7f),
                               416, 770, 36, 36
                               );
                ColorRectangle(canvas, new SpotColor(psc_cmyk, 0.25f),
                               470, 770, 36, 36
                               );
                canvas.SetColorFill(psc_g, 0.5f);
                canvas.Rectangle(36, 716, 36, 36);
                canvas.FillStroke();
                canvas.SetColorFill(psc_g, 0.9f);
                canvas.Rectangle(90, 716, 36, 36);
                canvas.FillStroke();
                canvas.SetColorFill(psc_rgb, 0.5f);
                canvas.Rectangle(144, 716, 36, 36);
                canvas.FillStroke();
                canvas.SetColorFill(psc_rgb, 0.9f);
                canvas.Rectangle(198, 716, 36, 36);
                canvas.FillStroke();
                canvas.SetColorFill(psc_cmyk, 0.5f);
                canvas.Rectangle(252, 716, 36, 36);
                canvas.FillStroke();
                canvas.SetColorFill(psc_cmyk, 0.9f);
                canvas.Rectangle(306, 716, 36, 36);
                canvas.FillStroke();
            }
        }