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
DownloadOutput
Process2SpotColor.pdf
DownloadProcess2SpotColor.png
For AI-assisted development: Download Graphics Mill Code Samples XML Catalog