using var doc = new Doc();
doc.Read("../Rez/spaceshuttle.pdf");
doc.RemapPages(new int[] { 1, 1 });
doc.PageNumber = 2;
var page = doc.ObjectSoup[doc.Page] as Page;
var layers = page.GetLayers();
using var st = new MemoryStream();
foreach (var layer in layers) {
if (!layer.Decompress())
throw new Exception("Unable to decompress stream.");
byte[] data = layer.GetData();
st.Write(data, 0, data.Length);
layer.CompressFlate();
}
var array = ArrayAtom.FromContentStream(st.ToArray());
if (true) {
var items = OpAtom.Find(array, [ "k" ]);
foreach (var pair in items) { // make red
var args = OpAtom.GetParameters(array, pair.Item2);
if (args != null) {
((NumAtom)args[0]).Real = 0;
((NumAtom)args[1]).Real = 1;
((NumAtom)args[2]).Real = 1;
((NumAtom)args[3]).Real = 0;
}
}
}
if (true) {
var items = OpAtom.Find(array, [ "rg" ]);
foreach (var pair in items) { // make green
var args = OpAtom.GetParameters(array, pair.Item2);
if (args != null) {
((NumAtom)args[0]).Real = 0;
((NumAtom)args[1]).Real = 1;
((NumAtom)args[2]).Real = 0;
}
}
}
byte[] arrayData = array.GetData();
var so = new StreamObject(doc.ObjectSoup);
so.SetData(arrayData, 1, arrayData.Length - 2);
doc.SetInfo(page.ID, "/Contents:Del", "");
page.AddLayer(so);
doc.Save("ReplaceColors.pdf");