コード例 #1
0
        static void blendPage(Document doc, Image foregroundImage, Image backgroundImage)
        {
            double height   = 792;
            double width    = 612;
            Rect   pageRect = new Rect(0, 0, width, height);
            Page   docpage  = doc.CreatePage(doc.NumPages - 1, pageRect);

            // This section demonstrates all the Blend Modes one can achieve
            // by setting the BlendMode property to each of the 16 enumerations
            // on a foreground "ducky" over a background rainbow pattern, and
            // plopping all these images on a single page.
            Text         t      = new Text();
            Font         f      = new Font("Arial", FontCreateFlags.Embedded | FontCreateFlags.Subset);
            GraphicState gsText = new GraphicState();

            gsText.FillColor = new Color(0, 0, 1.0);
            TextState ts = new TextState();

            for (int i = 0; i < 16; i++)
            {
                Image individualForegroundImage = foregroundImage.Clone();
                Image individualBackgroundImage = backgroundImage.Clone();

                GraphicState gs = individualForegroundImage.GraphicState;
                individualForegroundImage.Scale(0.125, 0.125);
                individualForegroundImage.Translate(800, 200 + height * (7 - i));
                individualBackgroundImage.Scale(0.125, 0.125);
                individualBackgroundImage.Translate(800, 200 + height * (7 - i));

                // Halfway through, create 2nd column by shifting over and up
                if (i > 7)
                {
                    individualForegroundImage.Translate(2400, height * 8);
                    individualBackgroundImage.Translate(2400, height * 8);
                }

                docpage.Content.AddElement(individualBackgroundImage);
                Console.WriteLine("Added background image " + (i + 1) + " to the content.");
                docpage.Content.AddElement(individualForegroundImage);
                Console.WriteLine("Added foreground image " + (i + 1) + " to the content.");

                Matrix m = new Matrix();
                if (i > 7)
                {
                    m = m.Translate(480, 750 - ((i - 8) * 100)); // second column
                }
                else
                {
                    m = m.Translate(180, 750 - (i * 100)); // first column
                }
                m = m.Scale(12.0, 12.0);

                ExtendedGraphicState xgs = new ExtendedGraphicState();
                TextRun tr = null;
                if (i == 0)
                {
                    xgs.BlendMode = BlendMode.Normal;
                    tr            = new TextRun("Normal", f, gsText, ts, m);
                }
                else if (i == 1)
                {
                    xgs.BlendMode = BlendMode.Multiply;
                    tr            = new TextRun("Multiply", f, gsText, ts, m);
                }
                else if (i == 2)
                {
                    xgs.BlendMode = BlendMode.Screen;
                    tr            = new TextRun("Screen", f, gsText, ts, m);
                }
                else if (i == 3)
                {
                    xgs.BlendMode = BlendMode.Overlay;
                    tr            = new TextRun("Overlay", f, gsText, ts, m);
                }
                else if (i == 4)
                {
                    xgs.BlendMode = BlendMode.Darken;
                    tr            = new TextRun("Darken", f, gsText, ts, m);
                }
                else if (i == 5)
                {
                    xgs.BlendMode = BlendMode.Lighten;
                    tr            = new TextRun("Lighten", f, gsText, ts, m);
                }
                else if (i == 6)
                {
                    xgs.BlendMode = BlendMode.ColorDodge;
                    tr            = new TextRun("Color Dodge", f, gsText, ts, m);
                }
                else if (i == 7)
                {
                    xgs.BlendMode = BlendMode.ColorBurn;
                    tr            = new TextRun("Color Burn", f, gsText, ts, m);
                }
                else if (i == 8)
                {
                    xgs.BlendMode = BlendMode.HardLight;
                    tr            = new TextRun("Hard Light", f, gsText, ts, m);
                }
                else if (i == 9)
                {
                    xgs.BlendMode = BlendMode.SoftLight;
                    tr            = new TextRun("SoftLight", f, gsText, ts, m);
                }
                else if (i == 10)
                {
                    xgs.BlendMode = BlendMode.Difference;
                    tr            = new TextRun("Difference", f, gsText, ts, m);
                }
                else if (i == 11)
                {
                    xgs.BlendMode = BlendMode.Exclusion;
                    tr            = new TextRun("Exclusion", f, gsText, ts, m);
                }
                else if (i == 12)
                {
                    xgs.BlendMode = BlendMode.Hue;
                    tr            = new TextRun("Hue", f, gsText, ts, m);
                }
                else if (i == 13)
                {
                    xgs.BlendMode = BlendMode.Saturation;
                    tr            = new TextRun("Saturation", f, gsText, ts, m);
                }
                else if (i == 14)
                {
                    xgs.BlendMode = BlendMode.Color;
                    tr            = new TextRun("Color", f, gsText, ts, m);
                }
                else if (i == 15)
                {
                    xgs.BlendMode = BlendMode.Luminosity;
                    tr            = new TextRun("Luminosity", f, gsText, ts, m);
                }
                t.AddRun(tr);
                docpage.Content.AddElement(t);
                docpage.UpdateContent();
                Console.WriteLine("Updated the content on page 1.");

                gs.ExtendedGraphicState = xgs;
                individualForegroundImage.GraphicState = gs;
                Console.WriteLine("Set blend mode in extended graphic state.");
            }
        }
