Получить границы текстовой части в презентациях Java
Обзор
Текстовая часть представляет собой конкретный фрагмент текста внутри абзаца и позволяет работать с этим фрагментом независимо от окружающего содержимого. В Aspose.Slides части текста могут использоваться, когда необходимо получить границы текстового фрагмента, применить форматирование только к части абзаца или управлять поведением текста на более детальном уровне.
В этой статье показано, как получить ограничивающий прямоугольник части текста с помощью IPortion.getRect. Также показано, как получить координаты начала части текста с помощью IPortion.getCoordinates. Кроме того, рассматриваются распространённые сценарии, связанные с частями текста, такие как применение гиперссылки к отдельному фрагменту текста, понимание того, как форматирование наследуется через часть, абзац, текстовый кадр и тему, а также обработка случаев, когда указанный шрифт недоступен.
Получить границы текстового фрагмента
Используйте IPortion.getRect для получения ограничивающего прямоугольника текстовой части:
Presentation presentation = new Presentation("Shapes.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = (IAutoShape) slide.getShapes().get_Item(0);
for (IParagraph paragraph : shape.getTextFrame().getParagraphs())
{
for (IPortion portion : paragraph.getPortions())
{
java.awt.geom.Rectangle2D.Float rectangle = portion.getRect();
System.out.println("X = " + rectangle.x + "; Y = " + rectangle.y + "; Width = " + rectangle.width + "; Height = " + rectangle.height);
}
}
} finally {
presentation.dispose();
}
Получить координаты текстового фрагмента
Используйте IPortion.getCoordinates для получения координат начала текстовой части:
Presentation presentation = new Presentation("Shapes.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = (IAutoShape) slide.getShapes().get_Item(0);
for (IParagraph paragraph : shape.getTextFrame().getParagraphs())
{
for (IPortion portion : paragraph.getPortions())
{
java.awt.geom.Point2D.Float point = portion.getCoordinates();
System.out.println("X = " + point.x + "; Y = " + point.y);
}
}
} finally {
presentation.dispose();
}
Часто задаваемые вопросы
Могу ли я применить гиперссылку только к части текста в одном абзаце?
Да, вы можете назначить гиперссылку к отдельной части; только этот фрагмент будет кликабельным, а не весь абзац.
Как работает наследование стилей: что переопределяется в части текста, а что берётся из абзаца или текстового кадра?
Свойства уровня части имеют наивысший приоритет. Если свойство не задано у IPortion, Aspose.Slides берёт его из IParagraph. Если оно не задано и там, Aspose.Slides использует стиль ITextFrame или theme.
Что происходит, если шрифт, указанный для части текста, отсутствует на целевой машине или сервере?
Правила подстановки шрифтов применяются. Текст может перераспределяться: могут измениться метрики, переносы и ширина, что имеет значение для точного позиционирования.
Могу ли я задать прозрачность заливки текста или градиент для отдельной части независимо от остальных абзаца?
Да, цвет текста, заливка и прозрачность на уровне IPortion могут отличаться от соседних фрагментов.