Управление абзацами PowerPoint в JavaScript
Aspose.Slides предоставляет все классы, необходимые для работы с текстами PowerPoint, абзацами и частями в Java.
- Aspose.Slides предоставляет класс TextFrame для добавления объектов, представляющих абзац. Объект
ITextFameможет содержать один или несколько абзацев (каждый абзац создаётся с помощью возврата каретки). - Aspose.Slides предоставляет класс Paragraph для добавления объектов, представляющих части. Объект
IParagraphможет содержать одну или несколько частей (коллекцию объектов iPortions). - Aspose.Slides предоставляет класс Portion для добавления объектов, представляющих тексты и их свойства форматирования.
Объект IParagraph способен обрабатывать тексты с различными свойствами форматирования через его вложенные объекты IPortion.
Добавить несколько абзацев, содержащих несколько частей
Эти шаги показывают, как добавить текстовый фрейм, содержащий 3 абзаца, каждый из которых содержит 3 части:
- Создайте экземпляр класса Presentation.
- Получите ссылку на нужный слайд по его индексу.
- Добавьте прямоугольный AutoShape на слайд.
- Получите
ITextFrame, связанный с AutoShape. - Создайте два объекта Paragraph и добавьте их в коллекцию
IParagraphsTextFrame. - Создайте три объекта Portion для каждого нового
IParagraph(две части по умолчанию для абзаца) и добавьте каждый объектIPortionв коллекцию IPortion соответствующегоIParagraph. - Установите текст для каждой части.
- Примените желаемые свойства форматирования к каждой части с помощью свойств форматирования, доступных в объекте
IPortion. - Сохраните изменённую презентацию.
Этот Javascript‑код реализует описанные шаги по добавлению абзацев, содержащих части:
// Создать объект класса Presentation, представляющий файл PPTX
var pres = new aspose.slides.Presentation();
try {
// Доступ к первому слайду
var slide = pres.getSlides().get_Item(0);
// Добавить AutoShape типа Rectangle
var ashp = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 150, 300, 150);
// Получить TextFrame AutoShape
var tf = ashp.getTextFrame();
// Create Paragraphs and Portions with different text formats
var para0 = tf.getParagraphs().get_Item(0);
var port01 = new aspose.slides.Portion();
var port02 = new aspose.slides.Portion();
para0.getPortions().add(port01);
para0.getPortions().add(port02);
var para1 = new aspose.slides.Paragraph();
tf.getParagraphs().add(para1);
var port10 = new aspose.slides.Portion();
var port11 = new aspose.slides.Portion();
var port12 = new aspose.slides.Portion();
para1.getPortions().add(port10);
para1.getPortions().add(port11);
para1.getPortions().add(port12);
var para2 = new aspose.slides.Paragraph();
tf.getParagraphs().add(para2);
var port20 = new aspose.slides.Portion();
var port21 = new aspose.slides.Portion();
var port22 = new aspose.slides.Portion();
para2.getPortions().add(port20);
para2.getPortions().add(port21);
para2.getPortions().add(port22);
for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
var portion = tf.getParagraphs().get_Item(i).getPortions().get_Item(j);
portion.setText("Portion0" + j);
if (j == 0) {
portion.getPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
portion.getPortionFormat().setFontBold(aspose.slides.NullableBool.True);
portion.getPortionFormat().setFontHeight(15);
} else if (j == 1) {
portion.getPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLUE"));
portion.getPortionFormat().setFontItalic(aspose.slides.NullableBool.True);
portion.getPortionFormat().setFontHeight(18);
}
}
}
// Сохранить PPTX на диск
pres.save("multiParaPort_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Управление маркерами абзаца
Маркированные списки помогают быстро и эффективно организовать и представить информацию. Маркированные абзацы всегда легче читать и понимать.
- Создайте экземпляр класса Presentation.
- Получите ссылку на нужный слайд по его индексу.
- Добавьте autoshape к выбранному слайду.
- Получите TextFrame автоконтурного объекта.
- Удалите абзац по умолчанию в
TextFrame. - Создайте первый экземпляр абзаца с помощью класса Paragraph.
- Установите тип маркера
Typeдля абзаца вSymbolи задайте символ маркера. - Установите текст абзаца
Text. - Установите отступ абзаца
Indentдля маркера. - Задайте цвет маркера.
- Задайте высоту маркера.
- Добавьте новый абзац в коллекцию абзацев
TextFrame. - Добавьте второй абзац и повторите процесс, описанный в шагах 7‑13.
- Сохраните презентацию.
Этот Javascript‑код показывает, как добавить маркер абзаца:
// Создаёт экземпляр класса Presentation, представляющего файл PPTX
var pres = new aspose.slides.Presentation();
try {
// Получает первый слайд
var slide = pres.getSlides().get_Item(0);
// Добавляет и получает Autoshape
var aShp = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 200, 200, 400, 200);
// Получает текстовый фрейм автоконтурного объекта
var txtFrm = aShp.getTextFrame();
// Удаляет абзац по умолчанию
txtFrm.getParagraphs().removeAt(0);
// Создаёт абзац
var para = new aspose.slides.Paragraph();
// Устанавливает стиль маркера абзаца и символ
para.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
para.getParagraphFormat().getBullet().setChar(8226);
// Устанавливает текст абзаца
para.setText("Welcome to Aspose.Slides");
// Устанавливает отступ маркера
para.getParagraphFormat().setIndent(25);
// Устанавливает цвет маркера
para.getParagraphFormat().getBullet().getColor().setColorType(aspose.slides.ColorType.RGB);
para.getParagraphFormat().getBullet().getColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
para.getParagraphFormat().getBullet().setBulletHardColor(aspose.slides.NullableBool.True);// установить IsBulletHardColor в true, чтобы использовать собственный цвет маркера
// Устанавливает высоту маркера
para.getParagraphFormat().getBullet().setHeight(100);
// Добавляет абзац в текстовый фрейм
txtFrm.getParagraphs().add(para);
// Создаёт второй абзац
var para2 = new aspose.slides.Paragraph();
// Устанавливает тип и стиль маркера абзаца
para2.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Numbered);
para2.getParagraphFormat().getBullet().setNumberedBulletStyle(aspose.slides.NumberedBulletStyle.BulletCircleNumWDBlackPlain);
// Добавляет текст абзаца
para2.setText("This is numbered bullet");
// Устанавливает отступ маркера
para2.getParagraphFormat().setIndent(25);
para2.getParagraphFormat().getBullet().getColor().setColorType(aspose.slides.ColorType.RGB);
para2.getParagraphFormat().getBullet().getColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
para2.getParagraphFormat().getBullet().setBulletHardColor(aspose.slides.NullableBool.True);// установить IsBulletHardColor в true, чтобы использовать собственный цвет маркера
// Устанавливает высоту маркера
para2.getParagraphFormat().getBullet().setHeight(100);
// Добавляет абзац в текстовый фрейм
txtFrm.getParagraphs().add(para2);
// Сохраняет изменённую презентацию
pres.save("Bullet_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Управление маркерами‑картинками
Маркированные списки помогают быстро и эффективно организовать и представить информацию. Абзацы с картинками легко читаются и понимаются.
- Создайте экземпляр класса Presentation.
- Получите ссылку на нужный слайд по его индексу.
- Добавьте autoshape на слайд.
- Получите TextFrame автоконтурного объекта.
- Удалите абзац по умолчанию в
TextFrame. - Создайте первый экземпляр абзаца с помощью класса Paragraph.
- Загрузите изображение в PPImage.
- Установите тип маркера в Picture и задайте изображение.
- Установите текст абзаца
Text. - Установите отступ абзаца
Indentдля маркера. - Задайте цвет маркера.
- Задайте высоту маркера.
- Добавьте новый абзац в коллекцию абзацев
TextFrame. - Добавьте второй абзац и повторите процесс, основанный на предыдущих шагах.
- Сохраните изменённую презентацию.
Этот Javascript‑код показывает, как добавить и управлять маркерами‑картинками:
// Создаёт экземпляр класса Presentation, представляющего файл PPTX
var presentation = new aspose.slides.Presentation();
try {
// Получает первый слайд
var slide = presentation.getSlides().get_Item(0);
// Создаёт изображение для маркеров
var picture;
var image = aspose.slides.Images.fromFile("bullets.png");
try {
picture = presentation.getImages().addImage(image);
} finally {
if (image != null) {
image.dispose();
}
}
// Добавляет и получает Autoshape
var autoShape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 200, 200, 400, 200);
// Получает текстовый фрейм автoshape
var textFrame = autoShape.getTextFrame();
// Удаляет абзац по умолчанию
textFrame.getParagraphs().removeAt(0);
// Создаёт новый абзац
var paragraph = new aspose.slides.Paragraph();
paragraph.setText("Welcome to Aspose.Slides");
// Устанавливает стиль маркера абзаца и изображение
paragraph.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Picture);
paragraph.getParagraphFormat().getBullet().getPicture().setImage(picture);
// Устанавливает высоту маркера
paragraph.getParagraphFormat().getBullet().setHeight(100);
// Добавляет абзац в текстовый фрейм
textFrame.getParagraphs().add(paragraph);
// Сохраняет презентацию как файл PPTX
presentation.save("ParagraphPictureBulletsPPTX_out.pptx", aspose.slides.SaveFormat.Pptx);
// Сохраняет презентацию как файл PPT
presentation.save("ParagraphPictureBulletsPPT_out.ppt", aspose.slides.SaveFormat.Ppt);
} catch (e) {console.log(e);
} finally {
if (presentation != null) {
presentation.dispose();
}
}
Управление многоуровневыми маркерами
Маркированные списки помогают быстро и эффективно организовать и представить информацию. Многоуровневые маркеры легко читаются и понимаются.
- Создайте экземпляр класса Presentation.
- Получите ссылку на нужный слайд по его индексу.
- Добавьте autoshape на новый слайд.
- Получите TextFrame автоконтурного объекта.
- Удалите абзац по умолчанию в
TextFrame. - Создайте первый экземпляр абзаца через класс Paragraph и установите глубину 0.
- Создайте второй экземпляр абзаца через класс
Paragraphи установите глубину 1. - Создайте третий экземпляр абзаца через класс
Paragraphи установите глубину 2. - Создайте четвёртый экземпляр абзаца через класс
Paragraphи установите глубину 3. - Добавьте новые абзацы в коллекцию абзацев
TextFrame. - Сохраните изменённую презентацию.
Этот Javascript‑код показывает, как добавить и управлять многоуровневыми маркерами:
// Создаёт экземпляр класса Presentation, представляющего файл PPTX
var pres = new aspose.slides.Presentation();
try {
// Получает первый слайд
var slide = pres.getSlides().get_Item(0);
// Добавляет и получает Autoshape
var aShp = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 200, 200, 400, 200);
// Получает текстовый фрейм созданного Autoshape
var text = aShp.addTextFrame("");
// Очищает абзац по умолчанию
text.getParagraphs().clear();
// Добавляет первый абзац
var para1 = new aspose.slides.Paragraph();
para1.setText("Content");
para1.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
para1.getParagraphFormat().getBullet().setChar(8226);
para1.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
para1.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
// Устанавливает уровень маркера
para1.getParagraphFormat().setDepth(0);
// Добавляет второй абзац
var para2 = new aspose.slides.Paragraph();
para2.setText("Second Level");
para2.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
para2.getParagraphFormat().getBullet().setChar('-');
para2.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
para2.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
// Устанавливает уровень маркера
para2.getParagraphFormat().setDepth(1);
// Добавляет третий абзац
var para3 = new aspose.slides.Paragraph();
para3.setText("Third Level");
para3.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
para3.getParagraphFormat().getBullet().setChar(8226);
para3.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
para3.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
// Устанавливает уровень маркера
para3.getParagraphFormat().setDepth(2);
// Добавляет четвёртый абзац
var para4 = new aspose.slides.Paragraph();
para4.setText("Fourth Level");
para4.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
para4.getParagraphFormat().getBullet().setChar('-');
para4.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
para4.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
// Устанавливает уровень маркера
para4.getParagraphFormat().setDepth(3);
// Добавляет абзацы в коллекцию
text.getParagraphs().add(para1);
text.getParagraphs().add(para2);
text.getParagraphs().add(para3);
text.getParagraphs().add(para4);
// Сохраняет презентацию как файл PPTX
pres.save("MultilevelBullet.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Управление абзацами с пользовательским нумерованным списком
Класс BulletFormat предоставляет свойство NumberedBulletStartWith и другие, позволяющие управлять абзацами с пользовательской нумерацией или форматированием.
- Создайте экземпляр класса Presentation.
- Получите слайд, содержащий абзац.
- Добавьте autoshape на слайд.
- Получите TextFrame автоконтурного объекта.
- Удалите абзац по умолчанию в
TextFrame. - Создайте первый экземпляр абзаца через класс Paragraph и установите NumberedBulletStartWith в 2.
- Создайте второй экземпляр абзаца через класс
Paragraphи установитеNumberedBulletStartWithв 3. - Создайте третий экземпляр абзаца через класс
Paragraphи установитеNumberedBulletStartWithв 7. - Добавьте новые абзацы в коллекцию абзацев
TextFrame. - Сохраните изменённую презентацию.
Этот Javascript‑код показывает, как добавить и управлять абзацами с пользовательской нумерацией или форматированием:
var presentation = new aspose.slides.Presentation();
try {
var shape = presentation.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 200, 200, 400, 200);
// Получает текстовый фрейм созданного автоконтурного объекта
var textFrame = shape.getTextFrame();
// Удаляет существующий абзац по умолчанию
textFrame.getParagraphs().removeAt(0);
// Первый список
var paragraph1 = new aspose.slides.Paragraph();
paragraph1.setText("bullet 2");
paragraph1.getParagraphFormat().setDepth(4);
paragraph1.getParagraphFormat().getBullet().setNumberedBulletStartWith(2);
paragraph1.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Numbered);
textFrame.getParagraphs().add(paragraph1);
var paragraph2 = new aspose.slides.Paragraph();
paragraph2.setText("bullet 3");
paragraph2.getParagraphFormat().setDepth(4);
paragraph2.getParagraphFormat().getBullet().setNumberedBulletStartWith(3);
paragraph2.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Numbered);
textFrame.getParagraphs().add(paragraph2);
var paragraph5 = new aspose.slides.Paragraph();
paragraph5.setText("bullet 7");
paragraph5.getParagraphFormat().setDepth(4);
paragraph5.getParagraphFormat().getBullet().setNumberedBulletStartWith(7);
paragraph5.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Numbered);
textFrame.getParagraphs().add(paragraph5);
presentation.save("SetCustomBulletsNumber-slides.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (presentation != null) {
presentation.dispose();
}
}
Установка отступа абзаца
- Создайте экземпляр класса Presentation.
- Получите ссылку на нужный слайд по его индексу.
- Добавьте прямоугольный autoshape на слайд.
- Добавьте TextFrame с тремя абзацами к прямоугольному автоконтурному объекту.
- Спрячьте линии прямоугольника.
- Установите отступ для каждого Paragraph через его свойство BulletOffset.
- Запишите изменённую презентацию в файл PPT.
Этот Javascript‑код показывает, как установить отступ абзаца:
// Создать экземпляр класса Presentation
var pres = new aspose.slides.Presentation();
try {
// Получить первый слайд
var sld = pres.getSlides().get_Item(0);
// Добавить форму Rectangle
var rect = sld.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 100, 100, 500, 150);
// Добавить TextFrame к прямоугольнику
var tf = rect.addTextFrame("This is first line \rThis is second line \rThis is third line");
// Установить автоматическое подгонку текста к форме
tf.getTextFrameFormat().setAutofitType(aspose.slides.TextAutofitType.Shape);
// Скрыть линии прямоугольника
rect.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
// Получить первый абзац в TextFrame и установить его отступ
var para1 = tf.getParagraphs().get_Item(0);
// Установка стиля маркера абзаца и символа
para1.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
para1.getParagraphFormat().getBullet().setChar(8226);
para1.getParagraphFormat().setAlignment(aspose.slides.TextAlignment.Left);
para1.getParagraphFormat().setDepth(2);
para1.getParagraphFormat().setIndent(30);
// Получить второй абзац в TextFrame и установить его отступ
var para2 = tf.getParagraphs().get_Item(1);
para2.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
para2.getParagraphFormat().getBullet().setChar(8226);
para2.getParagraphFormat().setAlignment(aspose.slides.TextAlignment.Left);
para2.getParagraphFormat().setDepth(2);
para2.getParagraphFormat().setIndent(40);
// Получить третий абзац в TextFrame и установить его отступ
var para3 = tf.getParagraphs().get_Item(2);
para3.getParagraphFormat().getBullet().setType(aspose.slides.BulletType.Symbol);
para3.getParagraphFormat().getBullet().setChar(8226);
para3.getParagraphFormat().setAlignment(aspose.slides.TextAlignment.Left);
para3.getParagraphFormat().setDepth(2);
para3.getParagraphFormat().setIndent(50);
// Сохранить презентацию на диск
pres.save("InOutDent_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Установка висячего отступа для абзаца
Этот Javascript‑код показывает, как установить висячий отступ для абзаца:
var pres = new aspose.slides.Presentation();
try {
var autoShape = pres.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 250, 550, 150);
var para1 = new aspose.slides.Paragraph();
para1.setText("Example");
var para2 = new aspose.slides.Paragraph();
para2.setText("Set Hanging Indent for Paragraph");
var para3 = new aspose.slides.Paragraph();
para3.setText("This code shows you how to set the hanging indent for a paragraph: ");
para2.getParagraphFormat().setMarginLeft(10.0);
para3.getParagraphFormat().setMarginLeft(20.0);
autoShape.getTextFrame().getParagraphs().add(para1);
autoShape.getTextFrame().getParagraphs().add(para2);
autoShape.getTextFrame().getParagraphs().add(para3);
pres.save("pres.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Управление свойствами End Run для абзаца
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд, содержащий абзац, по его позиции.
- Добавьте прямоугольный autoshape на слайд.
- Добавьте TextFrame с двумя абзацами к прямоугольнику.
- Установите
FontHeightи тип шрифта для абзацев. - Установите свойства End для абзацев.
- Запишите изменённую презентацию в файл PPTX.
Этот Javascript‑код показывает, как установить свойства End для абзацев в PowerPoint:
var pres = new aspose.slides.Presentation();
try {
var shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 10, 200, 250);
var para1 = new aspose.slides.Paragraph();
para1.getPortions().add(new aspose.slides.Portion("Sample text"));
var para2 = new aspose.slides.Paragraph();
para2.getPortions().add(new aspose.slides.Portion("Sample text 2"));
var portionFormat = new aspose.slides.PortionFormat();
portionFormat.setFontHeight(48);
portionFormat.setLatinFont(new aspose.slides.FontData("Times New Roman"));
para2.setEndParagraphPortionFormat(portionFormat);
shape.getTextFrame().getParagraphs().add(para1);
shape.getTextFrame().getParagraphs().add(para2);
pres.save(resourcesOutputPath + "pres.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Импорт HTML‑текста в абзацы
Aspose.Slides предоставляет расширенную поддержку импорта HTML‑текста в абзацы.
- Создайте экземпляр класса Presentation.
- Получите ссылку на нужный слайд по его индексу.
- Добавьте autoshape на слайд.
- Добавьте и получите
autoshapeTextFrame. - Удалите абзац по умолчанию в
ITextFrame. - Прочитайте исходный HTML‑файл в объекте TextReader.
- Создайте первый экземпляр абзаца через класс Paragraph.
- Добавьте содержимое HTML‑файла из прочитанного TextReader в ParagraphCollection TextFrame.
- Сохраните изменённую презентацию.
Этот Javascript‑код реализует шаги по импорту HTML‑текстов в абзацы:
// Создать пустой экземпляр презентации
var pres = new aspose.slides.Presentation();
try {
// Получить первый слайд презентации по умолчанию
var slide = pres.getSlides().get_Item(0);
// Добавление AutoShape для размещения HTML‑содержимого
var ashape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 10, 10, pres.getSlideSize().getSize().getWidth() - 20, pres.getSlideSize().getSize().getHeight() - 10);
ashape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
// Добавление текстового фрейма к форме
ashape.addTextFrame("");
// Очистка всех абзацев в добавленном текстовом фрейме
ashape.getTextFrame().getParagraphs().clear();
// Загрузка HTML‑файла с помощью StreamReader
var tr = java.newInstanceSync("StreamReader", "file.html");
// Добавление текста из HTML‑потока в текстовый фрейм
ashape.getTextFrame().getParagraphs().addFromHtml(tr.readToEnd());
// Сохранение презентации
pres.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Экспорт текста абзацев в HTML
Aspose.Slides предоставляет расширенную поддержку экспорта текстов (содержащихся в абзацах) в HTML.
- Создайте экземпляр класса Presentation и загрузите нужную презентацию.
- Получите ссылку на нужный слайд по его индексу.
- Получите форму, содержащую текст, который будет экспортирован в HTML.
- Получите форму TextFrame.
- Создайте экземпляр
StreamWriterи добавьте новый HTML‑файл. - Укажите начальный индекс для
StreamWriterи экспортируйте нужные абзацы.
Этот Javascript‑код показывает, как экспортировать тексты абзацев PowerPoint в HTML:
// Загрузить файл презентации
var pres = new aspose.slides.Presentation("ExportingHTMLText.pptx");
try {
// Получить первый слайд презентации по умолчанию
var slide = pres.getSlides().get_Item(0);
// Желаемый индекс
var index = 0;
// Доступ к добавленной фигуре
var ashape = slide.getShapes().get_Item(index);
// Создание выходного HTML файла
var os = java.newInstanceSync("java.io.FileOutputStream", "output.html");
var writer = java.newInstanceSync("java.io.OutputStreamWriter", os, "UTF-8");
// Извлечение первого абзаца в виде HTML
// Запись данных абзацев в HTML, указав начальный индекс абзаца и количество копируемых абзацев
writer.write(ashape.getTextFrame().getParagraphs().exportToHtml(0, ashape.getTextFrame().getParagraphs().getCount(), null));
writer.close();
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
Сохранить абзац как изображение
В этом разделе мы рассмотрим два примера, демонстрирующие, как сохранить текстовый абзац, представленный интерфейсом Paragraph, в виде изображения. Оба примера включают получение изображения формы, содержащей абзац, с помощью методов getImage интерфейса Shape, вычисление границ абзаца внутри формы и экспорт его в виде растрового изображения. Такие подходы позволяют извлекать отдельные части текста из презентаций PowerPoint и сохранять их как отдельные изображения, что может быть полезно в различных сценариях.
Предположим, у нас есть файл презентации sample.pptx с одним слайдом, на котором первая форма — это текстовое поле, содержащее три абзаца.

Пример 1
В этом примере мы получаем второй абзац в виде изображения. Для этого извлекаем изображение формы с первого слайда презентации, затем вычисляем границы второго абзаца в текстовом фрейме формы. Затем абзац перерисовывается на новом растровом изображении, которое сохраняется в формате PNG. Этот метод особенно полезен, когда нужно сохранить конкретный абзац как отдельное изображение, сохранив точные размеры и форматирование текста.
const imageio = java.import("javax.imageio.ImageIO");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const firstShape = presentation.getSlides().get_Item(0).getShapes().get_Item(0);
// Сохранить фигуру в памяти в виде битмапа.
const shapeImage = firstShape.getImage();
const shapeImageStream = java.newInstanceSync("java.io.ByteArrayOutputStream");
shapeImage.save(shapeImageStream, aspose.slides.ImageFormat.Png);
shapeImage.dispose();
shapeImageStream.flush();
// Создать bitmap фигуры из памяти.
const byteBuffer = java.callMethodSync(shapeImageStream, "toByteArray");
const javaBytes = java.newArray("byte", Array.from(byteBuffer));
const ByteArrayInputStream = java.import("java.io.ByteArrayInputStream");
const shapeImageInputStream = new ByteArrayInputStream(javaBytes);
const shapeBitmap = imageio.read(shapeImageInputStream);
// Вычислить границы второго абзаца.
const secondParagraph = firstShape.getTextFrame().getParagraphs().get_Item(1);
const paragraphRectangle = secondParagraph.getRect();
// Вычислить координаты и размер выходного изображения (минимальный размер — 1x1 пиксель).
const imageX = Math.floor(paragraphRectangle.getX());
const imageY = Math.floor(paragraphRectangle.getY());
const imageWidth = Math.max(1, Math.ceil(paragraphRectangle.getWidth()));
const imageHeight = Math.max(1, Math.ceil(paragraphRectangle.getHeight()));
// Обрезать bitmap фигуры, чтобы получить только bitmap абзаца.
const paragraphBitmap = shapeBitmap.getSubimage(imageX, imageY, imageWidth, imageHeight);
const file = java.newInstanceSync("java.io.File", "paragraph.png");
imageio.write(paragraphBitmap, "png", file);
} finally {
if (presentation != null) {
presentation.dispose();
}
}
Результат:

Пример 2
В этом примере мы расширяем предыдущий подход, добавляя коэффициенты масштабирования к изображению абзаца. Форма извлекается из презентации и сохраняется как изображение с коэффициентом масштабирования 2. Это позволяет получить изображение более высокого разрешения при экспорте абзаца. Затем границы абзаца рассчитываются с учётом масштаба. Масштабирование может быть особенно полезно, когда требуется более детализированное изображение, например, для печатных материалов высокого качества.
const imageScaleX = 2;
const imageScaleY = imageScaleX;
const imageio = java.import("javax.imageio.ImageIO");
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
const firstShape = presentation.getSlides().get_Item(0).getShapes().get_Item(0);
// Сохранить фигуру в памяти в виде битмапа с масштабированием.
const shapeImage = firstShape.getImage(aspose.slides.ShapeThumbnailBounds.Shape, imageScaleX, imageScaleY);
const shapeImageStream = java.newInstanceSync("java.io.ByteArrayOutputStream");
shapeImage.save(shapeImageStream, aspose.slides.ImageFormat.Png);
shapeImage.dispose();
// Создать битмап фигуры из памяти.
const byteBuffer = java.callMethodSync(shapeImageStream, "toByteArray");
const javaBytes = java.newArray("byte", Array.from(byteBuffer));
const ByteArrayInputStream = java.import("java.io.ByteArrayInputStream");
const shapeImageInputStream = new ByteArrayInputStream(javaBytes);
const shapeBitmap = imageio.read(shapeImageInputStream);
// Вычислить границы второго абзаца.
const secondParagraph = firstShape.getTextFrame().getParagraphs().get_Item(1);
const paragraphRectangle = secondParagraph.getRect();
paragraphRectangle.setRect(
paragraphRectangle.getX() * imageScaleX,
paragraphRectangle.getY() * imageScaleY,
paragraphRectangle.getWidth() * imageScaleX,
paragraphRectangle.getHeight() * imageScaleY
);
// Вычислить координаты и размер выходного изображения (минимальный размер - 1x1 пиксель).
const imageX = Math.floor(paragraphRectangle.getX());
const imageY = Math.floor(paragraphRectangle.getY());
const imageWidth = Math.max(1, Math.ceil(paragraphRectangle.getWidth()));
const imageHeight = Math.max(1, Math.ceil(paragraphRectangle.getHeight()));
// Обрезать битмап фигуры, чтобы получить только битмап абзаца.
const paragraphBitmap = shapeBitmap.getSubimage(imageX, imageY, imageWidth, imageHeight);
const file = java.newInstanceSync("java.io.File", "paragraph.png");
imageio.write(paragraphBitmap, "png", file);
} finally {
if (presentation != null) {
presentation.dispose();
}
}
FAQ
Можно ли полностью отключить перенос строк внутри текстового фрейма?
Да. Используйте настройку переноса текста фрейма (setWrapText), чтобы отключить перенос, и строки не будут разрываться по краям фрейма.
Как получить точные границы конкретного абзаца на слайде?
Можно получить прямоугольник, ограничивающий абзац (и даже отдельную часть), чтобы узнать его точное положение и размеры на слайде.
Где управляется выравнивание абзаца (лево/право/центр/по ширине)?
Метод setAlignment относится к настройке уровня абзаца в ParagraphFormat; он применяется ко всему абзацу независимо от форматирования отдельных частей.
Можно ли установить язык проверки орфографии только для части абзаца (например, одного слова)?
Да. Язык задаётся на уровне части (PortionFormat.setLanguageId), поэтому в одном абзаце могут сосуществовать несколько языков.