Управление текстовым полем
Тексты на слайдах обычно размещаются в текстовых полях или фигурах. Поэтому, чтобы добавить текст на слайд, нужно добавить текстовое поле и затем поместить текст внутрь текстового поля. Aspose.Slides для Android через Java предоставляет интерфейс IAutoShape, который позволяет добавлять фигуры с содержанием текста.
Информация
Aspose.Slides также предоставляет интерфейс IShape, который позволяет добавлять фигуры на слайды. Однако не все фигуры, добавленные через интерфейсIShape
, могут содержать текст. Но фигуры, добавленные через интерфейс IAutoShape, могут содержать текст.
Замечание
Поэтому, работая с фигурой, в которую вы хотите добавить текст, вы можете проверить и подтвердить, что она была приведена через интерфейсIAutoShape
. Только тогда вы сможете работать с TextFrame, который является свойством интерфейса IAutoShape
. Смотрите раздел Обновление текста на этой странице.
Создание текстового поля на слайде
Чтобы создать текстовое поле на слайде, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на первый слайд в только что созданной презентации.
- Добавьте объект IAutoShape с типом ShapeType установленным как
Rectangle
в заданной позиции на слайде и получите ссылку на только что добавленный объектIAutoShape
. - Добавьте свойство
TextFrame
к объектуIAutoShape
, которое будет содержать текст. В примере ниже мы добавили следующий текст: Aspose TextBox. - Наконец, запишите файл PPTX через объект
Presentation
.
Этот код на Java — реализация вышеописанных шагов — показывает, как добавить текст на слайд:
// Создает экземпляр Presentation
Presentation pres = new Presentation();
try {
// Получает первый слайд в презентации
ISlide sld = pres.getSlides().get_Item(0);
// Добавляет AutoShape с типом, установленным как Rectangle
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 150, 50);
// Добавляет TextFrame к прямоугольнику
ashp.addTextFrame(" ");
// Получает доступ к текстовому фрейму
ITextFrame txtFrame = ashp.getTextFrame();
// Создает объект Paragraph для текстового фрейма
IParagraph para = txtFrame.getParagraphs().get_Item(0);
// Создает объект Portion для абзаца
IPortion portion = para.getPortions().get_Item(0);
// Устанавливает текст
portion.setText("Aspose TextBox");
// Сохраняет презентацию на диск
pres.save("TextBox_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Проверка фигуры текстового поля
Aspose.Slides предоставляет свойство isTextBox() (из класса AutoShape), чтобы вы могли проверить фигуры и найти текстовые поля.
Этот код на Java показывает, как проверить, была ли фигура создана как текстовое поле:
Presentation pres = new Presentation("pres.pptx");
try {
ForEach.shape(pres, (shape, slide, index) ->
{
if (shape instanceof AutoShape)
{
AutoShape autoShape = (AutoShape)shape;
System.out.println(autoShape.isTextBox() ? "фигура является текстовым полем" : "фигура не является текстовым полем");
}
});
} finally {
if (pres != null) pres.dispose();
}
Добавление столбца в текстовое поле
Aspose.Slides предоставляет свойства ColumnCount и ColumnSpacing (из интерфейса ITextFrameFormat и класса TextFrameFormat), которые позволяют добавлять столбцы в текстовые поля. Вы можете указать количество столбцов в текстовом поле и установить расстояние в пунктах между столбцами.
Этот код на Java демонстрирует описанную операцию:
Presentation pres = new Presentation();
try {
// Получает первый слайд в презентации
ISlide slide = pres.getSlides().get_Item(0);
// Добавляет AutoShape с типом, установленным как Rectangle
IAutoShape aShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
// Добавляет TextFrame к прямоугольнику
aShape.addTextFrame("Все эти столбцы ограничены в рамках одного текстового контейнера -- " +
"вы можете добавлять или удалять текст, и новый или оставшийся текст автоматически подстраивается " +
"для размещения внутри контейнера. Вы не можете передавать текст из одного контейнера " +
"в другой -- мы говорили вам, что варианты колонок PowerPoint для текста ограничены!");
// Получает формат текста TextFrame
ITextFrameFormat format = aShape.getTextFrame().getTextFrameFormat();
// Указывает количество столбцов в TextFrame
format.setColumnCount(3);
// Указывает расстояние между столбцами
format.setColumnSpacing(10);
// Сохраняет презентацию
pres.save("ColumnCount.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Добавление столбца в текстовый фрейм
Aspose.Slides для Android через Java предоставляет свойство ColumnCount (из интерфейса ITextFrameFormat), которое позволяет вам добавлять столбцы в текстовые фреймы. С помощью этого свойства вы можете указать предпочтительное количество столбцов в текстовом фрейме.
Этот код на Java показывает, как добавить столбец внутри текстового фрейма:
String outPptxFileName = "ColumnsTest.pptx";
Presentation pres = new Presentation();
try {
IAutoShape shape1 = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
TextFrameFormat format = (TextFrameFormat)shape1.getTextFrame().getTextFrameFormat();
format.setColumnCount(2);
shape1.getTextFrame().setText("Все эти столбцы заставляют оставаться в рамках одного текстового контейнера -- " +
"вы можете добавлять или удалять текст - и новый или оставшийся текст автоматически подстраивается " +
"для размещения внутри контейнера. Вы не можете, чтобы текст переходил из одного контейнера " +
"в другой, однако -- потому что варианты колонок PowerPoint для текста ограничены!");
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(Double.NaN == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test != null) test.dispose();
}
format.setColumnSpacing(20);
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test1 = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test1.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(20 == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test1 != null) test1.dispose();
}
format.setColumnCount(3);
format.setColumnSpacing(15);
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test2 = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test2.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(3 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(15 == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test2 != null) test2.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Обновление текста
Aspose.Slides позволяет изменять или обновлять текст, содержащийся в текстовом поле, или все тексты, содержащиеся в презентации.
Этот код на Java демонстрирует операцию, в ходе которой все тексты в презентации обновляются или изменяются:
Presentation pres = new Presentation("text.pptx");
try {
for (ISlide slide : pres.getSlides())
{
for (IShape shape : slide.getShapes())
{
if (shape instanceof IAutoShape) //Проверяет, поддерживает ли фигура текстовый фрейм (IAutoShape).
{
IAutoShape autoShape = (IAutoShape)shape;
for (IParagraph paragraph : autoShape.getTextFrame().getParagraphs()) //Итерирует по абзацам в текстовом фрейме
{
for (IPortion portion : paragraph.getPortions()) //Итерирует по каждой части в абзаце
{
portion.setText(portion.getText().replace("years", "months")); //Изменяет текст
portion.getPortionFormat().setFontBold(NullableBool.True); //Изменяет форматирование
}
}
}
}
}
//Сохраняет измененную презентацию
pres.save("text-changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Добавление текстового поля с гиперссылкой
Вы можете вставить ссылку в текстовое поле. Когда текстовое поле будет нажато, пользователи будут перенаправлены на открытие ссылки.
Чтобы добавить текстовое поле с гиперссылкой, выполните следующие шаги:
- Создайте экземпляр класса
Presentation
. - Получите ссылку на первый слайд в только что созданной презентации.
- Добавьте объект
AutoShape
сShapeType
, установленным какRectangle
, в заданной позиции на слайде и получите ссылку на только что добавленный объект AutoShape. - Добавьте
TextFrame
к объектуAutoShape
, который содержит Aspose TextBox в качестве текста по умолчанию. - Создайте экземпляр класса
IHyperlinkManager
. - Присвойте объект
IHyperlinkManager
свойству HyperlinkClick , связанному с вашей предпочтительной частьюTextFrame
. - Наконец, запишите файл PPTX через объект
Presentation
.
Этот код на Java — реализация вышеописанных шагов — показывает, как добавить текстовое поле с гиперссылкой на слайд:
// Создает экземпляр класса Presentation, представляющий PPTX
Presentation pres = new Presentation();
try {
// Получает первый слайд в презентации
ISlide slide = pres.getSlides().get_Item(0);
// Добавляет объект AutoShape с типом, установленным как Rectangle
IShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 150, 50);
// Приводит фигуру к AutoShape
IAutoShape pptxAutoShape = (IAutoShape)shape;
// Получает доступ к свойству ITextFrame, связанному с AutoShape
pptxAutoShape.addTextFrame("");
ITextFrame textFrame = pptxAutoShape.getTextFrame();
// Добавляет некоторый текст в фрейм
textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).setText("Aspose.Slides");
// Устанавливает гиперссылку для текста части
IHyperlinkManager hyperlinkManager = textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).
getPortionFormat().getHyperlinkManager();
hyperlinkManager.setExternalHyperlinkClick("http://www.aspose.com");
// Сохраняет PPTX-презентацию
pres.save("hLink_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}