I want to enumerate all used colors on a page.
Code: Select all
public IEnumerable<ColorStateDto> GetColorStatesFromDocument() {
for (uint pageIndex = 0; pageIndex < _pdfEditControl.Doc.CoreDoc.Pages.Count; pageIndex++) {
var pageContent = _pdfEditControl.Doc.CoreDoc.Pages[pageIndex].GetContent(PXC_ContentAccessMode.CAccessMode_Readonly);
for (uint cStateIndex = 0; cStateIndex < pageContent.CStatesCount; cStateIndex++) {
var cstate = pageContent.GetCStateByIndex(cStateIndex);
float c, m, y, k;
float r, g, b;
var cstateColor = cstate.FillColor[ColorType.ColorType_CMYK]; // <=== Exception
cstateColor.GetCMYK(out c, out m, out y, out k);
Color rgb = ColorTranslator.FromOle((int) cstate.FillColor.ValueRGB);
var jjkColorState = new ColorStateDto()
{
Id = cStateIndex,
PageNr = pageIndex,
Typ = cstate.FillColor.CSType,
IsUsed= CStateIsUsedOnPage(pageIndex, cstate),
C = c,
M = m,
Y = y,
K = k,
Rgb = new ColorRgb{ R = rgb.R, G = rgb.G, B=rgb.B}
};
yield return jjkColorState;
}
}
}
private bool CStateIsUsedOnPage(uint pageIndex, IPXC_CState cstate) {
var pagecontent = _pdfEditControl.Doc.CoreDoc.Pages[pageIndex].GetContent(PXC_ContentAccessMode.CAccessMode_Readonly);
for (uint i = 0; i < pagecontent.Items.Count; i++) {
var contentItem = pagecontent.Items[i];
if (contentItem.GetCState().FillColor.CSHandle == cstate.FillColor.CSHandle) {
return true;
}
}
return false;
}
Does anybody know the meaning of these flags? I couldn't find anything in the wiki.
Thanks
MiBa