コード例 #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("ConvertTextToOutlines sample:");

            using (Library lib = new Library())
            {
                String sInput1  = Library.ResourceDirectory + "Sample_Input/TextSearch.pdf";
                String sOutput1 = "../TextSearch-converted.pdf";

                if (args.Length > 0)
                {
                    sInput1 = args[0];
                }
                if (args.Length > 1)
                {
                    sOutput1 = args[1];
                }

                // Open a document with multiple pages.
                Document doc = new Document(sInput1);

                // Iterate over the pages of the document and add a translucent element to the pages
                int totalPages  = doc.NumPages;
                int pageCounter = 0;

                while (pageCounter < totalPages)
                {
                    Page pg = doc.GetPage(pageCounter);

                    Path         tinyLine = new Path();
                    GraphicState gs       = tinyLine.GraphicState;

                    gs.FillColor     = new Color(1.0, 1.0, 1.0);  // White
                    gs.StrokeColor   = new Color(1.0, 1.0, 1.0);  // white
                    tinyLine.PaintOp = PathPaintOpFlags.Stroke;;  // PathPaintOpFlags.EoFill
                    gs.Width         = 1.0;

                    ExtendedGraphicState xgs = new ExtendedGraphicState();
                    xgs.BlendMode                   = BlendMode.Normal;
                    xgs.OpacityForStroking          = 0.5;
                    xgs.OpacityForOtherThanStroking = 0.5;
                    gs.ExtendedGraphicState         = xgs;
                    tinyLine.GraphicState           = gs;

                    Point Origin = new  Point(0.0, 0.0);
                    Point Point1 = new Point(1.0, 1.0); // line that goes from 0,0 to 1,1
                    tinyLine.MoveTo(Origin);
                    tinyLine.AddLine(Point1);
                    tinyLine.ClosePath();
                    pg.Content.AddElement(tinyLine);   // Add the new element to the Content of the page.
                    pg.UpdateContent();                // Update the PDF page with the changed content

                    pg.Dispose();
                    pageCounter++;
                }

                // Set up some parameters for the flattening.
                FlattenTransparencyParams ftParams = new FlattenTransparencyParams();

                // The Quality setting indicates the percentage (0%-100%) of vector information
                // that is preserved.  Lower values result in higher rasterization of vectors.
                ftParams.Quality         = 100;
                ftParams.UseTextOutlines = true;


                doc.FlattenTransparency(ftParams, 0, Document.LastPage);
                Console.WriteLine("Flattened a multi-page document " + sInput1 + " as " + sOutput1 + ".");
                doc.Save(SaveFlags.Full, sOutput1);
            }
        }