public static PdfAction SetOCGstate(List<Object> state, bool preserveRB)
{
PdfAction action = new PdfAction();
action.Put(PdfName.S, PdfName.SETOCGSTATE);
PdfArray a = new PdfArray();
for (int k = 0; k < state.Count; ++k) {
Object o = state[k];
if (o == null)
continue;
if (o is PdfIndirectReference)
a.Add((PdfIndirectReference)o);
else if (o is PdfLayer)
a.Add(((PdfLayer)o).Ref);
else if (o is PdfName)
a.Add((PdfName)o);
else if (o is String) {
PdfName name = null;
String s = (String)o;
if (Util.EqualsIgnoreCase(s, "on"))
name = PdfName.ON;
else if (Util.EqualsIgnoreCase(s, "off"))
name = PdfName.OFF;
else if (Util.EqualsIgnoreCase(s, "toggle"))
name = PdfName.TOGGLE;
else
throw new ArgumentException(MessageLocalization.GetComposedMessage("a.string.1.was.passed.in.state.only.on.off.and.toggle.are.allowed", s));
a.Add(name);
}
else
throw new ArgumentException(MessageLocalization.GetComposedMessage("invalid.type.was.passed.in.state.1", o.GetType().ToString()));
}
action.Put(PdfName.STATE, a);
if (!preserveRB)
action.Put(PdfName.PRESERVERB, PdfBoolean.PDFFALSE);
return action;
}