public static PdfAnnotation ToPDFPolygon(this Autodesk.DesignScript.Geometry.Polygon polygon, string content, PdfWriter writer)
        {
            List <float> points = new List <float>();

            foreach (var pt in polygon.Points)
            {
                PDFCoords coords = pt.ToPDFCoords();
                points.Add(coords.X);
                points.Add(coords.Y);
            }

            iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(0, 0);

            var app  = new PdfContentByte(writer);
            var anno = PdfAnnotation.CreatePolygonPolyline(writer, rect, content, true, new PdfArray(points.ToArray()));

            return(anno);
        }
Exemplo n.º 2
0
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
        public static PdfAnnotation ToPDFPolygon(this Autodesk.DesignScript.Geometry.PolyCurve polycurve, string content, PdfWriter writer)
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member
        {
            List <float> points = new List <float>();

            foreach (var curve in polycurve.Curves())
            {
                PDFCoords coords = curve.StartPoint.ToPDFCoords();
                points.Add(coords.X);
                points.Add(coords.Y);
            }

            iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(0, 0);

            var app  = new PdfContentByte(writer);
            var anno = PdfAnnotation.CreatePolygonPolyline(writer, rect, content, false, new PdfArray(points.ToArray()));

            return(anno);
        }
Exemplo n.º 3
0
        //--------------------------------------------------------------------------------------------------
        void MarkText(List <TextItem> items, int iPosition, int iCount, PdfStamper stamper, BaseColor color, int iPageAdd = 0, string stComment = null)
        {
            const string stTittle = "PDFCompare";

            if (iCount == 0)
            {
                float rWidth, rPosition;
                if (iPosition >= items.Count)
                {
                    iPosition = items.Count - 1;
                    rWidth    = (items[iPosition].MaxY - items[iPosition].MinY) / 5;
                    rPosition = items[iPosition].MaxX;
                }
                else
                {
                    rWidth    = (items[iPosition].MaxY - items[iPosition].MinY) / 5;
                    rPosition = items[iPosition].MinX - rWidth;
                }
                Rectangle     rect      = new Rectangle(rPosition, items[iPosition].MaxY, rPosition + rWidth, items[iPosition].MinY);
                float[]       quad      = { rect.Left, rect.Bottom, rect.Right, rect.Bottom, rect.Left, rect.Top, rect.Right, rect.Top };
                PdfAnnotation highlight = PdfAnnotation.CreateMarkup(stamper.Writer, rect, stComment, PdfAnnotation.MARKUP_HIGHLIGHT, quad);
                highlight.Color = color;
                highlight.Title = stTittle;
                stamper.AddAnnotation(highlight, items[iPosition].Page + iPageAdd);
            }
            else
            {
                while (iCount > 0 && items[iPosition].IsImage)
                {
                    TextItem  item       = items[iPosition];
                    Rectangle rect       = new Rectangle(item.MinX, item.MaxY, item.MaxX, item.MinY);
                    PdfArray  vertices   = new PdfArray();
                    float     rHalfWidth = 4;
                    vertices.Add(new PdfNumber(item.MinX - rHalfWidth));
                    vertices.Add(new PdfNumber(item.MinY - rHalfWidth));
                    vertices.Add(new PdfNumber(item.MaxX + rHalfWidth));
                    vertices.Add(new PdfNumber(item.MinY - rHalfWidth));
                    vertices.Add(new PdfNumber(item.MaxX + rHalfWidth));
                    vertices.Add(new PdfNumber(item.MaxY + rHalfWidth));
                    vertices.Add(new PdfNumber(item.MinX - rHalfWidth));
                    vertices.Add(new PdfNumber(item.MaxY + rHalfWidth));
                    vertices.Add(new PdfNumber(item.MinX - rHalfWidth));
                    vertices.Add(new PdfNumber(item.MinY - rHalfWidth));
                    PdfAnnotation highlight = PdfAnnotation.CreatePolygonPolyline(stamper.Writer, rect, stComment, true, vertices);
                    highlight.Color  = color;
                    highlight.Title  = stTittle;
                    highlight.Border = new PdfBorderArray(0, 0, rHalfWidth * 2);
                    stamper.AddAnnotation(highlight, item.Page + iPageAdd);
                    iPosition++;
                    iCount--;
                }
                if (iCount == 0)
                {
                    return;
                }
                int i;
                for (i = iPosition; i < iPosition + iCount; i++)
                {
                    if (items[i].IsImage)
                    {
                        MarkText(items, iPosition, i - iPosition, stamper, color, iPageAdd, stComment);
                        MarkText(items, i, 1, stamper, color, iPageAdd, stComment);
                        if (i + 1 >= iPosition + iCount)
                        {
                            return;
                        }
                        iCount   -= (i - iPosition) + 1;
                        iPosition = i + 1;
                    }
                }
                if (!items[iPosition].IsNewLine)
                {
                    i = iPosition;
                    while (i < iPosition + iCount - 1 && !items[i + 1].IsNewLine)
                    {
                        i++;
                    }
                    Rectangle     rect      = new Rectangle(items[iPosition].MinX, items[iPosition].MaxY, items[i].MaxX, items[iPosition].MinY);
                    float[]       quad      = { rect.Left, rect.Bottom, rect.Right, rect.Bottom, rect.Left, rect.Top, rect.Right, rect.Top };
                    PdfAnnotation highlight = PdfAnnotation.CreateMarkup(stamper.Writer, rect, stComment, PdfAnnotation.MARKUP_HIGHLIGHT, quad);
                    highlight.Color = color;
                    highlight.Title = stTittle;
                    stamper.AddAnnotation(highlight, items[iPosition].Page + iPageAdd);
                    iCount   -= (i - iPosition) + 1;
                    iPosition = i + 1;
                }
                if (iCount == 0)
                {
                    return;
                }
                if (items.Count > iPosition + iCount && !items[iPosition + iCount].IsNewLine)
                {
                    i = iPosition + iCount - 1;
                    while (!items[i].IsNewLine)
                    {
                        i--;
                    }
                    Rectangle     rect      = new Rectangle(items[i].MinX, items[i].MaxY, items[i = iPosition + iCount - 1].MaxX, items[i].MinY);
                    float[]       quad      = { rect.Left, rect.Bottom, rect.Right, rect.Bottom, rect.Left, rect.Top, rect.Right, rect.Top };
                    PdfAnnotation highlight = PdfAnnotation.CreateMarkup(stamper.Writer, rect, stComment, PdfAnnotation.MARKUP_HIGHLIGHT, quad);
                    highlight.Color = color;
                    highlight.Title = stTittle;
                    stamper.AddAnnotation(highlight, items[iPosition].Page + iPageAdd);
                    iCount -= iPosition + iCount - i;
                }
                if (iCount == 0)
                {
                    return;
                }
                i = iPosition;
                float rMinX = items[iPosition].MinX;
                float rMaxX = items[iPosition].MaxX;
                while (i < iPosition + iCount)
                {
                    i++;
                    if (i == iPosition + iCount || items[iPosition].Page != items[i].Page)
                    {
                        Rectangle     rect      = new Rectangle(rMinX, items[iPosition].MaxY, rMaxX, items[i - 1].MinY);
                        float[]       quad      = { rect.Left, rect.Bottom, rect.Right, rect.Bottom, rect.Left, rect.Top, rect.Right, rect.Top };
                        PdfAnnotation highlight = PdfAnnotation.CreateMarkup(stamper.Writer, rect, stComment, PdfAnnotation.MARKUP_HIGHLIGHT, quad);
                        highlight.Color = color;
                        highlight.Title = stTittle;
                        stamper.AddAnnotation(highlight, items[iPosition].Page + iPageAdd);
                        iCount   -= i - iPosition;
                        iPosition = i;
                        if (iCount == 0)
                        {
                            return;
                        }
                        rMinX = items[iPosition].MinX;
                        rMaxX = items[iPosition].MaxX;
                    }
                    if (items[i].MinX < rMinX)
                    {
                        rMinX = items[i].MinX;
                    }
                    if (items[i].MaxX > rMaxX)
                    {
                        rMaxX = items[i].MaxX;
                    }
                }

                /*
                 * for(i = iPosition; i < iPosition + iCount; i++)
                 * {
                 *      TextItem item = items[i];
                 *      Rectangle rect = new Rectangle(item.MinX, item.MaxY, item.MaxX, item.MinY);
                 *      float[] quad = { rect.Left, rect.Bottom, rect.Right, rect.Bottom, rect.Left, rect.Top, rect.Right, rect.Top };
                 *      PdfAnnotation highlight = PdfAnnotation.CreateMarkup(stamper.Writer, rect, stComment, PdfAnnotation.MARKUP_HIGHLIGHT, quad);
                 *      highlight.Color = color;
                 *      highlight.Title = stTittle;
                 *      stamper.AddAnnotation(highlight, item.Page + iPageAdd);
                 * }
                 */
            }
        }