예제 #1
0
        private PdfSpecialCs.Separation CreateCmykColorSpace(float c, float m, float y, float k)
        {
            float[]     c0          = new float[] { 0, 0, 0, 0 };
            float[]     c1          = new float[] { c, m, y, k };
            PdfFunction pdfFunction = new PdfFunction.Type2(new PdfArray(new float[] { 0, 1 }),
                                                            null, new PdfArray(c0), new PdfArray(c1), new PdfNumber(1));

            PdfSpecialCs.Separation cs = new PdfSpecialCs.Separation("iTextSpotColorCMYK",
                                                                     new DeviceCmyk(c, m, y, k).GetColorSpace(), pdfFunction);

            return(cs);
        }
예제 #2
0
        public virtual void ColorTest07()
        {
            PdfWriter writer = new PdfWriter(destinationFolder + "colorTest07.pdf");

            writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION);
            PdfDocument document = new PdfDocument(writer);
            PdfPage     page     = document.AddNewPage();

            PdfFunction.Type4 function = new PdfFunction.Type4(new PdfArray(new float[] { 0, 1 }), new PdfArray(new float
                                                                                                                [] { 0, 1, 0, 1, 0, 1 }), "{0 0}".GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1));
            PdfSpecialCs.Separation separation = new PdfSpecialCs.Separation("MyRed", new PdfDeviceCs.Rgb(), function);
            PdfCanvas canvas = new PdfCanvas(page);

            canvas.SetFillColor(new Separation(separation, 0.25f)).Rectangle(50, 500, 50, 50).Fill();
            canvas.SetFillColor(new Separation(separation, 0.5f)).Rectangle(150, 500, 50, 50).Fill();
            canvas.SetFillColor(new Separation(separation, 0.75f)).Rectangle(250, 500, 50, 50).Fill();
            canvas.Release();
            document.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destinationFolder + "colorTest07.pdf", sourceFolder
                                                                             + "cmp_colorTest07.pdf", destinationFolder, "diff_"));
        }
예제 #3
0
        public virtual void ColourSpaceTest02()
        {
            PdfWriter    writer = new PdfWriter(new ByteArrayOutputStream());
            Stream       @is    = new FileStream(sourceFolder + "sRGB Color Space Profile.icm", FileMode.Open, FileAccess.Read);
            PdfADocument doc    = new PdfADocument(writer, PdfAConformanceLevel.PDF_A_2B, new PdfOutputIntent("Custom", ""
                                                                                                              , "http://www.color.org", "sRGB IEC61966-2.1", @is));
            PdfPage       page           = doc.AddNewPage();
            PdfColorSpace alternateSpace = new PdfDeviceCs.Rgb();
            //Tint transformation function is a dictionary
            PdfArray  domain = new PdfArray(new float[] { 0, 1 });
            PdfArray  range  = new PdfArray(new float[] { 0, 1, 0, 1, 0, 1 });
            PdfArray  C0     = new PdfArray(new float[] { 0, 0, 0 });
            PdfArray  C1     = new PdfArray(new float[] { 1, 1, 1 });
            PdfNumber n      = new PdfNumber(1);

            PdfFunction.Type2 type2 = new PdfFunction.Type2(domain, range, C0, C1, n);
            PdfColorSpace     separationColourSpace = new PdfSpecialCs.Separation("separationTestFunction2", alternateSpace
                                                                                  , type2);

            //Add to document
            page.GetResources().AddColorSpace(separationColourSpace);
            doc.Close();
        }
예제 #4
0
        public virtual void ColourSpaceTest01()
        {
            PdfWriter    writer = new PdfWriter(new ByteArrayOutputStream());
            Stream       @is    = new FileStream(sourceFolder + "sRGB Color Space Profile.icm", FileMode.Open, FileAccess.Read);
            PdfADocument doc    = new PdfADocument(writer, PdfAConformanceLevel.PDF_A_2B, new PdfOutputIntent("Custom", ""
                                                                                                              , "http://www.color.org", "sRGB IEC61966-2.1", @is));
            PdfPage       page           = doc.AddNewPage();
            PdfColorSpace alternateSpace = new PdfDeviceCs.Rgb();

            //Tint transformation function is a stream
            byte[]    samples       = new byte[] { 0x00, 0x00, 0x00, 0x01, 0x01, 0x01 };
            PdfArray  domain        = new PdfArray(new float[] { 0, 1 });
            PdfArray  range         = new PdfArray(new float[] { 0, 1, 0, 1, 0, 1 });
            PdfArray  size          = new PdfArray(new float[] { 2 });
            PdfNumber bitsPerSample = new PdfNumber(8);

            PdfFunction.Type0 type0 = new PdfFunction.Type0(domain, range, size, bitsPerSample, samples);
            PdfColorSpace     separationColourSpace = new PdfSpecialCs.Separation("separationTestFunction0", alternateSpace
                                                                                  , type0);

            //Add to document
            page.GetResources().AddColorSpace(separationColourSpace);
            doc.Close();
        }
