示例#1
0
 public void Arc(Vector1D x1, Vector1D y1, Vector1D x2, Vector1D y2, float startAngle, float extentAngle)
 {
     cb.Arc(
         (float)x1.Value(UnitsOfMeasure.Points),
         (float)y1.Value(UnitsOfMeasure.Points),
         (float)x2.Value(UnitsOfMeasure.Points),
         (float)y2.Value(UnitsOfMeasure.Points), startAngle, extentAngle);
 }
示例#2
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
                    );
            }
        }
示例#3
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++;
            }
        }
示例#4
0
        public override void DrawArc(LT lineType, Vector2D ptCenter, double radius, double angleBeg, double angleEnd)
        {
            _cb.SetLineWidth(0.0f);
            _cb.SetColorStroke(LineTypeToBaseColor(lineType));

            _cb.Arc(
                DX(ptCenter.X - radius), DY(ptCenter.Y - radius)        // Bottom Left(x,y)
                , DX(ptCenter.X + radius), DY(ptCenter.Y + radius)      // Top Right(x,y)
                , -(float)angleBeg                                      // Start Angle
                , -(float)(angleEnd - angleBeg)                         // Extent
                );
            _cb.Stroke();
        }
示例#5
0
        private void DrawArc(PdfContentByte cb, IList <float> numbers)
        {
            EllipseArc ellipse = EllipseArc.CreateEllipseArc(numbers[7], numbers[8], numbers[5], numbers[6], numbers[0], numbers[1], numbers[4], numbers[3]);

            cb.SetColorFill(BaseColor.ORANGE);
            cb.Rectangle(numbers[7], numbers[8], 2, 2); //p1
            cb.Fill();
            cb.SetColorFill(BaseColor.GREEN);
            cb.Rectangle(numbers[5], numbers[6], 2, 2); //p2
            cb.Fill();

            cb.Arc(ellipse.Cx - numbers[0], ellipse.Cy - numbers[1], ellipse.Cx + numbers[0], ellipse.Cy + numbers[1],
                   ellipse.StartAng, ellipse.Extend);
        }
