Ako formátovať text v Java
Aspose.Slides FOSS for Java provides fine-grained text formatting through the PortionFormat trieda. A Portion je najmenšia nezávislá jednotka textu; zodpovedá jednému formátovaciemu úseku v odstavci. Tento sprievodca ukazuje, ako použiť tučné, kurzívne, veľkosť písma a farebné formátovanie textu v prezentácii.
Postupný návod
Krok 1: Pridať Maven závislosť
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Krok 2: Pridajte tvar s textovým rámcom
Pred formátovaním textu musí tvar obsahovať TextFrame. Použite shape.addTextFrame() na vytvorenie jedného.
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ískajte prístup k TextFrame
shape.addTextFrame() vracia TextFrame objekt. Môžete ho tiež neskôr získať pomocou shape.getTextFrame().
ITextFrame tf = shape.getTextFrame(); // if the frame already exists
ITextFrame tf = shape.addTextFrame(""); // creates a new frameA TextFrame obsahuje zoznam Paragraph objektov (tf.getParagraphs()). Každý Paragraph obsahuje Portion objektov (paragraph.getPortions()).
Krok 4: Použite tučné a kurzívne formátovanie
Použite portionFormat.setFontBold() a portionFormat.setFontItalic(). Tieto metódy akceptujú NullableBool.TRUE, NullableBool.FALSE, alebo NullableBool.NOT_DEFINED (zdediť z 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);
}Krok 5: Nastavte veľkosť písma a farbu
Nastaviť portionFormat.setFontHeight() pre veľkosť (v bodoch) a použiť getFillFormat() pre farbu.
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) akceptuje hodnoty 0‑255 pre každý kanál.
Krok 6: Viacero častí v jednom odstavci
Jeden odsek môže obsahovať viacero častí s rôznym formátovaním. Pridajte nový Portion do odseku getPortions() kolekcia:
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);
}Bežné problémy a riešenia
Text zostáva čierny aj po nastavení farby
Zabezpečte getFillFormat().setFillType(FillType.SOLID) sa volá pred priradením farby. Bez nastavenia typu výplne môže zmena farby nemajú žiadny účinok.
NullableBool.TRUE vs true
portionFormat.setFontBold() očakáva NullableBool.TRUE, nie Java’s true. Odovzdanie booleanu spôsobí chybu kompilácie, pretože metóda očakáva NullableBool enum.
Písmo sa v uloženom súbore neobjavuje
Metóda setLatinFont() metóda nastavuje latinskú rodinu písma. Ak nie je nastavená, použije sa písmo témy prezentácie. Vlastné písma musia byť vložené alebo dostupné na zobrazovacom zariadení.
Často kladené otázky
Ako zmením rodinu písma?
Nastaviť portionFormat.setLatinFont():
fmt.setLatinFont(new FontData("Arial"));FontData akceptuje názov rodiny písma ako reťazec.
Ako nastaviť zarovnanie odseku?
Použiť paragraphFormat.setAlignment():
import org.aspose.slides.foss.TextAlignment;
tf.getParagraphs().get(0).getParagraphFormat()
.setAlignment(TextAlignment.CENTER);Podporované hodnoty: LEFT, CENTER, RIGHT, JUSTIFY.
Ako nastaviť riadkovú medzeru?
Použiť paragraphFormat.setSpaceBefore() (bodky pred odstavcom) alebo paragraphFormat.setSpaceAfter() (bodov po odseku):
tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12); // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6); // 6pt after