У меня есть слайд PowerPoint с 1 текстовым фреймом с несколькими строками текста.Если строка 2 выделена жирным шрифтом, как я могу это обнаружить?
Sentence one
Sentence two -this one is italic for example
Sentence three
Sentence four
Вот моя попытка кода сделать это, я понял, что из-за того факта, что текст из powerpoint находится в одном TextFrame.TextRange, я долженпопробуйте разделить его на части, чтобы проверить отдельные строки, где я хочу определить стиль шрифта.Поэтому я попытался сохранить начальную и конечную позиции каждой строки в объекте, а затем попробовать TextRange.Characters (), чтобы получить отдельные строки и проверить их стиль оттуда.но все, что я получаю, это msoTriStateMixed и, таким образом, дает мне неправильный результат.
Application pptApplication = new Application();
Presentation pptPresentation = pptApplication.Presentations.Open(filename, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
foreach (Slide _slide in pptPresentation.Slides) {
foreach (Microsoft.Office.Interop.PowerPoint.Shape _shape in _slide.Shapes) {
if(_shape.HasTextFrame == MsoTriState.msoTrue) {
var textFrame = _shape.TextFrame;
if(textFrame.HasText == MsoTriState.msoTrue) {
var textRange = textFrame.TextRange;
int startingPoint = 1;
string[] lines = textRange.Text.ToString().Split(
new[] { "\n", "\r", "\r\n" },
StringSplitOptions.None
);
List<Line> LineList = new List<Line>();
Line newLine = new Line();
foreach(string x in lines) {
newLine.startingPos = startingPoint;
newLine.endingPos = startingPoint + x.Length;
LineList.add(newLine);
startingPoint += x.Length;
}
foreach(Line L in LineList) {
if (textRange.Characters(L.startingPos, L.endingPos - 1).Font.Bold == MsoTriState.msoTrue)
Console.WriteLine("bolded = true");
else
Console.WriteLine("bolded = false");
}
}
}
}
}