示例#6
0
        public void ReadAll()
        {
            if (meta.ReadInt() != unchecked ((int)0x9AC6CDD7))
            {
                throw new DocumentException(MessageLocalization.GetComposedMessage("not.a.placeable.windows.metafile"));
            }
            meta.ReadWord();
            left           = meta.ReadShort();
            top            = meta.ReadShort();
            right          = meta.ReadShort();
            bottom         = meta.ReadShort();
            inch           = meta.ReadWord();
            state.ScalingX = (float)(right - left) / (float)inch * 72f;
            state.ScalingY = (float)(bottom - top) / (float)inch * 72f;
            state.OffsetWx = left;
            state.OffsetWy = top;
            state.ExtentWx = right - left;
            state.ExtentWy = bottom - top;
            meta.ReadInt();
            meta.ReadWord();
            meta.Skip(18);

            int tsize;
            int function;

            cb.SetLineCap(1);
            cb.SetLineJoin(1);
            for (;;)
            {
                int lenMarker = meta.Length;
                tsize = meta.ReadInt();
                if (tsize < 3)
                {
                    break;
                }
                function = meta.ReadWord();
                switch (function)
                {
                case 0:
                    break;

                case META_CREATEPALETTE:
                case META_CREATEREGION:
                case META_DIBCREATEPATTERNBRUSH:
                    state.AddMetaObject(new MetaObject());
                    break;

                case META_CREATEPENINDIRECT:
                {
                    MetaPen pen = new MetaPen();
                    pen.Init(meta);
                    state.AddMetaObject(pen);
                    break;
                }

                case META_CREATEBRUSHINDIRECT:
                {
                    MetaBrush brush = new MetaBrush();
                    brush.Init(meta);
                    state.AddMetaObject(brush);
                    break;
                }

                case META_CREATEFONTINDIRECT:
                {
                    MetaFont font = new MetaFont();
                    font.Init(meta);
                    state.AddMetaObject(font);
                    break;
                }

                case META_SELECTOBJECT:
                {
                    int idx = meta.ReadWord();
                    state.SelectMetaObject(idx, cb);
                    break;
                }

                case META_DELETEOBJECT:
                {
                    int idx = meta.ReadWord();
                    state.DeleteMetaObject(idx);
                    break;
                }

                case META_SAVEDC:
                    state.SaveState(cb);
                    break;

                case META_RESTOREDC:
                {
                    int idx = meta.ReadShort();
                    state.RestoreState(idx, cb);
                    break;
                }

                case META_SETWINDOWORG:
                    state.OffsetWy = meta.ReadShort();
                    state.OffsetWx = meta.ReadShort();
                    break;

                case META_SETWINDOWEXT:
                    state.ExtentWy = meta.ReadShort();
                    state.ExtentWx = meta.ReadShort();
                    break;

                case META_MOVETO:
                {
                    int y = meta.ReadShort();
                    System.Drawing.Point p = new System.Drawing.Point(meta.ReadShort(), y);
                    state.CurrentPoint = p;
                    break;
                }

                case META_LINETO:
                {
                    int y = meta.ReadShort();
                    int x = meta.ReadShort();
                    System.Drawing.Point p = state.CurrentPoint;
                    cb.MoveTo(state.TransformX(p.X), state.TransformY(p.Y));
                    cb.LineTo(state.TransformX(x), state.TransformY(y));
                    cb.Stroke();
                    state.CurrentPoint = new System.Drawing.Point(x, y);
                    break;
                }

                case META_POLYLINE:
                {
                    state.LineJoinPolygon = cb;
                    int len = meta.ReadWord();
                    int x   = meta.ReadShort();
                    int y   = meta.ReadShort();
                    cb.MoveTo(state.TransformX(x), state.TransformY(y));
                    for (int k = 1; k < len; ++k)
                    {
                        x = meta.ReadShort();
                        y = meta.ReadShort();
                        cb.LineTo(state.TransformX(x), state.TransformY(y));
                    }
                    cb.Stroke();
                    break;
                }

                case META_POLYGON:
                {
                    if (IsNullStrokeFill(false))
                    {
                        break;
                    }
                    int len = meta.ReadWord();
                    int sx  = meta.ReadShort();
                    int sy  = meta.ReadShort();
                    cb.MoveTo(state.TransformX(sx), state.TransformY(sy));
                    for (int k = 1; k < len; ++k)
                    {
                        int x = meta.ReadShort();
                        int y = meta.ReadShort();
                        cb.LineTo(state.TransformX(x), state.TransformY(y));
                    }
                    cb.LineTo(state.TransformX(sx), state.TransformY(sy));
                    StrokeAndFill();
                    break;
                }

                case META_POLYPOLYGON:
                {
                    if (IsNullStrokeFill(false))
                    {
                        break;
                    }
                    int   numPoly = meta.ReadWord();
                    int[] lens    = new int[numPoly];
                    for (int k = 0; k < lens.Length; ++k)
                    {
                        lens[k] = meta.ReadWord();
                    }
                    for (int j = 0; j < lens.Length; ++j)
                    {
                        int len = lens[j];
                        int sx  = meta.ReadShort();
                        int sy  = meta.ReadShort();
                        cb.MoveTo(state.TransformX(sx), state.TransformY(sy));
                        for (int k = 1; k < len; ++k)
                        {
                            int x = meta.ReadShort();
                            int y = meta.ReadShort();
                            cb.LineTo(state.TransformX(x), state.TransformY(y));
                        }
                        cb.LineTo(state.TransformX(sx), state.TransformY(sy));
                    }
                    StrokeAndFill();
                    break;
                }

                case META_ELLIPSE:
                {
                    if (IsNullStrokeFill(state.LineNeutral))
                    {
                        break;
                    }
                    int b = meta.ReadShort();
                    int r = meta.ReadShort();
                    int t = meta.ReadShort();
                    int l = meta.ReadShort();
                    cb.Arc(state.TransformX(l), state.TransformY(b), state.TransformX(r), state.TransformY(t), 0, 360);
                    StrokeAndFill();
                    break;
                }

                case META_ARC:
                {
                    if (IsNullStrokeFill(state.LineNeutral))
                    {
                        break;
                    }
                    float yend   = state.TransformY(meta.ReadShort());
                    float xend   = state.TransformX(meta.ReadShort());
                    float ystart = state.TransformY(meta.ReadShort());
                    float xstart = state.TransformX(meta.ReadShort());
                    float b      = state.TransformY(meta.ReadShort());
                    float r      = state.TransformX(meta.ReadShort());
                    float t      = state.TransformY(meta.ReadShort());
                    float l      = state.TransformX(meta.ReadShort());
                    float cx     = (r + l) / 2;
                    float cy     = (t + b) / 2;
                    float arc1   = GetArc(cx, cy, xstart, ystart);
                    float arc2   = GetArc(cx, cy, xend, yend);
                    arc2 -= arc1;
                    if (arc2 <= 0)
                    {
                        arc2 += 360;
                    }
                    cb.Arc(l, b, r, t, arc1, arc2);
                    cb.Stroke();
                    break;
                }

                case META_PIE:
                {
                    if (IsNullStrokeFill(state.LineNeutral))
                    {
                        break;
                    }
                    float yend   = state.TransformY(meta.ReadShort());
                    float xend   = state.TransformX(meta.ReadShort());
                    float ystart = state.TransformY(meta.ReadShort());
                    float xstart = state.TransformX(meta.ReadShort());
                    float b      = state.TransformY(meta.ReadShort());
                    float r      = state.TransformX(meta.ReadShort());
                    float t      = state.TransformY(meta.ReadShort());
                    float l      = state.TransformX(meta.ReadShort());
                    float cx     = (r + l) / 2;
                    float cy     = (t + b) / 2;
                    float arc1   = GetArc(cx, cy, xstart, ystart);
                    float arc2   = GetArc(cx, cy, xend, yend);
                    arc2 -= arc1;
                    if (arc2 <= 0)
                    {
                        arc2 += 360;
                    }
                    List <float[]> ar = PdfContentByte.BezierArc(l, b, r, t, arc1, arc2);
                    if (ar.Count == 0)
                    {
                        break;
                    }
                    float[] pt = ar[0];
                    cb.MoveTo(cx, cy);
                    cb.LineTo(pt[0], pt[1]);
                    for (int k = 0; k < ar.Count; ++k)
                    {
                        pt = ar[k];
                        cb.CurveTo(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);
                    }
                    cb.LineTo(cx, cy);
                    StrokeAndFill();
                    break;
                }

                case META_CHORD:
                {
                    if (IsNullStrokeFill(state.LineNeutral))
                    {
                        break;
                    }
                    float yend   = state.TransformY(meta.ReadShort());
                    float xend   = state.TransformX(meta.ReadShort());
                    float ystart = state.TransformY(meta.ReadShort());
                    float xstart = state.TransformX(meta.ReadShort());
                    float b      = state.TransformY(meta.ReadShort());
                    float r      = state.TransformX(meta.ReadShort());
                    float t      = state.TransformY(meta.ReadShort());
                    float l      = state.TransformX(meta.ReadShort());
                    float cx     = (r + l) / 2;
                    float cy     = (t + b) / 2;
                    float arc1   = GetArc(cx, cy, xstart, ystart);
                    float arc2   = GetArc(cx, cy, xend, yend);
                    arc2 -= arc1;
                    if (arc2 <= 0)
                    {
                        arc2 += 360;
                    }
                    List <float[]> ar = PdfContentByte.BezierArc(l, b, r, t, arc1, arc2);
                    if (ar.Count == 0)
                    {
                        break;
                    }
                    float[] pt = ar[0];
                    cx = pt[0];
                    cy = pt[1];
                    cb.MoveTo(cx, cy);
                    for (int k = 0; k < ar.Count; ++k)
                    {
                        pt = ar[k];
                        cb.CurveTo(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);
                    }
                    cb.LineTo(cx, cy);
                    StrokeAndFill();
                    break;
                }

                case META_RECTANGLE:
                {
                    if (IsNullStrokeFill(true))
                    {
                        break;
                    }
                    float b = state.TransformY(meta.ReadShort());
                    float r = state.TransformX(meta.ReadShort());
                    float t = state.TransformY(meta.ReadShort());
                    float l = state.TransformX(meta.ReadShort());
                    cb.Rectangle(l, b, r - l, t - b);
                    StrokeAndFill();
                    break;
                }

                case META_ROUNDRECT:
                {
                    if (IsNullStrokeFill(true))
                    {
                        break;
                    }
                    float h = state.TransformY(0) - state.TransformY(meta.ReadShort());
                    float w = state.TransformX(meta.ReadShort()) - state.TransformX(0);
                    float b = state.TransformY(meta.ReadShort());
                    float r = state.TransformX(meta.ReadShort());
                    float t = state.TransformY(meta.ReadShort());
                    float l = state.TransformX(meta.ReadShort());
                    cb.RoundRectangle(l, b, r - l, t - b, (h + w) / 4);
                    StrokeAndFill();
                    break;
                }

                case META_INTERSECTCLIPRECT:
                {
                    float b = state.TransformY(meta.ReadShort());
                    float r = state.TransformX(meta.ReadShort());
                    float t = state.TransformY(meta.ReadShort());
                    float l = state.TransformX(meta.ReadShort());
                    cb.Rectangle(l, b, r - l, t - b);
                    cb.EoClip();
                    cb.NewPath();
                    break;
                }

                case META_EXTTEXTOUT:
                {
                    int y     = meta.ReadShort();
                    int x     = meta.ReadShort();
                    int count = meta.ReadWord();
                    int flag  = meta.ReadWord();
                    int x1    = 0;
                    int y1    = 0;
                    int x2    = 0;
                    int y2    = 0;
                    if ((flag & (MetaFont.ETO_CLIPPED | MetaFont.ETO_OPAQUE)) != 0)
                    {
                        x1 = meta.ReadShort();
                        y1 = meta.ReadShort();
                        x2 = meta.ReadShort();
                        y2 = meta.ReadShort();
                    }
                    byte[] text = new byte[count];
                    int    k;
                    for (k = 0; k < count; ++k)
                    {
                        byte c = (byte)meta.ReadByte();
                        if (c == 0)
                        {
                            break;
                        }
                        text[k] = c;
                    }
                    string s;
                    try {
                        s = System.Text.Encoding.GetEncoding(1252).GetString(text, 0, k);
                    }
                    catch  {
                        s = System.Text.ASCIIEncoding.ASCII.GetString(text, 0, k);
                    }
                    OutputText(x, y, flag, x1, y1, x2, y2, s);
                    break;
                }

                case META_TEXTOUT:
                {
                    int    count = meta.ReadWord();
                    byte[] text  = new byte[count];
                    int    k;
                    for (k = 0; k < count; ++k)
                    {
                        byte c = (byte)meta.ReadByte();
                        if (c == 0)
                        {
                            break;
                        }
                        text[k] = c;
                    }
                    string s;
                    try {
                        s = System.Text.Encoding.GetEncoding(1252).GetString(text, 0, k);
                    }
                    catch {
                        s = System.Text.ASCIIEncoding.ASCII.GetString(text, 0, k);
                    }
                    count = (count + 1) & 0xfffe;
                    meta.Skip(count - k);
                    int y = meta.ReadShort();
                    int x = meta.ReadShort();
                    OutputText(x, y, 0, 0, 0, 0, 0, s);
                    break;
                }

                case META_SETBKCOLOR:
                    state.CurrentBackgroundColor = meta.ReadColor();
                    break;

                case META_SETTEXTCOLOR:
                    state.CurrentTextColor = meta.ReadColor();
                    break;

                case META_SETTEXTALIGN:
                    state.TextAlign = meta.ReadWord();
                    break;

                case META_SETBKMODE:
                    state.BackgroundMode = meta.ReadWord();
                    break;

                case META_SETPOLYFILLMODE:
                    state.PolyFillMode = meta.ReadWord();
                    break;

                case META_SETPIXEL:
                {
                    BaseColor color = meta.ReadColor();
                    int       y     = meta.ReadShort();
                    int       x     = meta.ReadShort();
                    cb.SaveState();
                    cb.SetColorFill(color);
                    cb.Rectangle(state.TransformX(x), state.TransformY(y), .2f, .2f);
                    cb.Fill();
                    cb.RestoreState();
                    break;
                }

                case META_DIBSTRETCHBLT:
                case META_STRETCHDIB: {
                    int rop = meta.ReadInt();
                    if (function == META_STRETCHDIB)
                    {
                        /*int usage = */ meta.ReadWord();
                    }
                    int    srcHeight  = meta.ReadShort();
                    int    srcWidth   = meta.ReadShort();
                    int    ySrc       = meta.ReadShort();
                    int    xSrc       = meta.ReadShort();
                    float  destHeight = state.TransformY(meta.ReadShort()) - state.TransformY(0);
                    float  destWidth  = state.TransformX(meta.ReadShort()) - state.TransformX(0);
                    float  yDest      = state.TransformY(meta.ReadShort());
                    float  xDest      = state.TransformX(meta.ReadShort());
                    byte[] b          = new byte[(tsize * 2) - (meta.Length - lenMarker)];
                    for (int k = 0; k < b.Length; ++k)
                    {
                        b[k] = (byte)meta.ReadByte();
                    }
                    try {
                        MemoryStream inb = new MemoryStream(b);
                        Image        bmp = BmpImage.GetImage(inb, true, b.Length);
                        cb.SaveState();
                        cb.Rectangle(xDest, yDest, destWidth, destHeight);
                        cb.Clip();
                        cb.NewPath();
                        bmp.ScaleAbsolute(destWidth * bmp.Width / srcWidth, -destHeight * bmp.Height / srcHeight);
                        bmp.SetAbsolutePosition(xDest - destWidth * xSrc / srcWidth, yDest + destHeight * ySrc / srcHeight - bmp.ScaledHeight);
                        cb.AddImage(bmp);
                        cb.RestoreState();
                    }
                    catch {
                        // empty on purpose
                    }
                    break;
                }
                }
                meta.Skip((tsize * 2) - (meta.Length - lenMarker));
            }
            state.Cleanup(cb);
        }