예제 #5
0
        /// <summary>Makes a Color of certain color space and color value.</summary>
        /// <remarks>
        /// Makes a Color of certain color space and color value.
        /// If color value is set in null, all value components will be initialised with zeroes.
        /// </remarks>
        /// <param name="colorSpace">the color space to which the returned Color object relates</param>
        /// <param name="colorValue">the color value of the returned Color object</param>
        /// <returns>the created Color object.</returns>
        public static iText.Kernel.Colors.Color MakeColor(PdfColorSpace colorSpace, float[] colorValue)
        {
            iText.Kernel.Colors.Color c = null;
            bool unknownColorSpace      = false;

            if (colorSpace is PdfDeviceCs)
            {
                if (colorSpace is PdfDeviceCs.Gray)
                {
                    c = colorValue != null ? new DeviceGray(colorValue[0]) : new DeviceGray();
                }
                else
                {
                    if (colorSpace is PdfDeviceCs.Rgb)
                    {
                        c = colorValue != null ? new DeviceRgb(colorValue[0], colorValue[1], colorValue[2]) : new DeviceRgb();
                    }
                    else
                    {
                        if (colorSpace is PdfDeviceCs.Cmyk)
                        {
                            c = colorValue != null ? new DeviceCmyk(colorValue[0], colorValue[1], colorValue[2], colorValue[3]) : new
                                DeviceCmyk();
                        }
                        else
                        {
                            unknownColorSpace = true;
                        }
                    }
                }
            }
            else
            {
                if (colorSpace is PdfCieBasedCs)
                {
                    if (colorSpace is PdfCieBasedCs.CalGray)
                    {
                        PdfCieBasedCs.CalGray calGray = (PdfCieBasedCs.CalGray)colorSpace;
                        c = colorValue != null ? new CalGray(calGray, colorValue[0]) : new CalGray(calGray);
                    }
                    else
                    {
                        if (colorSpace is PdfCieBasedCs.CalRgb)
                        {
                            PdfCieBasedCs.CalRgb calRgb = (PdfCieBasedCs.CalRgb)colorSpace;
                            c = colorValue != null ? new CalRgb(calRgb, colorValue) : new CalRgb(calRgb);
                        }
                        else
                        {
                            if (colorSpace is PdfCieBasedCs.IccBased)
                            {
                                PdfCieBasedCs.IccBased iccBased = (PdfCieBasedCs.IccBased)colorSpace;
                                c = colorValue != null ? new IccBased(iccBased, colorValue) : new IccBased(iccBased);
                            }
                            else
                            {
                                if (colorSpace is PdfCieBasedCs.Lab)
                                {
                                    PdfCieBasedCs.Lab lab = (PdfCieBasedCs.Lab)colorSpace;
                                    c = colorValue != null ? new Lab(lab, colorValue) : new Lab(lab);
                                }
                                else
                                {
                                    unknownColorSpace = true;
                                }
                            }
                        }
                    }
                }
                else
                {
                    if (colorSpace is PdfSpecialCs)
                    {
                        if (colorSpace is PdfSpecialCs.Separation)
                        {
                            PdfSpecialCs.Separation separation = (PdfSpecialCs.Separation)colorSpace;
                            c = colorValue != null ? new Separation(separation, colorValue[0]) : new Separation(separation);
                        }
                        else
                        {
                            if (colorSpace is PdfSpecialCs.DeviceN)
                            {
                                //NChannel goes here also
                                PdfSpecialCs.DeviceN deviceN = (PdfSpecialCs.DeviceN)colorSpace;
                                c = colorValue != null ? new DeviceN(deviceN, colorValue) : new DeviceN(deviceN);
                            }
                            else
                            {
                                if (colorSpace is PdfSpecialCs.Indexed)
                                {
                                    c = colorValue != null ? new Indexed(colorSpace, (int)colorValue[0]) : new Indexed(colorSpace);
                                }
                                else
                                {
                                    unknownColorSpace = true;
                                }
                            }
                        }
                    }
                    else
                    {
                        if (colorSpace is PdfSpecialCs.Pattern)
                        {
                            c = new iText.Kernel.Colors.Color(colorSpace, colorValue);
                        }
                        else
                        {
                            // TODO review this. at least log a warning
                            unknownColorSpace = true;
                        }
                    }
                }
            }
            if (unknownColorSpace)
            {
                throw new PdfException("Unknown color space.");
            }
            return(c);
        }
예제 #6
0
 public Separation(PdfSpecialCs.Separation cs, float value)
     : base(cs, new float[] { value })
 {
 }
예제 #7
0
 public Separation(PdfSpecialCs.Separation cs)
     : this(cs, 1f)
 {
 }