Управление частями текста в презентациях с помощью Java

Получить координаты части текста

getCoordinates() метод был добавлен в классы IPortion и Portion, которые позволяют получить координаты начала части.

// Создать объект Presentation, представляющий PPTX
Presentation pres = new Presentation();
try {
    // Переформатировать контекст презентации
    IAutoShape shape = (IAutoShape) pres.getSlides().get_Item(0).getShapes().get_Item(0);
    
    ITextFrame textFrame = (ITextFrame) shape.getTextFrame();
    
    for (IParagraph paragraph : textFrame.getParagraphs()) 
    {
        for (IPortion portion : paragraph.getPortions()) 
        {
            Point2D.Float point = portion.getCoordinates();
            System.out.println("X: " + point.x + " Y: " + point.y);
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

Часто задаваемые вопросы

Могу ли я применить гиперссылку только к части текста в одном абзаце?

Да, вы можете привязать гиперссылку к отдельной части; только этот фрагмент будет кликабельным, а не весь абзац.

Как работает наследование стилей: что переопределяет Portion и что берётся из Paragraph/TextFrame?

Свойства уровня Portion имеют наивысший приоритет. Если свойство не задано у Portion, движок берёт его из Paragraph; если оно не задано и там, — из TextFrame или стиля theme.

Что происходит, если шрифт, указанный для Portion, отсутствует на целевой машине/сервере?

Правила замены шрифтов применяются. Текст может перераспределиться: метрики, переносы и ширина могут измениться, что важно для точного позиционирования.

Могу ли я задать прозрачность заливки текста или градиент для конкретного Portion независимо от остального абзаца?

Да, цвет текста, заливка и прозрачность на уровне Portion могут отличаться от соседних фрагментов.