public static void FormatBlPoint(SlidePart slidePart) { IEnumerable <Shape> bulletPointShapes = slidePart.Slide.Descendants <Shape>().Where(d => d.Descendants <NonVisualDrawingProperties>().Where(e => e.Name.InnerText.Contains(Constants._TEXTBOX_)).Count() > 0); foreach (Shape shape in bulletPointShapes) { IEnumerable <D.Paragraph> paragraphs = shape.Descendants <D.Paragraph>().Where(d => d.Descendants <D.ParagraphProperties>().Count() > 0); foreach (D.Paragraph paragraph in paragraphs) { D.ParagraphProperties paragProps = paragraph.Descendants <D.ParagraphProperties>().FirstOrDefault(); if (paragProps != default(D.ParagraphProperties)) { D.BulletFont bulletFont = paragProps.Descendants <D.BulletFont>().FirstOrDefault(); if (bulletFont != default(D.BulletFont)) { bulletFont.CharacterSet = 0; bulletFont.PitchFamily = 34; bulletFont.Typeface = "Arial"; } D.CharacterBullet characterBullet = paragProps.Descendants <D.CharacterBullet>().FirstOrDefault(); if (characterBullet != default(D.CharacterBullet)) { characterBullet.Char = new DocumentFormat.OpenXml.StringValue("•"); } else { D.AutoNumberedBullet autoNumberedBullet = paragProps.Descendants <D.AutoNumberedBullet>().FirstOrDefault(); if (autoNumberedBullet != default(D.AutoNumberedBullet)) { autoNumberedBullet.Remove(); slidePart.Slide.Save(); } characterBullet = new D.CharacterBullet() { Char = new DocumentFormat.OpenXml.StringValue("•") }; paragProps.AppendChild(characterBullet); } D.Run run = paragraph.Descendants <D.Run>().FirstOrDefault(); run.RunProperties.Italic = false; run.RunProperties.Bold = false; run.RunProperties.Underline = D.TextUnderlineValues.None; } } } slidePart.Slide.Save(); }
private void ValidatePpr(SdbSchemaDatas sdbSchemaDatas) { ValidationContext validationContext = new ValidationContext(); ValidationResult actual = new ValidationResult(); validationContext.ValidationErrorEventHandler += actual.OnValidationError; OpenXmlElement errorChild; ParagraphProperties pPr = new ParagraphProperties(); var particleConstraint = sdbSchemaDatas.GetSchemaTypeData(pPr).ParticleConstraint; var target = particleConstraint.ParticleValidator as ParticleValidator; validationContext.Element = pPr; var expected = pPr; //<xsd:complexType name="CT_PPr"> // <xsd:complexContent> // <xsd:extension base="CT_PPrBase"> // <xsd:sequence> // <xsd:element name="rPr" type="CT_ParaRPr" minOccurs="0"> // <xsd:element name="sectPr" type="CT_SectPr" minOccurs="0"> // <xsd:element name="pPrChange" type="CT_PPrChange" minOccurs="0"> // </xsd:sequence> // </xsd:extension> // </xsd:complexContent> //</xsd:complexType> //<xsd:complexType name="CT_PPrBase"> // <xsd:sequence> // <xsd:element name="pStyle" type="CT_String" minOccurs="0"> // <xsd:element name="keepNext" type="CT_OnOff" minOccurs="0"> // <xsd:element name="keepLines" type="CT_OnOff" minOccurs="0"> // <xsd:element name="pageBreakBefore" type="CT_OnOff" minOccurs="0"> // <xsd:element name="framePr" type="CT_FramePr" minOccurs="0"> // <xsd:element name="widowControl" type="CT_OnOff" minOccurs="0"> // <xsd:element name="numPr" type="CT_NumPr" minOccurs="0"> // <xsd:element name="suppressLineNumbers" type="CT_OnOff" minOccurs="0"> // <xsd:element name="pBdr" type="CT_PBdr" minOccurs="0"> // <xsd:element name="shd" type="CT_Shd" minOccurs="0"> // <xsd:element name="tabs" type="CT_Tabs" minOccurs="0"> // <xsd:element name="suppressAutoHyphens" type="CT_OnOff" minOccurs="0"> // <xsd:element name="kinsoku" type="CT_OnOff" minOccurs="0"> // <xsd:element name="wordWrap" type="CT_OnOff" minOccurs="0"> // <xsd:element name="overflowPunct" type="CT_OnOff" minOccurs="0"> // <xsd:element name="topLinePunct" type="CT_OnOff" minOccurs="0"> // <xsd:element name="autoSpaceDE" type="CT_OnOff" minOccurs="0"> // <xsd:element name="autoSpaceDN" type="CT_OnOff" minOccurs="0"> // <xsd:element name="bidi" type="CT_OnOff" minOccurs="0"> // <xsd:element name="adjustRightInd" type="CT_OnOff" minOccurs="0"> // <xsd:element name="snapToGrid" type="CT_OnOff" minOccurs="0"> // <xsd:element name="spacing" type="CT_Spacing" minOccurs="0"> // <xsd:element name="ind" type="CT_Ind" minOccurs="0"> // <xsd:element name="contextualSpacing" type="CT_OnOff" minOccurs="0"> // <xsd:element name="mirrorIndents" type="CT_OnOff" minOccurs="0"> // <xsd:element name="suppressOverlap" type="CT_OnOff" minOccurs="0"> // <xsd:element name="jc" type="CT_Jc" minOccurs="0"> // <xsd:element name="textDirection" type="CT_TextDirection" minOccurs="0"> // <xsd:element name="textAlignment" type="CT_TextAlignment" minOccurs="0"> // <xsd:element name="textboxTightWrap" type="CT_TextboxTightWrap" minOccurs="0"> // <xsd:element name="outlineLvl" type="CT_DecimalNumber" minOccurs="0"> // <xsd:element name="divId" type="CT_DecimalNumber" minOccurs="0"> // <xsd:element name="cnfStyle" type="CT_Cnf" minOccurs="0" maxOccurs="1"> // </xsd:sequence> //</xsd:complexType> // ***** good case ****** // empty is ok target.Validate(validationContext); Assert.True(actual.Valid); // pPr.AppendChild(new KeepLines()); target.Validate(validationContext); Assert.True(actual.Valid); // pPr.AppendChild(new Tabs()); target.Validate(validationContext); Assert.True(actual.Valid); // pPr.AppendChild(new Kinsoku()); target.Validate(validationContext); Assert.True(actual.Valid); // pPr.AppendChild(new OutlineLevel()); target.Validate(validationContext); Assert.True(actual.Valid); // pPr.AppendChild(new ConditionalFormatStyle()); target.Validate(validationContext); Assert.True(actual.Valid); // pPr.AppendChild(new ParagraphMarkRunProperties()); target.Validate(validationContext); Assert.True(actual.Valid); // pPr.AppendChild(new SectionProperties()); target.Validate(validationContext); Assert.True(actual.Valid); // pPr.AppendChild(new ParagraphPropertiesChange()); target.Validate(validationContext); Assert.True(actual.Valid); // ***** error case ****** // SectionProperties dup error errorChild = pPr.AppendChild(new SectionProperties()); target.Validate(validationContext); Assert.False(actual.Valid); Assert.Equal(1, actual.Errors.Count); Assert.Same(expected, actual.Errors[0].Node); Assert.Equal(ValidationErrorType.Schema, actual.Errors[0].ErrorType); Assert.Equal("Sch_UnexpectedElementContentExpectingComplex", actual.Errors[0].Id); Assert.False(actual.Errors[0].Description.Contains(ValidationErrorStrings.Fmt_ListOfPossibleElements)); pPr.RemoveChild(errorChild); actual.Clear(); // SectionProperties order wrong errorChild = pPr.FirstChild; pPr.PrependChild(new SectionProperties()); target.Validate(validationContext); Assert.False(actual.Valid); Assert.Equal(1, actual.Errors.Count); Assert.Same(expected, actual.Errors[0].Node); Assert.Same(errorChild, actual.Errors[0].RelatedNode); Assert.Equal(ValidationErrorType.Schema, actual.Errors[0].ErrorType); Assert.Equal("Sch_UnexpectedElementContentExpectingComplex", actual.Errors[0].Id); Assert.False(actual.Errors[0].Description.Contains(ValidationErrorStrings.Fmt_ListOfPossibleElements)); pPr.RemoveChild(pPr.FirstChild); }