Jak formátovat text v Java
Aspose.Slides FOSS for Java provides fine-grained text formatting through the PortionFormat třída. A Portion je nejmenší nezávislá jednotka textu; mapuje se na jediný formátovací běh v odstavci. Tento průvodce ukazuje, jak aplikovat tučné, kurzívou, velikost písma a barevné formátování na text v prezentaci.
Průvodce krok za krokem
Krok 1: Přidejte Maven závislost
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Krok 2: Přidejte tvar s textovým rámcem
Před formátováním textu musí shape obsahovat TextFrame. Použijte shape.addTextFrame() k vytvoření jednoho.
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);
}Krok 3: Získejte přístup k TextFrame
shape.addTextFrame() vrací TextFrame objekt. Můžete jej také později získat pomocí shape.getTextFrame().
ITextFrame tf = shape.getTextFrame(); // if the frame already exists
ITextFrame tf = shape.addTextFrame(""); // creates a new frameA TextFrame obsahuje seznam Paragraph objektů (tf.getParagraphs()). Každý Paragraph obsahuje Portion objektů (paragraph.getPortions()).
Krok 4: Použijte tučné a kurzívní formátování
Použijte portionFormat.setFontBold() a portionFormat.setFontItalic(). Tyto metody přijímají NullableBool.TRUE, NullableBool.FALSE, nebo NullableBool.NOT_DEFINED (zdědit z masteru).
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);
}Krok 5: Nastavte velikost písma a barvu
Nastavit portionFormat.setFontHeight() pro velikost (v bodech) a použijte getFillFormat() pro barvu.
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) přijímá hodnoty 0‑255 pro každý kanál.
Krok 6: Více částí v jednom odstavci
Jeden odstavec může obsahovat více částí s různým formátováním. Přidejte nový Portion do odstavce getPortions() kolekce:
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);
}Časté problémy a opravy
Text se zobrazuje černě i po nastavení barvy
Zajistěte getFillFormat().setFillType(FillType.SOLID) je voláno před přiřazením barvy. Bez nastavení typu výplně může změna barvy nemít žádný efekt.
NullableBool.TRUE vs true
portionFormat.setFontBold() očekává NullableBool.TRUE, nikoli Java’s true. Předání booleanu způsobí chybu při kompilaci, protože metoda očekává NullableBool enum.
Písmo se v uloženém souboru neobjeví
Metoda setLatinFont() metoda nastavuje latinskou rodinu písma. Pokud není nastavena, použije se písmo motivu prezentace. Vlastní písma musí být vložena nebo dostupná na zobrazovacím počítači.
Často kladené otázky
Jak změním rodinu písma?
Nastavte portionFormat.setLatinFont():
fmt.setLatinFont(new FontData("Arial"));FontData přijímá název rodiny písma jako řetězec.
Jak nastavit zarovnání odstavce?
Použít paragraphFormat.setAlignment():
import org.aspose.slides.foss.TextAlignment;
tf.getParagraphs().get(0).getParagraphFormat()
.setAlignment(TextAlignment.CENTER);Podporované hodnoty: LEFT, CENTER, RIGHT, JUSTIFY.
Jak nastavit řádkování?
Použít paragraphFormat.setSpaceBefore() (tečky před odstavcem) nebo paragraphFormat.setSpaceAfter() (body po odstavci):
tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12); // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6); // 6pt after