예제 #1
0
        public Chap1014()
        {
            Console.WriteLine("Chapter 10 Example 14: colored patterns");

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

            Document.Compress = false;
            try
            {
                // step 2:
                // we create a writer that listens to the document
                // and directs a PDF-stream to a file
                PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("Chap1014.pdf", FileMode.Create));

                // step 3: we open the document
                document.Open();

                // step 4: we add some content
                PdfContentByte    cb  = writer.DirectContent;
                PdfTemplate       tp  = cb.CreateTemplate(400, 300);
                PdfPatternPainter pat = cb.CreatePattern(15, 15, null);
                pat.Rectangle(5, 5, 5, 5);
                pat.Fill();
                PdfSpotColor spc_cmyk = new PdfSpotColor("PANTONE 280 CV", 0.25f, new CMYKColor(0.9f, .2f, .3f, .1f));
                SpotColor    spot     = new SpotColor(spc_cmyk);
                tp.SetPatternFill(pat, spot, .9f);
                tp.Rectangle(0, 0, 400, 300);
                tp.Fill();
                cb.AddTemplate(tp, 50, 50);
                PdfPatternPainter pat2 = cb.CreatePattern(10, 10, null);
                pat2.SetLineWidth(2);
                pat2.MoveTo(-5, 0);
                pat2.LineTo(10, 15);
                pat2.Stroke();
                pat2.MoveTo(0, -5);
                pat2.LineTo(15, 10);
                pat2.Stroke();
                cb.SetLineWidth(1);
                cb.SetColorStroke(new Color(System.Drawing.Color.Black));
                cb.SetPatternFill(pat2, new Color(System.Drawing.Color.Red));
                cb.Rectangle(100, 400, 30, 210);
                cb.FillStroke();
                cb.SetPatternFill(pat2, new Color(System.Drawing.Color.LightGreen));
                cb.Rectangle(150, 400, 30, 100);
                cb.FillStroke();
                cb.SetPatternFill(pat2, new Color(System.Drawing.Color.Blue));
                cb.Rectangle(200, 400, 30, 130);
                cb.FillStroke();
                cb.SetPatternFill(pat2, new GrayColor(0.5f));
                cb.Rectangle(250, 400, 30, 80);
                cb.FillStroke();
                cb.SetPatternFill(pat2, new GrayColor(0.7f));
                cb.Rectangle(300, 400, 30, 170);
                cb.FillStroke();
                cb.SetPatternFill(pat2, new GrayColor(0.9f));
                cb.Rectangle(350, 400, 30, 40);
                cb.FillStroke();
            }
            catch (Exception de)
            {
                Console.Error.WriteLine(de.Message);
                Console.Error.WriteLine(de.StackTrace);
            }
            // step 5: we close the document
            document.Close();
        }
예제 #2
0
// ---------------------------------------------------------------------------

        /**
         * Creates a PDF document.
         */
        public byte[] CreatePdf()
        {
            using (MemoryStream ms = new MemoryStream()) {
                // step 1
                using (Document document = new Document()) {
                    // step 2
                    PdfWriter writer = PdfWriter.GetInstance(document, ms);
                    // step 3
                    document.Open();
                    // step 4
                    PdfContentByte    canvas = writer.DirectContent;
                    PdfPatternPainter square
                        = canvas.CreatePattern(15, 15);
                    square.SetColorFill(new BaseColor(0xFF, 0xFF, 0x00));
                    square.SetColorStroke(new BaseColor(0xFF, 0x00, 0x00));
                    square.Rectangle(5, 5, 5, 5);
                    square.FillStroke();

                    PdfPatternPainter ellipse
                        = canvas.CreatePattern(15, 10, 20, 25);
                    ellipse.SetColorFill(new BaseColor(0xFF, 0xFF, 0x00));
                    ellipse.SetColorStroke(new BaseColor(0xFF, 0x00, 0x00));
                    ellipse.Ellipse(2f, 2f, 13f, 8f);
                    ellipse.FillStroke();

                    PdfPatternPainter circle
                        = canvas.CreatePattern(15, 15, 10, 20, BaseColor.BLUE);
                    circle.Circle(7.5f, 7.5f, 2.5f);
                    circle.Fill();

                    PdfPatternPainter line
                        = canvas.CreatePattern(5, 10, null);
                    line.SetLineWidth(1);
                    line.MoveTo(3, -1);
                    line.LineTo(3, 11);
                    line.Stroke();

                    Image img = Image.GetInstance(RESOURCE);
                    img.ScaleAbsolute(20, 20);
                    img.SetAbsolutePosition(0, 0);
                    PdfPatternPainter img_pattern
                        = canvas.CreatePattern(20, 20, 20, 20);
                    img_pattern.AddImage(img);
                    img_pattern.SetPatternMatrix(-0.5f, 0f, 0f, 0.5f, 0f, 0f);

                    ColorRectangle(canvas, new PatternColor(square), 36, 696, 126, 126);
                    ColorRectangle(canvas, new PatternColor(ellipse), 180, 696, 126, 126);
                    ColorRectangle(canvas, new PatternColor(circle), 324, 696, 126, 126);
                    ColorRectangle(canvas, new PatternColor(line), 36, 552, 126, 126);
                    ColorRectangle(canvas, new PatternColor(img_pattern), 36, 408, 126, 126);

                    canvas.SetPatternFill(line, BaseColor.RED);
                    canvas.Ellipse(180, 552, 306, 678);
                    canvas.FillStroke();
                    canvas.SetPatternFill(circle, BaseColor.GREEN);
                    canvas.Ellipse(324, 552, 450, 678);
                    canvas.FillStroke();

                    canvas.SetPatternFill(img_pattern);
                    canvas.Ellipse(180, 408, 450, 534);
                    canvas.FillStroke();
                }
                return(ms.ToArray());
            }
        }