示例#7
0
    public static void DrawPieChart(this PdfContentByte canvas,
                                    PieChart chart,
                                    float x0,
                                    float y0,
                                    float r          = 50f,
                                    Font font        = null,
                                    bool showCaption = true)
    {
        if (chart.Values.Length != chart.Captions.Length)
        {
            return;
        }

        if (font == null)
        {
            font = FontFactory.GetFont(FontFactory.TIMES, 8);
        }

        canvas.SetLineWidth(0f);

        double _x1, _y1, _x2, _y2;
        float  x1, y1, x2, y2;

        canvas.SetLineWidth(1f);
        float cRadius = (float)(r + 0.5);

        canvas.Circle(x0, y0, cRadius);
        canvas.SetColorStroke(BaseColor.GRAY);
        canvas.Stroke();

        canvas.SetLineWidth(0f);
        float rectX1 = x0 - r;
        float rectY1 = y0 - r;

        float xPoint = x0 + r;
        float yPoint = y0 + r;

        //canvas.Rectangle(rectX1, rectY1, 2 * r, 2 * r);
        //canvas.Stroke();

        double _startAngle = 0;
        double _endAngle   = 0;

        float startAngle = 0;
        float endAngle   = 0;

        float  captionY = y0 + (chart.Values.Length - 1) * 6;
        double _percentage;
        string percentage;

        for (int counter = 0; counter < chart.Values.Length; counter++)
        {
            if (chart.TotalValues > 0)
            {
                _percentage = chart.Angles[counter] * 100 / 360;
            }
            else
            {
                _percentage = 0;
            }

            if (showCaption)
            {
                //captions from here
                canvas.SetColorStroke(chart.ChartColors[counter]);
                canvas.SetColorFill(chart.ChartColors[counter]);
                canvas.Rectangle(x0 + r + 10, captionY, 7, 7);
                canvas.ClosePathFillStroke();

                percentage = string.Format("{0:N}", _percentage);
                ColumnText text2  = new ColumnText(canvas);
                Phrase     phrase = new Phrase(string.Format("{0} ({1}%)", chart.Captions[counter], percentage), font);
                text2.SetSimpleColumn(phrase, x0 + r + 20, captionY, x0 + r + 200, captionY, 0f, 0);
                text2.Go();

                captionY -= 12;
                if (_percentage == 0)
                {
                    continue;
                }
                //end of caption
            }

            if (chart.TotalValues <= 0)
            {
                continue;
            }

            if (_percentage <= 50)
            {
                //get coordinate on circle
                _x1 = x0 + r * Math.Cos(_startAngle * Math.PI / 180);
                _y1 = y0 + r * Math.Sin(_startAngle * Math.PI / 180);
                x1  = (float)_x1;
                y1  = (float)_y1;

                _endAngle += chart.Angles[counter];
                _x2        = x0 + r * Math.Cos(_endAngle * Math.PI / 180);
                _y2        = y0 + r * Math.Sin(_endAngle * Math.PI / 180);
                x2         = (float)_x2;
                y2         = (float)_y2;

                startAngle = (float)_startAngle;
                endAngle   = (float)_endAngle;

                //set the colors to be used
                canvas.SetColorStroke(chart.ChartColors[counter]);
                canvas.SetColorFill(chart.ChartColors[counter]);

                //draw the triangle within the circle
                canvas.MoveTo(x0, y0);
                canvas.LineTo(x1, y1);
                canvas.LineTo(x2, y2);
                canvas.LineTo(x0, y0);
                canvas.ClosePathFillStroke();
                //draw the arc
                canvas.Arc(rectX1, rectY1, xPoint, yPoint, startAngle, (float)chart.Angles[counter]);
                canvas.ClosePathFillStroke();
                _startAngle += chart.Angles[counter];
            }
            else
            {
                //DO THE FIRST PART
                //get coordinate on circle
                _x1 = x0 + r * Math.Cos(_startAngle * Math.PI / 180);
                _y1 = y0 + r * Math.Sin(_startAngle * Math.PI / 180);
                x1  = (float)_x1;
                y1  = (float)_y1;

                _endAngle += 180;
                _x2        = x0 + r * Math.Cos(_endAngle * Math.PI / 180);
                _y2        = y0 + r * Math.Sin(_endAngle * Math.PI / 180);
                x2         = (float)_x2;
                y2         = (float)_y2;

                startAngle = (float)_startAngle;
                endAngle   = (float)_endAngle;

                //set the colors to be used
                canvas.SetColorStroke(chart.ChartColors[counter]);
                canvas.SetColorFill(chart.ChartColors[counter]);

                //draw the triangle within the circle
                canvas.MoveTo(x0, y0);
                canvas.LineTo(x1, y1);
                canvas.LineTo(x2, y2);
                canvas.LineTo(x0, y0);
                canvas.ClosePathFillStroke();
                //draw the arc
                canvas.Arc(rectX1, rectY1, xPoint, yPoint, startAngle, 180);
                canvas.ClosePathFillStroke();

                //DO THE SECOND PART
                //get coordinate on circle
                _x1 = x0 + r * Math.Cos((_startAngle + 180) * Math.PI / 180);
                _y1 = y0 + r * Math.Sin((_startAngle + 180) * Math.PI / 180);
                x1  = (float)_x1;
                y1  = (float)_y1;

                _endAngle += chart.Angles[counter] - 180;
                _x2        = x0 + r * Math.Cos(_endAngle * Math.PI / 180);
                _y2        = y0 + r * Math.Sin(_endAngle * Math.PI / 180);
                x2         = (float)_x2;
                y2         = (float)_y2;

                startAngle = (float)_startAngle;
                endAngle   = (float)_endAngle;

                //set the colors to be used
                canvas.SetColorStroke(chart.ChartColors[counter]);
                canvas.SetColorFill(chart.ChartColors[counter]);

                //draw the triangle within the circle
                canvas.MoveTo(x0, y0);
                canvas.LineTo(x1, y1);
                canvas.LineTo(x2, y2);
                canvas.LineTo(x0, y0);
                canvas.ClosePathFillStroke();
                //draw the arc
                canvas.Arc(rectX1, rectY1, xPoint, yPoint, startAngle + 180, (float)(chart.Angles[counter] - 180));
                canvas.ClosePathFillStroke();

                _startAngle += chart.Angles[counter];
            }
        }
    }
