Управление текстом презентации в Node.js через .NET
Обзор
В Aspose.Slides текст на слайде принадлежит фигуре. Автофигура, например прямоугольник, имеет текстовый кадр; в текстовом кадре находятся абзацы, а каждый абзац содержит фрагменты — участки текста с одинаковым форматированием. Текст изменяется через текстовый кадр, а шрифт — через формат фрагмента.
В этой статье добавляется текстовое поле на слайд и сохраняется презентация. Затем открывается сохранённый файл и изменяются текст, размер шрифта и полужирное начертание текстового поля.
Для примеров нужен проект, настроенный согласно Installation. Сохраните каждый пример как файл с расширением .js в папке проекта и запустите его из этой папки командой node.
Note
Aspose.Slides for Node.js via .NET не имеет собственной справки по API. Он отражает API Aspose.Slides for .NET с именами в camelCase, поэтому ссылки на API в этой статье ведут к соответствующим классам и членам в Aspose.Slides for .NET API reference.Добавить текстовое поле
Чтобы добавить текстовое поле, добавьте автофигуру на слайд с помощью метода addAutoShape и задайте ей текст методом addTextFrame. В следующем примере к первому слайду новой презентации добавляется прямоугольник и презентация сохраняется как text-box.pptx:
const { Presentation, ShapeType, SaveFormat } = require("aspose.slides.via.net");
const presentation = new Presentation();
try {
const slide = presentation.slides.get(0);
// Позиция (x, y) и размер (ширина, высота) задаются в пунктах.
const textBox = slide.shapes.addAutoShape(ShapeType.Rectangle, 100, 100, 500, 80);
textBox.addTextFrame("Quarterly report");
presentation.save("text-box.pptx", SaveFormat.Pptx);
console.log("Saved text-box.pptx");
} finally {
presentation.dispose();
}
Слайд в text-box.pptx содержит прямоугольник шириной 500 пунктов и высотой 80 пунктов с текстом «Quarterly report» шрифтом и размером по умолчанию. Следующий пример изменяет это текстовое поле.
Изменить текст и его форматирование
В следующем примере открывается text-box.pptx, созданный в предыдущем примере, и получает первая фигура на первом слайде. Такие фигуры, как изображения и таблицы, не имеют текстового кадра, поэтому пример проверяет, что фигура является AutoShape перед тем как использовать её свойство textFrame. Затем он делает следующее:
- Заменяет текст через свойство text текстового кадра. После этого в текстовом кадре оказывается один абзац с одним фрагментом.
- Получает этот фрагмент из коллекций paragraphs и portions, а затем читает его portionFormat.
- Устанавливает fontHeight, размер шрифта в пунктах, и fontBold, которому присваивается значение типа NullableBool.
const { Presentation, AutoShape, NullableBool, SaveFormat } = require("aspose.slides.via.net");
const presentation = new Presentation("text-box.pptx");
try {
const shape = presentation.slides.get(0).shapes.get(0);
if (shape instanceof AutoShape) {
const textFrame = shape.textFrame;
textFrame.text = "Quarterly report: third quarter";
const portionFormat = textFrame.paragraphs.get(0).portions.get(0).portionFormat;
portionFormat.fontHeight = 32;
portionFormat.fontBold = NullableBool.True;
presentation.save("text-box-updated.pptx", SaveFormat.Pptx);
console.log("Saved text-box-updated.pptx");
} else {
console.log("The first shape on the first slide is not an AutoShape.");
}
} finally {
presentation.dispose();
}
В text-box-updated.pptx текстовое поле отображает «Quarterly report: third quarter» полужирным шрифтом размером 32 пункта. Поскольку новый текст представляет собой один фрагмент, оба свойства форматирования применяются ко всему тексту. Без лицензии каждый сохранённый файл получает водяной знак оценки. Поскольку text-box.pptx также был сохранён в режиме оценки, в text-box-updated.pptx их два; см. Evaluate Aspose.Slides.
FAQ
Почему fontBold принимает значение NullableBool, а не true или false?
Фрагмент может оставить свойство неопределённым и унаследовать его от абзаца, фигуры или макета и мастера слайда. NullableBool.NotDefined означает «унаследовать», а NullableBool.True и NullableBool.False переопределяют унаследованное значение. Присваивание true или false вызывает ошибку. По той же причине fontHeight возвращает NaN, когда фрагмент наследует размер шрифта.
Как изменить цвет текста?
Задайте заливку формата фрагмента: присвойте FillType.Solid свойству portionFormat.fillFormat.fillType, а затем задайте цвет, например "#FF0000", свойству portionFormat.fillFormat.solidFillColor.color. Добавьте FillType в список импортируемых имен из пакета.
Как отформатировать только часть текста?
Форматирование относится к фрагментам, поэтому поместите нужную часть текста в отдельный фрагмент. Создайте фрагмент с помощью Portion.CreatePortionFromText, добавьте его в абзац методом add коллекции portions абзаца и затем задайте новый portionFormat. Добавьте Portion в список импортируемых имен из пакета.
Почему при чтении текста появляется сообщение «… text has been truncated due to evaluation version limitation»?
Без лицензии Aspose.Slides возвращает только первые пять символов любого более длинного текста, который вы читаете, например textFrame.text, после чего добавляется это предупреждение. Текст, который вы записываете, сохраняется полностью. Примените лицензию, как описано в разделе Licensing, чтобы читать полный текст.