Recolor Red Strokes
View as MarkdownDemonstrates how to modify the stroke colors of shapes within a graphics container by detecting red strokes and recoloring them.
Code Snippet
public static class Extensions
{
public static bool IsRed(this Color color)
{
var rgbColor = (RgbColor)color.Convert(PixelFormat.Format24bppRgb);
return rgbColor.R > (rgbColor.G + rgbColor.B);
}
}
internal class RecolorRedStrokes
{
public static void Run()
{
using (var reader = new PdfReader("GraphicsContainer.pdf"))
using (var gc = reader.Frames[0].GetContent())
using (var writer = new PdfWriter("GraphicsContainer_RecolorRedStrokes.pdf"))
using (var gr = writer.GetGraphics())
{
writer.AddPage(gc.Width, gc.Height, gc.DpiX, gc.DpiY);
foreach (var shapeItem in gc.Items.OfType<ShapeItem>())
{
if (shapeItem.Pen != null && shapeItem.Pen.Color.IsRed())
{
shapeItem.Pen = new Pen(RgbColor.DarkMagenta, shapeItem.Pen.Width);
}
}
gr.DrawContainer(gc, 0, 0);
}
}
}
Input
GraphicsContainer.pdf
DownloadOutput
GraphicsContainer_RecolorRedStrokes.pdf
DownloadGraphicsContainer_RecolorRedStrokes.png
Used APIs
- Aurigma.GraphicsMill.Codecs.PdfFrame.GetContent
- Aurigma.GraphicsMill.Codecs.PdfReader
- Aurigma.GraphicsMill.Codecs.PdfReader.Frames
- Aurigma.GraphicsMill.Codecs.PdfWriter
- Aurigma.GraphicsMill.Codecs.PdfWriter.AddPage(Single,Single,Single,Single)
- Aurigma.GraphicsMill.Codecs.PdfWriter.GetGraphics
- Aurigma.GraphicsMill.Color
- Aurigma.GraphicsMill.Color.Convert(PixelFormat)
- Aurigma.GraphicsMill.Drawing.Graphics.DrawContainer(GraphicsContainer,Single,Single)
- Aurigma.GraphicsMill.Drawing.GraphicsContainer.DpiX
- Aurigma.GraphicsMill.Drawing.GraphicsContainer.DpiY
- Aurigma.GraphicsMill.Drawing.GraphicsContainer.Items
- Aurigma.GraphicsMill.Drawing.Pen
- Aurigma.GraphicsMill.Drawing.Pen.Color
- Aurigma.GraphicsMill.Drawing.ShapeItem
- Aurigma.GraphicsMill.Drawing.ShapeItem.Pen
- Aurigma.GraphicsMill.RgbColor.B
- Aurigma.GraphicsMill.RgbColor.G
- Aurigma.GraphicsMill.RgbColor.R