示例#8
0
        public static void PageShapes(Document pdf, PdfWriter writer)
        {
            PdfContentByte cb = writer.DirectContent;


            // LINES
            var title = new Paragraph("Lines", new Font(Font.HELVETICA, 20, Font.BOLD + Font.UNDERLINE));

            pdf.Add(title);


            cb.SetLineWidth(5);
            cb.SetColorStroke(new BaseColor(0, 140, 180));

            cb.MoveTo(40f, InverseY(120f));
            cb.LineTo(200f, InverseY(120f));
            cb.Stroke();

            cb.SetColorStroke(new BaseColor(10, 180, 80));
            cb.SetLineDash(20f, 10f);
            cb.MoveTo(40f, InverseY(140f));
            cb.LineTo(200f, InverseY(140f));

            cb.Stroke();

            // Reset
            cb.SetLineWidth(1);
            cb.SetLineDash(0);
            cb.SetColorStroke(new BaseColor(0, 0, 0));

            // SHAPES
            ColumnText ct     = new ColumnText(cb);
            Phrase     ctitle = new Phrase("Shapes", new Font(Font.HELVETICA, 20, Font.BOLD + Font.UNDERLINE));

            ct.SetSimpleColumn(ctitle, 40f, 0, 580, InverseY(170f), 15, Element.ALIGN_LEFT);
            //lower-left-x
            //lower-left-y
            //upper-right-x(llx + width)
            //upper-right-y(lly + height)
            //leading(The amount of blank space between lines of print)
            ct.Go();

            //title = new Paragraph("Shapes", new Font(Font.HELVETICA, 20, Font.BOLD + Font.UNDERLINE));
            //pdf.Add(title);


            cb.Rectangle(40f, InverseY(200f), 120f, -50f);
            cb.Stroke();

            cb.SetColorStroke(BaseColor.Red);
            cb.Circle(200f, InverseY(230f), 30f);
            cb.Stroke();

            cb.SaveState();
            {
                PdfGState gs = new PdfGState();
                gs.FillOpacity = 0.5f;
                cb.SetGState(gs);
                cb.SetColorFill(BaseColor.Green);
                cb.Circle(220f, InverseY(240f), 30f);
                cb.Fill();
            }
            cb.RestoreState();

            cb.SetColorStroke(BaseColor.Blue);
            cb.Arc(300f, InverseY(220f), 360f, InverseY(280f), 45, 270);
            cb.Stroke();
            //
        }
        public void ReadAll()
        {
            if (Meta.ReadInt() != unchecked ((int)0x9AC6CDD7))
            {
                throw new DocumentException("Not a placeable windows metafile");
            }
            Meta.ReadWord();
            _left           = Meta.ReadShort();
            _top            = Meta.ReadShort();
            _right          = Meta.ReadShort();
            _bottom         = Meta.ReadShort();
            _inch           = Meta.ReadWord();
            _state.ScalingX = (_right - _left) / (float)_inch * 72f;
            _state.ScalingY = (_bottom - _top) / (float)_inch * 72f;
            _state.OffsetWx = _left;
            _state.OffsetWy = _top;
            _state.ExtentWx = _right - _left;
            _state.ExtentWy = _bottom - _top;
            Meta.ReadInt();
            Meta.ReadWord();
            Meta.Skip(18);

            int tsize;
            int function;

            Cb.SetLineCap(1);
            Cb.SetLineJoin(1);
            for (; ;)
            {
                var lenMarker = Meta.Length;
                tsize = Meta.ReadInt();
                if (tsize < 3)
                {
                    break;
                }

                function = Meta.ReadWord();
                switch (function)
                {
                case 0:
                    break;

                case META_CREATEPALETTE:
                case META_CREATEREGION:
                case META_DIBCREATEPATTERNBRUSH:
                    _state.AddMetaObject(new MetaObject());
                    break;

                case META_CREATEPENINDIRECT:
                {
                    var pen = new MetaPen();
                    pen.Init(Meta);
                    _state.AddMetaObject(pen);
                    break;
                }

                case META_CREATEBRUSHINDIRECT:
                {
                    var brush = new MetaBrush();
                    brush.Init(Meta);
                    _state.AddMetaObject(brush);
                    break;
                }

                case META_CREATEFONTINDIRECT:
                {
                    var font = new MetaFont();
                    font.Init(Meta);
                    _state.AddMetaObject(font);
                    break;
                }

                case META_SELECTOBJECT:
                {
                    var idx = Meta.ReadWord();
                    _state.SelectMetaObject(idx, Cb);
                    break;
                }

                case META_DELETEOBJECT:
                {
                    var idx = Meta.ReadWord();
                    _state.DeleteMetaObject(idx);
                    break;
                }

                case META_SAVEDC:
                    _state.SaveState(Cb);
                    break;

                case META_RESTOREDC:
                {
                    var idx = Meta.ReadShort();
                    _state.RestoreState(idx, Cb);
                    break;
                }

                case META_SETWINDOWORG:
                    _state.OffsetWy = Meta.ReadShort();
                    _state.OffsetWx = Meta.ReadShort();
                    break;

                case META_SETWINDOWEXT:
                    _state.ExtentWy = Meta.ReadShort();
                    _state.ExtentWx = Meta.ReadShort();
                    break;

                case META_MOVETO:
                {
                    var y = Meta.ReadShort();
                    var p = new System.Drawing.Point(Meta.ReadShort(), y);
                    _state.CurrentPoint = p;
                    break;
                }

                case META_LINETO:
                {
                    var y = Meta.ReadShort();
                    var x = Meta.ReadShort();
                    var p = _state.CurrentPoint;
                    Cb.MoveTo(_state.TransformX(p.X), _state.TransformY(p.Y));
                    Cb.LineTo(_state.TransformX(x), _state.TransformY(y));
                    Cb.Stroke();
                    _state.CurrentPoint = new System.Drawing.Point(x, y);
                    break;
                }

                case META_POLYLINE:
                {
                    _state.LineJoinPolygon = Cb;
                    var len = Meta.ReadWord();
                    var x   = Meta.ReadShort();
                    var y   = Meta.ReadShort();
                    Cb.MoveTo(_state.TransformX(x), _state.TransformY(y));
                    for (var k = 1; k < len; ++k)
                    {
                        x = Meta.ReadShort();
                        y = Meta.ReadShort();
                        Cb.LineTo(_state.TransformX(x), _state.TransformY(y));
                    }
                    Cb.Stroke();
                    break;
                }

                case META_POLYGON:
                {
                    if (IsNullStrokeFill(false))
                    {
                        break;
                    }

                    var len = Meta.ReadWord();
                    var sx  = Meta.ReadShort();
                    var sy  = Meta.ReadShort();
                    Cb.MoveTo(_state.TransformX(sx), _state.TransformY(sy));
                    for (var k = 1; k < len; ++k)
                    {
                        var x = Meta.ReadShort();
                        var y = Meta.ReadShort();
                        Cb.LineTo(_state.TransformX(x), _state.TransformY(y));
                    }
                    Cb.LineTo(_state.TransformX(sx), _state.TransformY(sy));
                    StrokeAndFill();
                    break;
                }

                case META_POLYPOLYGON:
                {
                    if (IsNullStrokeFill(false))
                    {
                        break;
                    }

                    var numPoly = Meta.ReadWord();
                    var lens    = new int[numPoly];
                    for (var k = 0; k < lens.Length; ++k)
                    {
                        lens[k] = Meta.ReadWord();
                    }

                    for (var j = 0; j < lens.Length; ++j)
                    {
                        var len = lens[j];
                        var sx  = Meta.ReadShort();
                        var sy  = Meta.ReadShort();
                        Cb.MoveTo(_state.TransformX(sx), _state.TransformY(sy));
                        for (var k = 1; k < len; ++k)
                        {
                            var x = Meta.ReadShort();
                            var y = Meta.ReadShort();
                            Cb.LineTo(_state.TransformX(x), _state.TransformY(y));
                        }
                        Cb.LineTo(_state.TransformX(sx), _state.TransformY(sy));
                    }
                    StrokeAndFill();
                    break;
                }

                case META_ELLIPSE:
                {
                    if (IsNullStrokeFill(_state.LineNeutral))
                    {
                        break;
                    }

                    var b = Meta.ReadShort();
                    var r = Meta.ReadShort();
                    var t = Meta.ReadShort();
                    var l = Meta.ReadShort();
                    Cb.Arc(_state.TransformX(l), _state.TransformY(b), _state.TransformX(r), _state.TransformY(t), 0, 360);
                    StrokeAndFill();
                    break;
                }

                case META_ARC:
                {
                    if (IsNullStrokeFill(_state.LineNeutral))
                    {
                        break;
                    }

                    var yend   = _state.TransformY(Meta.ReadShort());
                    var xend   = _state.TransformX(Meta.ReadShort());
                    var ystart = _state.TransformY(Meta.ReadShort());
                    var xstart = _state.TransformX(Meta.ReadShort());
                    var b      = _state.TransformY(Meta.ReadShort());
                    var r      = _state.TransformX(Meta.ReadShort());
                    var t      = _state.TransformY(Meta.ReadShort());
                    var l      = _state.TransformX(Meta.ReadShort());
                    var cx     = (r + l) / 2;
                    var cy     = (t + b) / 2;
                    var arc1   = GetArc(cx, cy, xstart, ystart);
                    var arc2   = GetArc(cx, cy, xend, yend);
                    arc2 -= arc1;
                    if (arc2 <= 0)
                    {
                        arc2 += 360;
                    }

                    Cb.Arc(l, b, r, t, arc1, arc2);
                    Cb.Stroke();
                    break;
                }

                case META_PIE:
                {
                    if (IsNullStrokeFill(_state.LineNeutral))
                    {
                        break;
                    }

                    var yend   = _state.TransformY(Meta.ReadShort());
                    var xend   = _state.TransformX(Meta.ReadShort());
                    var ystart = _state.TransformY(Meta.ReadShort());
                    var xstart = _state.TransformX(Meta.ReadShort());
                    var b      = _state.TransformY(Meta.ReadShort());
                    var r      = _state.TransformX(Meta.ReadShort());
                    var t      = _state.TransformY(Meta.ReadShort());
                    var l      = _state.TransformX(Meta.ReadShort());
                    var cx     = (r + l) / 2;
                    var cy     = (t + b) / 2;
                    var arc1   = GetArc(cx, cy, xstart, ystart);
                    var arc2   = GetArc(cx, cy, xend, yend);
                    arc2 -= arc1;
                    if (arc2 <= 0)
                    {
                        arc2 += 360;
                    }

                    var ar = PdfContentByte.BezierArc(l, b, r, t, arc1, arc2);
                    if (ar.Count == 0)
                    {
                        break;
                    }

                    var pt = (float[])ar[0];
                    Cb.MoveTo(cx, cy);
                    Cb.LineTo(pt[0], pt[1]);
                    for (var k = 0; k < ar.Count; ++k)
                    {
                        pt = (float[])ar[k];
                        Cb.CurveTo(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);
                    }
                    Cb.LineTo(cx, cy);
                    StrokeAndFill();
                    break;
                }

                case META_CHORD:
                {
                    if (IsNullStrokeFill(_state.LineNeutral))
                    {
                        break;
                    }

                    var yend   = _state.TransformY(Meta.ReadShort());
                    var xend   = _state.TransformX(Meta.ReadShort());
                    var ystart = _state.TransformY(Meta.ReadShort());
                    var xstart = _state.TransformX(Meta.ReadShort());
                    var b      = _state.TransformY(Meta.ReadShort());
                    var r      = _state.TransformX(Meta.ReadShort());
                    var t      = _state.TransformY(Meta.ReadShort());
                    var l      = _state.TransformX(Meta.ReadShort());
                    var cx     = (r + l) / 2;
                    var cy     = (t + b) / 2;
                    var arc1   = GetArc(cx, cy, xstart, ystart);
                    var arc2   = GetArc(cx, cy, xend, yend);
                    arc2 -= arc1;
                    if (arc2 <= 0)
                    {
                        arc2 += 360;
                    }

                    var ar = PdfContentByte.BezierArc(l, b, r, t, arc1, arc2);
                    if (ar.Count == 0)
                    {
                        break;
                    }

                    var pt = (float[])ar[0];
                    cx = pt[0];
                    cy = pt[1];
                    Cb.MoveTo(cx, cy);
                    for (var k = 0; k < ar.Count; ++k)
                    {
                        pt = (float[])ar[k];
                        Cb.CurveTo(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);
                    }
                    Cb.LineTo(cx, cy);
                    StrokeAndFill();
                    break;
                }

                case META_RECTANGLE:
                {
                    if (IsNullStrokeFill(true))
                    {
                        break;
                    }

                    var b = _state.TransformY(Meta.ReadShort());
                    var r = _state.TransformX(Meta.ReadShort());
                    var t = _state.TransformY(Meta.ReadShort());
                    var l = _state.TransformX(Meta.ReadShort());
                    Cb.Rectangle(l, b, r - l, t - b);
                    StrokeAndFill();
                    break;
                }

                case META_ROUNDRECT:
                {
                    if (IsNullStrokeFill(true))
                    {
                        break;
                    }

                    var h = _state.TransformY(0) - _state.TransformY(Meta.ReadShort());
                    var w = _state.TransformX(Meta.ReadShort()) - _state.TransformX(0);
                    var b = _state.TransformY(Meta.ReadShort());
                    var r = _state.TransformX(Meta.ReadShort());
                    var t = _state.TransformY(Meta.ReadShort());
                    var l = _state.TransformX(Meta.ReadShort());
                    Cb.RoundRectangle(l, b, r - l, t - b, (h + w) / 4);
                    StrokeAndFill();
                    break;
                }

                case META_INTERSECTCLIPRECT:
                {
                    var b = _state.TransformY(Meta.ReadShort());
                    var r = _state.TransformX(Meta.ReadShort());
                    var t = _state.TransformY(Meta.ReadShort());
                    var l = _state.TransformX(Meta.ReadShort());
                    Cb.Rectangle(l, b, r - l, t - b);
                    Cb.EoClip();
                    Cb.NewPath();
                    break;
                }

                case META_EXTTEXTOUT:
                {
                    var y     = Meta.ReadShort();
                    var x     = Meta.ReadShort();
                    var count = Meta.ReadWord();
                    var flag  = Meta.ReadWord();
                    var x1    = 0;
                    var y1    = 0;
                    var x2    = 0;
                    var y2    = 0;
                    if ((flag & (MetaFont.ETO_CLIPPED | MetaFont.ETO_OPAQUE)) != 0)
                    {
                        x1 = Meta.ReadShort();
                        y1 = Meta.ReadShort();
                        x2 = Meta.ReadShort();
                        y2 = Meta.ReadShort();
                    }
                    var text = new byte[count];
                    int k;
                    for (k = 0; k < count; ++k)
                    {
                        var c = (byte)Meta.ReadByte();
                        if (c == 0)
                        {
                            break;
                        }

                        text[k] = c;
                    }
                    string s;
                    try
                    {
                        s = EncodingsRegistry.Instance.GetEncoding(1252).GetString(text, 0, k);
                    }
                    catch
                    {
                        s = System.Text.Encoding.ASCII.GetString(text, 0, k);
                    }
                    OutputText(x, y, flag, x1, y1, x2, y2, s);
                    break;
                }

                case META_TEXTOUT:
                {
                    var count = Meta.ReadWord();
                    var text  = new byte[count];
                    int k;
                    for (k = 0; k < count; ++k)
                    {
                        var c = (byte)Meta.ReadByte();
                        if (c == 0)
                        {
                            break;
                        }

                        text[k] = c;
                    }
                    string s;
                    try
                    {
                        s = EncodingsRegistry.Instance.GetEncoding(1252).GetString(text, 0, k);
                    }
                    catch
                    {
                        s = System.Text.Encoding.ASCII.GetString(text, 0, k);
                    }
                    count = (count + 1) & 0xfffe;
                    Meta.Skip(count - k);
                    var y = Meta.ReadShort();
                    var x = Meta.ReadShort();
                    OutputText(x, y, 0, 0, 0, 0, 0, s);
                    break;
                }

                case META_SETBKCOLOR:
                    _state.CurrentBackgroundColor = Meta.ReadColor();
                    break;

                case META_SETTEXTCOLOR:
                    _state.CurrentTextColor = Meta.ReadColor();
                    break;

                case META_SETTEXTALIGN:
                    _state.TextAlign = Meta.ReadWord();
                    break;

                case META_SETBKMODE:
                    _state.BackgroundMode = Meta.ReadWord();
                    break;

                case META_SETPOLYFILLMODE:
                    _state.PolyFillMode = Meta.ReadWord();
                    break;

                case META_SETPIXEL:
                {
                    var color = Meta.ReadColor();
                    var y     = Meta.ReadShort();
                    var x     = Meta.ReadShort();
                    Cb.SaveState();
                    Cb.SetColorFill(color);
                    Cb.Rectangle(_state.TransformX(x), _state.TransformY(y), .2f, .2f);
                    Cb.Fill();
                    Cb.RestoreState();
                    break;
                }

                case META_DIBSTRETCHBLT:
                case META_STRETCHDIB:
                {
                    var rop = Meta.ReadInt();
                    if (function == META_STRETCHDIB)
                    {
                        /*int usage = */
                        Meta.ReadWord();
                    }
                    var srcHeight  = Meta.ReadShort();
                    var srcWidth   = Meta.ReadShort();
                    var ySrc       = Meta.ReadShort();
                    var xSrc       = Meta.ReadShort();
                    var destHeight = _state.TransformY(Meta.ReadShort()) - _state.TransformY(0);
                    var destWidth  = _state.TransformX(Meta.ReadShort()) - _state.TransformX(0);
                    var yDest      = _state.TransformY(Meta.ReadShort());
                    var xDest      = _state.TransformX(Meta.ReadShort());
                    var b          = new byte[(tsize * 2) - (Meta.Length - lenMarker)];
                    for (var k = 0; k < b.Length; ++k)
                    {
                        b[k] = (byte)Meta.ReadByte();
                    }

                    try
                    {
                        var inb = new MemoryStream(b);
                        var bmp = BmpImage.GetImage(inb, true, b.Length);
                        Cb.SaveState();
                        Cb.Rectangle(xDest, yDest, destWidth, destHeight);
                        Cb.Clip();
                        Cb.NewPath();
                        bmp.ScaleAbsolute(destWidth * bmp.Width / srcWidth, -destHeight * bmp.Height / srcHeight);
                        bmp.SetAbsolutePosition(xDest - destWidth * xSrc / srcWidth, yDest + destHeight * ySrc / srcHeight - bmp.ScaledHeight);
                        Cb.AddImage(bmp);
                        Cb.RestoreState();
                    }
                    catch
                    {
                        // empty on purpose
                    }
                    break;
                }
                }
                Meta.Skip((tsize * 2) - (Meta.Length - lenMarker));
            }
            _state.Cleanup(Cb);
        }
