Replace Process Color

PDF Spot Color Modify Container

Converts the specified process color into a spot color saving graphics container to the PDF format.

Сode Snippet

public static class Extensions
{
    public static bool IsBlack(this Color color)
    {
        var grayColor = (GrayscaleColor)color.Convert(PixelFormat.Format8bppGrayscale);

        return grayColor.L < 20;
    }

    public static void ReplaceProcessColors(this GraphicsContainer container, SpotColor spotColor)
    {
        foreach (var item in container.Items.OfType<ShapeItem>())
        {
            if (item.Brush != null && item.Brush is SolidBrush && (item.Brush as SolidBrush).Color.IsBlack())
            {
                item.Brush = new SolidBrush(spotColor);
            }
        }

        foreach (var item in container.Items.OfType<ContainerItem>())
        {
            item.GraphicsContainer.ReplaceProcessColors(spotColor);
        }
    }
}

internal class ReplaceProcessColor
{
    public static void Run()
    {
        using (var reader = new PdfReader("Seal.pdf"))
        using (var gc = reader.Frames[0].GetContent())
        using (var writer = new PdfWriter("Process2SpotColor.pdf"))
        using (var gr = writer.GetGraphics())
        {
            writer.AddPage(gc.Width, gc.Height, gc.DpiX, gc.DpiY);

            var ink = new Ink("PANTONE Red 032 C", new RgbColor(243, 40, 55));
            var spotColor = new SpotColor(ink, 255);

            gc.ReplaceProcessColors(spotColor);

            gr.DrawContainer(gc, 0, 0);
        }
    }
}

Input

Seal.pdf

Download

Output

Process2SpotColor.pdf

Download

Process2SpotColor.png

For AI-assisted development: Download Graphics Mill Code Samples XML Catalog