private void createButton3_Click(object sender, EventArgs e) { Doc doc = new Doc(); Properties props = Properties.FromDoc(doc, true); List <Group> groups = new List <Group>(); for (int i = 1; i < 4; i++) { groups.Add(props.AddGroup("Layer " + i.ToString(), null)); } // membership policies are simple to use but limited in scope MembershipGroup alloff = props.AddMembershipGroup(); alloff.Policy = MembershipGroup.PolicyEnum.AllOff; alloff.PolicyGroups = groups; // membership visibility expressions are more complex but more powerful MembershipGroup mgve = props.AddMembershipGroup(); ArrayAtom ve = mgve.MakeVisibilityExpression(MembershipGroup.LogicEnum.Or, groups); mgve.EntryVE = mgve.MakeVisibilityExpression(MembershipGroup.LogicEnum.Not, new ArrayAtom[] { ve }); doc.FontSize = 36; doc.Rect.Inset(20, 20); for (int i = 0; i < 3; i++) { doc.Page = doc.AddPage(); Page page = (Page)doc.ObjectSoup[doc.Page]; Writer writer = new Writer(props, page); OptionalContent.Layer layer1 = writer.AddGroup(alloff); doc.AddText("The next line uses a Policy so that it is only visible if all layers are turned off...\r\n"); writer.StartLayer(layer1); doc.AddText("I am normally invisible\r\n\r\n"); writer.EndLayer(); OptionalContent.Layer layer2 = writer.AddGroup(mgve); doc.AddText("The next line uses a Visibility Expression so that it is only visible if all layers are turned off...\r\n"); writer.StartLayer(layer2); doc.AddText("I am normally invisible\r\n"); writer.EndLayer(); doc.Flatten(); } LoadPDF(doc); }