示例#10
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();
        }
示例#11
0
        public bool genererPdf(string navire, bool pm, string repere, int semaineDD, int anneeDD, int semaineDF, int anneeDF, ArrayList reservations, ArrayList prets)
        {
            // todo : Le footer n'apparaît plus
            string chantier = pm ? "PM" : "BORD";

            if (!Directory.Exists(_cheminDossier + "\\" + navire + "\\" + chantier))
            {
                Directory.CreateDirectory(_cheminDossier + "\\" + navire + "\\" + chantier);
            }

            string cheminFichier = _cheminDossier + "\\" + navire + "\\" + chantier + "\\" + repere + ".pdf";

            if (estEnCoursUtilisation(cheminFichier) == false || !File.Exists(cheminFichier))
            {
                _dernierePageAvecFooter = 0;
                FileStream fs     = new FileStream(_cheminDossier + "\\" + navire + "\\" + chantier + "\\" + repere + ".pdf", FileMode.Create);
                Document   doc    = new Document(PageSize.A4);
                PdfWriter  writer = PdfWriter.GetInstance(doc, fs);
                string[]   jours  = new string[] { "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" };
                string[]   mois   = new string[] { "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre" };
                // ######################################\\ DEBUT GENERATION PDF

                doc.Open();
                AfficherRectangle(writer, 0, 700, 595, 3, 255, 93, 0);       //  barre séparation en-tête / tableau 1
                AfficherRectangle(writer, 215, 751, 300, 75, 120, 120, 120); // rectangle dd/df
                AfficherRectangle(writer, 230, 726, 150, 25, 200, 200, 200); // rectangle date maj

                DateTime aujourdHui = DateTime.Now;
                string   heure      = aujourdHui.Hour.ToString().Length < 2 ? "0" + aujourdHui.Hour.ToString() : aujourdHui.Hour.ToString();
                string   minutes    = aujourdHui.Minute.ToString().Length < 2 ? "0" + aujourdHui.Minute.ToString() : aujourdHui.Minute.ToString();
                AfficherTexte(writer, jours[(int)aujourdHui.DayOfWeek - 1] + " " + aujourdHui.Day + " " + mois[(int)aujourdHui.Month - 1] + " " + aujourdHui.Year, 240, 624, _policeReduite, 0, 0, 0);
                AfficherTexte(writer, heure + " h " + minutes, 240, 616, _policeReduite, 0, 0, 0);

                AfficherRectangleArrondi(writer, 60, 716, 170, 109, 15, 3, 255, 255, 255);

                AfficherTexte(writer, navire, 80, 645, _policeGras, 0, 0, 0);
                AfficherTexte(writer, repere, 170, 675, _policeGrasMoyenne, 0, 0, 0);
                int axeX = pm ? 177 : 166;
                AfficherTexte(writer, chantier, axeX, 620, _policeGrasMoyenne, 0, 0, 0);

                PdfContentByte cb = writer.DirectContent;
                cb.SetLineWidth(3);
                cb.Arc(150, 576, 150, 858, 0, 50);
                cb.Stroke();
                cb.Arc(92, 769, 230, 769, 0, 100);
                cb.Stroke();
                cb.SetLineWidth(1);
                cb.Arc(485, 676, 485, 827, 0, 80);
                cb.Stroke();

                AfficherTexte(writer, "Début", 240, 674, _policeGrasMoyenne, 255, 255, 255);
                AfficherTexte(writer, "Fin", 240, 649, _policeGrasMoyenne, 255, 255, 255);


                cb.SetLineWidth(1);
                AfficherRectangle(writer, 300, 785, 95, 20, 240, 240, 240);
                AfficherRectangle(writer, 300, 760, 95, 20, 240, 240, 240);

                string semaine = semaineDD.ToString().Length < 2 ? "0" + semaineDD.ToString() : semaineDD.ToString();
                AfficherTexte(writer, "S" + semaine + " / " + anneeDD, 307, 674, _policeGrasMoyenne, 0, 0, 0);
                semaine = semaineDF.ToString().Length < 2 ? "0" + semaineDF.ToString() : semaineDD.ToString();
                AfficherTexte(writer, "S" + semaine + " / " + anneeDF, 307, 649, _policeGrasMoyenne, 0, 0, 0);
                iTextSharp.text.Paragraph space = new iTextSharp.text.Paragraph("\n\n\n\n\n\n\n\n");

                doc.Add(space);
                iTextSharp.text.Paragraph petitSpace = new iTextSharp.text.Paragraph("\n");
                AfficherTableauRéservations(doc, writer, reservations);
                doc.Add(petitSpace);
                AfficherTableauPrets(doc, writer, prets);

                // Contient toutes les classes des équerres réservées ou prêtées
                List <string> listeClasses = new List <string>();
                if (reservations.Count > 0)
                {
                    for (int k = 3; k < reservations.Count; k += 5)
                    {
                        if (!listeClasses.Contains(reservations[k]))
                        {
                            listeClasses.Add((string)reservations[k]);
                        }
                    }
                }
                if (prets.Count > 0)
                {
                    for (int k = 3; k < prets.Count; k += 6)
                    {
                        if (!listeClasses.Contains(prets[k]))
                        {
                            listeClasses.Add((string)prets[k]);
                        }
                    }
                }
                listeClasses.Sort();
                for (int k = 0; k < listeClasses.Count; k++)
                {
                    switch (listeClasses[k])
                    {
                    case "A":
                        AfficherRectangleArrondi(writer, 490, 802, 20, 20, 5, 1, 0, 200, 0);
                        AfficherTexte(writer, "A", 494, 691, _policeGrasMoyenne, 255, 255, 255);
                        break;

                    case "B":
                        AfficherRectangleArrondi(writer, 490, 779, 20, 20, 5, 1, 255, 93, 0);
                        AfficherTexte(writer, "B", 494, 668, _policeGrasMoyenne, 255, 255, 255);
                        break;

                    case "C":
                        AfficherRectangleArrondi(writer, 490, 756, 20, 20, 5, 1, 255, 0, 0);
                        AfficherTexte(writer, "C", 494, 645, _policeGrasMoyenne, 255, 255, 255);
                        break;
                    }
                }

                doc.Close();
                // ######################################\\

                return(true);
            }
            else
            {
                return(false);
            }
        }
        public void Verify_PathConstructionAndPainting_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;

            // 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)
            {
                BorderWidthBottom = 10,
                BorderColorBottom = new GrayColor(0f),
                BorderWidthLeft   = 4,
                BorderColorLeft   = new GrayColor(0.9f),
                BackgroundColor   = new GrayColor(0.4f)
            };

            canvas.Rectangle(rect);
            ColumnText.ShowTextAligned(
                canvas, Element.ALIGN_LEFT,
                new Phrase("Convenience methods"), 50, 250, 0
                );

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

            TestUtils.VerifyPdfFileIsReadable(pdfFilePath);
        }