Управление текстовыми фрагментами в презентациях с использованием C++
Получить координаты части текста
GetCoordinates() method has been added to IPortion and Portion class which allows retrieving the coordinates of the beginning of the portion:
auto presentation = System::MakeObject<Presentation>(u"Shapes.pptx");
auto shape = System::ExplicitCast<IAutoShape>(presentation->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0));
auto textFrame = shape->get_TextFrame();
for (const auto& paragraph : textFrame->get_Paragraphs())
{
for (const auto& portion : paragraph->get_Portions())
{
PointF point = portion->GetCoordinates();
Console::WriteLine(String(u"Coordinates X =") + point.get_X() + u" Coordinates Y =" + point.get_Y());
}
}
Вопросы и ответы
Могу ли я применить гиперссылку только к части текста внутри одного абзаца?
Да, вы можете присвоить гиперссылку отдельному фрагменту; только этот фрагмент будет кликабельным, а не весь абзац.
Как работает наследование стилей: что переопределяет Portion и что берётся из Paragraph/TextFrame?
Свойства уровня Portion имеют наивысший приоритет. Если свойство не задано в Portion, движок берёт его из Paragraph; если его нет и там, берёт из TextFrame или стиля тема.
Что происходит, если шрифт, указанный для Portion, отсутствует на целевой машине/сервере?
правила замены шрифтов применяются. Текст может перераспределиться: метрики, переносы и ширина могут измениться, что важно для точного позиционирования.
Могу ли я установить прозрачность или градиент заливки текста, специфичный для Portion, независимо от остального абзаца?
Да, цвет текста, заливка и прозрачность на уровне Portion могут отличаться от соседних фрагментов.