static void Main(string[] args)
        {
            Console.WriteLine("Clips Sample:");

            using (Library lib = new Library())
            {
                Console.WriteLine("Initialized the library.");

                String sOutput = "../Clips-out.pdf";

                if (args.Length > 0)
                {
                    sOutput = args[0];
                }

                Console.WriteLine("Output file: " + sOutput);

                // Create a new document and blank first page
                Document doc  = new Document();
                Rect     rect = new Rect(0, 0, 612, 792);
                Page     page = doc.CreatePage(Document.BeforeFirstPage, rect);
                Console.WriteLine("Created new document and first page.");

                // Create a new path, set up its graphic state and PaintOp
                Path         path  = new Path();
                GraphicState gs    = new GraphicState();
                Color        color = new Color(0.0, 0.0, 0.0);
                gs.FillColor      = color;
                path.GraphicState = gs;
                path.PaintOp      = PathPaintOpFlags.Fill;

                // Add a rectangle to the path
                Point point = new Point(100, 500);
                path.AddRect(point, 300, 200);
                Console.WriteLine("Created new path and added rectangle to it.");

                // Add a curve to the path too so we have something
                // interesting to look at after clipping
                Point linePoint1 = new Point(400, 450);
                Point linePoint2 = new Point(350, 300);
                path.AddCurveV(linePoint1, linePoint2);
                Console.WriteLine("Added curve to the path.");

                // Add the path to the page in the document
                Content content = page.Content;
                content.AddElement(path);
                Console.WriteLine("Added path to page in document.");

                // Create a new path and add a rectangle to it
                Path clipPath = new Path();
                point = new Point(50, 300);
                clipPath.AddRect(point, 300, 250);
                Console.WriteLine("Created clipping path and added rectangle to it.");

                // Create a new clip and add the new path to it and then add
                // this new clip to the original path as its Clip property
                Clip clip = new Clip();
                clip.AddElement(clipPath);
                path.Clip = clip;
                Console.WriteLine("Created new clip, assigned clipping path to it, and added new clip to original path.");

                // Update the page's content and save the file with clipping
                page.UpdateContent();
                doc.Save(SaveFlags.Full, sOutput);

                // Kill the doc object
                doc.Dispose();
                Console.WriteLine("Killed document object.");
            }
        }