Управление текстовыми частями в презентациях в .NET
Получить координаты части текста
GetCoordinates() метод был добавлен в IPortion и класс Portion, что позволяет получать координаты начала части:
using (Presentation presentation = new Presentation("Shapes.pptx"))
{
IAutoShape shape = (IAutoShape)presentation.Slides[0].Shapes[0];
var textFrame = (ITextFrame)shape.TextFrame;
foreach (var paragraph in textFrame.Paragraphs)
{
foreach (Portion portion in paragraph.Portions)
{
PointF point = portion.GetCoordinates();
Console.Write(Environment.NewLine + "Corrdinates X =" + point.X + " Corrdinates Y =" + point.Y);
}
}
}
Часто задаваемые вопросы
Можно ли применить гиперссылку только к части текста в одном абзаце?
Да, вы можете назначить гиперссылку отдельной части; только этот фрагмент будет кликабельным, а не весь абзац.
Как работает наследование стилей: что переопределяет Portion и что берётся из Paragraph/TextFrame?
Свойства уровня Portion имеют наивысший приоритет. Если свойство не задано у Portion, движок берёт его из Paragraph; если и там нет, то из TextFrame или стиля theme.
Что происходит, если шрифт, указанный для Portion, отсутствует на целевой машине/сервере?
Применяются правила подстановки шрифтов. Текст может перераспределиться: могут измениться метрики, переносы и ширина, что важно для точного позиционирования.
Можно ли задать прозрачность или градиент заливки текста на уровне Portion независимо от остального абзаца?
Да, цвет текста, заливка и прозрачность на уровне Portion могут отличаться от соседних фрагментов.