Получить границы текстовой части из презентаций в JavaScript
Обзор
Текстовая часть представляет собой конкретный фрагмент текста внутри абзаца и позволяет работать с этим фрагментом независимо от окружающего содержимого. В Aspose.Slides части можно использовать, когда необходимо получить границы текстового фрагмента, применить форматирование только к части абзаца или управлять поведением текста на более детальном уровне.
В этой статье показано, как получить ограничивающий прямоугольник части, используя Portion.getRect. Также показано, как получить координаты начала части, используя Portion.getCoordinates. Кроме того, в статье рассмотрены распространённые сценарии, связанные с частями, такие как применение гиперссылки к отдельному текстовому фрагменту, понимание того, как форматирование разрешается через часть, абзац, текстовый фрейм и наследование темы, а также обработка случаев, когда указанный шрифт недоступен.
Получить границы текстовой части
Используйте Portion.getRect для получения ограничивающего прямоугольника текстовой части:
const presentation = new aspose.slides.Presentation("Shapes.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const shape = slide.getShapes().get_Item(0);
const paragraphs = shape.getTextFrame().getParagraphs();
for (let paragraphIndex = 0; paragraphIndex < paragraphs.getCount(); paragraphIndex++) {
const paragraph = paragraphs.get_Item(paragraphIndex);
const portions = paragraph.getPortions();
for (let portionIndex = 0; portionIndex < portions.getCount(); portionIndex++) {
const portion = portions.get_Item(portionIndex);
const rectangle = portion.getRect();
console.log("X = " + rectangle.x + "; Y = " + rectangle.y + "; Width = " + rectangle.width + "; Height = " + rectangle.height);
}
}
} finally {
presentation.dispose();
}
Получить координаты текстовой части
Используйте Portion.getCoordinates для получения координат начала текстовой части:
const presentation = new aspose.slides.Presentation("Shapes.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const shape = slide.getShapes().get_Item(0);
const paragraphs = shape.getTextFrame().getParagraphs();
for (let paragraphIndex = 0; paragraphIndex < paragraphs.getCount(); paragraphIndex++) {
const paragraph = paragraphs.get_Item(paragraphIndex);
const portions = paragraph.getPortions();
for (let portionIndex = 0; portionIndex < portions.getCount(); portionIndex++) {
const portion = portions.get_Item(portionIndex);
const point = portion.getCoordinates();
console.log("X = " + point.x + "; Y = " + point.y);
}
}
} finally {
presentation.dispose();
}
Вопросы и ответы
Могу ли я применить гиперссылку только к части текста в одном абзаце?
Да, вы можете назначить гиперссылку отдельной части; только этот фрагмент будет кликабельным, а не весь абзац.
Как работает наследование стилей: что переопределяет часть, а что берётся из абзаца или текстового фрейма?
Свойства уровня Portion имеют высший приоритет. Если свойство не задано у Portion, Aspose.Slides берёт его из Paragraph. Если оно не задано и там, Aspose.Slides использует стиль TextFrame или theme.
Что происходит, если указанный для части шрифт отсутствует на целевом компьютере или сервере?
Правила замены шрифтов применяются. Текст может перераспределиться: метрики, переносы и ширина могут измениться, что важно для точного позиционирования.
Могу ли я задать прозрачность заливки текста или градиент для конкретной части независимо от остального абзаца?
Да, цвет текста, заливка и прозрачность на уровне Portion могут отличаться от соседних фрагментов.