Как да форматирате текст в Java
Aspose.Slides FOSS for Java предоставя фино настроено форматиране на текст чрез класа PortionFormat. Portion е най‑малката независима единица текст; тя съответства на един форматен пробег в рамките на параграф. Това ръководство показва как да приложите удебеляване, курсив, размер на шрифта и цветово форматиране към текст в презентация.
Ръководство стъпка по стъпка
Стъпка 1: Добавете Maven зависимост
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Стъпка 2: Добавете форма с текстова рамка
Преди форматирането на текста, формата трябва да съдържа TextFrame. Използвайте shape.addTextFrame(), за да създадете такава.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 500, 150
);
ITextFrame tf = shape.addTextFrame("Default text: will be formatted");
prs.save("output.pptx", SaveFormat.PPTX);
}Стъпка 3: Достъп до TextFrame
shape.addTextFrame() връща обекта TextFrame. Можете също да го извлечете по‑късно чрез shape.getTextFrame().
ITextFrame tf = shape.getTextFrame(); // if the frame already exists
ITextFrame tf = shape.addTextFrame(""); // creates a new frameЕдин TextFrame съдържа списък от Paragraph обекти (tf.getParagraphs()). Всеки Paragraph съдържа Portion обекти (paragraph.getPortions()).
Стъпка 4: Прилагане на удебелено и курсивно форматиране
Използвайте portionFormat.setFontBold() и portionFormat.setFontItalic(). Тези методи приемат NullableBool.TRUE, NullableBool.FALSE или NullableBool.NOT_DEFINED (наследени от master).
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 500, 150
);
ITextFrame tf = shape.addTextFrame("Bold and italic text");
IPortionFormat fmt = tf.getParagraphs().get(0)
.getPortions().get(0).getPortionFormat();
fmt.setFontBold(NullableBool.TRUE);
fmt.setFontItalic(NullableBool.TRUE);
prs.save("bold-italic.pptx", SaveFormat.PPTX);
}Стъпка 5: Задайте размер на шрифта и цвят
Задайте portionFormat.setFontHeight() за размер (в точки) и използвайте getFillFormat() за цвят.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 500, 150
);
ITextFrame tf = shape.addTextFrame("Large corporate-blue heading");
IPortionFormat fmt = tf.getParagraphs().get(0)
.getPortions().get(0).getPortionFormat();
fmt.setFontHeight(32); // 32pt font
fmt.setFontBold(NullableBool.TRUE);
fmt.getFillFormat().setFillType(FillType.SOLID);
fmt.getFillFormat().getSolidFillColor().setColor(
Color.fromArgb(255, 0, 70, 127)
);
prs.save("colored-text.pptx", SaveFormat.PPTX);
}Color.fromArgb(alpha, red, green, blue) приема стойности 0-255 за всеки канал.
Стъпка 6: Множество части в един абзац
Един абзац може да съдържа множество части с различно форматиране. Добавете нов Portion към колекцията getPortions() на абзаца:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 600, 100
);
ITextFrame tf = shape.addTextFrame(""); // start with empty frame
IParagraph paragraph = tf.getParagraphs().get(0);
// First portion: normal text
IPortion portion1 = paragraph.getPortions().get(0);
portion1.setText("Normal text followed by ");
portion1.getPortionFormat().setFontHeight(20);
// Second portion: bold red text
Portion portion2 = new Portion("bold red text");
portion2.getPortionFormat().setFontHeight(20);
portion2.getPortionFormat().setFontBold(NullableBool.TRUE);
portion2.getPortionFormat().getFillFormat().setFillType(FillType.SOLID);
portion2.getPortionFormat().getFillFormat().getSolidFillColor().setColor(
Color.fromArgb(255, 200, 0, 0)
);
paragraph.getPortions().add(portion2);
prs.save("mixed-format.pptx", SaveFormat.PPTX);
}Чести проблеми и решения
Текстът се появява черен, дори след задаване на цвят
Уверете се, че getFillFormat().setFillType(FillType.SOLID) се извиква преди задаването на цвета. Без задаване на типа запълване, промяната на цвета може да няма ефект.
NullableBool.TRUE против true
portionFormat.setFontBold() очаква NullableBool.TRUE, а не Java‑овия true. Предаването на булева стойност ще предизвика грешка при компилация, тъй като методът очаква изброеното NullableBool.
Шрифтът не се появява в запазения файл
Методът setLatinFont() задава латинското семейство шрифтове. Ако не е зададено, се използва шрифтът от темата на презентацията. Персонализираните шрифтове трябва да бъдат вградени или налични на машината за преглед.
Често задавани въпроси
Как да променя семейство на шрифта?
Задайте portionFormat.setLatinFont():
fmt.setLatinFont(new FontData("Arial"));FontData приема името на шрифтовото семейство като низ.
Как да зададем подравняване на абзац?
Използвайте paragraphFormat.setAlignment():
import org.aspose.slides.foss.TextAlignment;
tf.getParagraphs().get(0).getParagraphFormat()
.setAlignment(TextAlignment.CENTER);Поддържани стойности: LEFT, CENTER, RIGHT, JUSTIFY.
Как да задавам междуредово разстояние?
Използвайте paragraphFormat.setSpaceBefore() (точки преди абзац) или paragraphFormat.setSpaceAfter() (точки след абзац):
tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12); // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6); // 6pt after