Prezentáció szöveg formázása Java-ban
Áttekintés
Ez a cikk bemutatja, hogyan formázható a szöveg PowerPoint és OpenDocument prezentációkban az Aspose.Slides for Java használatával. Kitér a háttérszínekre, átlátszóságra, karaktertávolságra, betűtulajdonságokra, forgatásra, bekezdés-távolságra, automatikus illeszkedésre, szöveg rögzítésére, tabulátorokra és nyelvi beállításokra.
Az alábbi példákban egy “sample.pptx” nevű fájlt használunk, amely az első dián egyetlen szövegdobozt tartalmaz a következő szöveggel:

A szó szerinti szöveg vagy reguláris kifejezés találatainak kereséséhez és kiemeléséhez tekintse meg a Search and Replace Text oldalt.
Szöveg háttérszínének beállítása
Használja az IParagraphFormat.getDefaultPortionFormat metódust az alapértelmezett kiemelési szín beállításához egy bekezdéshez, vagy az IBasePortionFormat.getHighlightColor metódust az egyedi szövegrétegekhez.
A következő kódrészlet bemutatja, hogyan állítható be a háttérszín a teljes bekezdés esetén:
import com.aspose.slides.*;
import java.awt.Color;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
// Állítsa be a kiemelési színt a teljes bekezdéshez.
paragraph.getParagraphFormat().getDefaultPortionFormat().getHighlightColor().setColor(Color.LIGHT_GRAY);
presentation.save("gray_paragraph.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Az alábbi kódrészlet bemutatja, hogyan állítható be a háttérszín féligzsúzott betűtípussal rendelkező szövegrétegek esetén:
import com.aspose.slides.*;
import java.awt.Color;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
for (IPortion portion : paragraph.getPortions()) {
if (portion.getPortionFormat().getEffective().getFontBold()) {
// Állítsa be a kiemelési színt a szövegrészhez.
portion.getPortionFormat().getHighlightColor().setColor(Color.LIGHT_GRAY);
}
}
presentation.save("gray_text_portions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Szöveg bekezdések igazítása
Az IParagraphFormat.setAlignment metódussal állítható be a bekezdés igazítása egy szövegkereten belül. Az érték lehet középre, balra, jobbra, sorkizárt stb.
A következő kódrészlet bemutatja, hogyan igazítható a bekezdés a középre:
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
// Állítsa be a bekezdés igazítását középre.
paragraph.getParagraphFormat().setAlignment(TextAlignment.Center);
presentation.save("aligned_paragraph.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Szöveg átlátszóságának beállítása
A szöveg átlátszósága a IBasePortionFormat.getFillFormat által kapott szín alfa komponensén keresztül szabályozható. Az alábbi példákban a alpha = 50 egy 0–255 skálán lévő ARGB alfa-csatorna érték, nem átlátszósági százalék.
Az alábbi kódrészlet bemutatja, hogyan alkalmazható átlátszóság a teljes bekezdés esetén:
import com.aspose.slides.*;
import java.awt.Color;
int alpha = 50;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
// Állítsa be a szöveg kitöltőszínét átlátszó színre.
paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(new Color(0, 0, 0, alpha));
presentation.save("transparent_paragraph.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Az alábbi kódrészlet bemutatja, hogyan alkalmazható átlátszóság féligzsúzott betűtípussal rendelkező szövegrétegek esetén:
import com.aspose.slides.*;
import java.awt.Color;
int alpha = 50;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
for (IPortion portion : paragraph.getPortions()) {
if (portion.getPortionFormat().getEffective().getFontBold()) {
// Állítsa be a szövegréteg átlátszóságát.
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(new Color(0, 0, 0, alpha));
}
}
presentation.save("transparent_text_portions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Karakter távolság beállítása a szöveghez
Az IBasePortionFormat.setSpacing metódussal növelhető vagy csökkenthető a karakterek közötti távolság egy szövegdobozban.
Az alábbi Java kód bemutatja, hogyan növelhető a karaktertávolság a teljes bekezdés esetén:
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
// Megjegyzés: Negatív értékek használata a karaktertávolság összenyomásához.
paragraph.getParagraphFormat().getDefaultPortionFormat().setSpacing(3); // Karaktertávolság növelése.
presentation.save("character_spacing_in_paragraph.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Az alábbi kódrészlet bemutatja, hogyan növelhető a karaktertávolság féligzsúzott betűtípussal rendelkező szövegrétegek esetén:
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
for (IPortion portion : paragraph.getPortions()) {
if (portion.getPortionFormat().getEffective().getFontBold()) {
// Megjegyzés: Negatív értékek használata a karaktertávolság összenyomásához.
portion.getPortionFormat().setSpacing(3); // Karaktertávolság növelése.
}
}
presentation.save("character_spacing_in_text_portions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Kerning letiltása bizonyos betűtípusoknál
Egyes esetekben az Aspose.Slides által renderelt szöveg valamivel szorosabbnak tűnhet, mint a PowerPoint-ban megjelenő ugyanaz a szöveg. Ennek oka lehet, hogy a PowerPoint bizonyos betűtípusoknál figyelmen kívül hagyja a kerning adatokat, még akkor is, ha a betűtípus tartalmaz érvényes kerning információt, és a kerning engedélyezve van a PowerPoint beállításaiban.
Ahhoz, hogy az ilyen esetekben a renderelt kimenet közelebb legyen a PowerPoint-hoz, letilthatja a kerninget a kedvezett betűtípust használó szövegrétegeknél. Állítsa a IBasePortionFormat.setKerningMinimalSize értékét a tényleges betűméretnél jóval nagyobbra:
import com.aspose.slides.*;
Presentation presentation = new Presentation("presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
String targetFont = "Roboto";
for (IParagraph paragraph : autoShape.getTextFrame().getParagraphs()) {
for (IPortion portion : paragraph.getPortions()) {
IPortionFormat portionFormat = portion.getPortionFormat();
if ((portionFormat.getLatinFont() != null &&
portionFormat.getLatinFont().getFontName().equals(targetFont)) ||
(portionFormat.getEastAsianFont() != null &&
portionFormat.getEastAsianFont().getFontName().equals(targetFont)) ||
(portionFormat.getComplexScriptFont() != null &&
portionFormat.getComplexScriptFont().getFontName().equals(targetFont))) {
portionFormat.setKerningMinimalSize(100);
}
}
}
presentation.save("output.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Szöveg betűtulajdonságainak kezelése
A betűtulajdonságok beállíthatók a bekezdés szintjén az IParagraphFormat.getDefaultPortionFormat segítségével, vagy egyedi részekre az IPortionFormat segítségével.
Az alábbi kód beállítja a betűtípust és a szövegstílust a teljes bekezdésre: alkalmazza a betűméretet, félkövér, dőlt, pontozott aláhúzást és a Times New Roman betűtípust az összes részre a bekezdésben.
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
// Állítsa be a bekezdés betűtulajdonságait.
paragraph.getParagraphFormat().getDefaultPortionFormat().setFontHeight(12);
paragraph.getParagraphFormat().getDefaultPortionFormat().setFontBold(NullableBool.True);
paragraph.getParagraphFormat().getDefaultPortionFormat().setFontItalic(NullableBool.True);
paragraph.getParagraphFormat().getDefaultPortionFormat().setFontUnderline(TextUnderlineType.Dotted);
paragraph.getParagraphFormat().getDefaultPortionFormat().setLatinFont(new FontData("Times New Roman"));
presentation.save("font_properties_for_paragraph.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Az alábbi kódrészlet hasonló tulajdonságokat alkalmaz féligzsúzott betűtípussal rendelkező szövegrétegek esetén:
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
for (IPortion portion : paragraph.getPortions()) {
if (portion.getPortionFormat().getEffective().getFontBold()) {
// Állítsa be a betűtulajdonságokat a szövegrészhez.
portion.getPortionFormat().setFontHeight(13);
portion.getPortionFormat().setFontItalic(NullableBool.True);
portion.getPortionFormat().setFontUnderline(TextUnderlineType.Dotted);
portion.getPortionFormat().setLatinFont(new FontData("Times New Roman"));
}
}
presentation.save("font_properties_for_text_portions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Szöveg forgatásának beállítása
Az ITextFrameFormat.setTextVerticalType metódussal állítható be egy előre definiált szövegtorientáció egy alakzat belsejében.
Az alábbi kódrészlet a szövegorientációt a formában Vertical270-re állítja, ami a szöveget 90 fokkal balra forgatja:
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setTextVerticalType(TextVerticalType.Vertical270);
presentation.save("text_rotation.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Egyéni forgatás beállítása szövegkeretekhez
Az ITextFrameFormat.setRotationAngle metódussal egyedi forgatási szöget állíthat be egy ITextFrame számára.
Az alábbi kódrészlet a szövegkeretet 3 fokkal jobbra forgatja az alakzaton belül:
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setRotationAngle(3);
presentation.save("custom_text_rotation.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Bekezdések sor távolságának beállítása
Az Aspose.Slides biztosítja a IParagraphFormat.setSpaceAfter, IParagraphFormat.setSpaceBefore, és IParagraphFormat.setSpaceWithin metódusokat a bekezdés távolságok szabályozásához. Ezek a tulajdonságok a következők szerint használhatók:
- Pozitív értékkel a sor távolságot a sor magasságának százalékában adhatja meg.
- Negatív értékkel a sor távolságot pontban adhatja meg.
Az alábbi kódrészlet bemutatja, hogyan adható meg a sor távolság a bekezdésen belül:
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
paragraph.getParagraphFormat().setSpaceWithin(200);
presentation.save("line_spacing.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Automatikus illeszkedés típusának beállítása szövegkeretekhez
Az ITextFrameFormat.setAutofitType határozza meg, hogyan viselkedik a szöveg, ha meghaladja a konténer határait. Ezzel szabályozható, hogy a szöveg zsugorodjon, túllépjen, vagy az alakzat mérete automatikusan változzon.
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setAutofitType(TextAutofitType.Shape);
presentation.save("autofit_type.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Szövegkeretek rögzítésének beállítása
Az ITextFrameFormat.setAnchoringType meghatározza, hogyan helyezkedik el a szöveg függőlegesen egy alakzat belsejében, például a tetején, közepén vagy alján.
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setAnchoringType(TextAnchorType.Bottom);
presentation.save("text_anchor.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Szöveg tabuláció beállítása
Használja az IParagraphFormat.setDefaultTabSize és az IParagraphFormat.getTabs metódusokat egy bekezdés tabulátorállásainak konfigurálásához.
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
paragraph.getParagraphFormat().setDefaultTabSize(100);
paragraph.getParagraphFormat().getTabs().add(30, TabAlignment.Left);
presentation.save("paragraph_tabs.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Ellenőrző nyelv beállítása
Az Aspose.Slides biztosítja az IBasePortionFormat.setLanguageId metódust, amely lehetővé teszi a helyesírás- és nyelvtanellenőrzés nyelvének beállítását egy szövegrétegre. A helyesírási nyelv határozza meg, hogy a PowerPoint milyen nyelvet használ a helyesírás- és nyelvtani ellenőrzéshez.
Az alábbi kódrészlet bemutatja, hogyan állítható be a helyesírási nyelv egy szövegrétegre:
import com.aspose.slides.*;
Presentation presentation = new Presentation("presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
paragraph.getPortions().clear();
FontData font = new FontData("SimSun");
Portion textPortion = new Portion();
textPortion.getPortionFormat().setComplexScriptFont(font);
textPortion.getPortionFormat().setEastAsianFont(font);
textPortion.getPortionFormat().setLatinFont(font);
// Állítsa be a helyesírási nyelv azonosítóját.
textPortion.getPortionFormat().setLanguageId("zh-CN");
textPortion.setText("1。");
paragraph.getPortions().add(textPortion);
presentation.save("proofing_language.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Alapértelmezett nyelv beállítása
Használja a LoadOptions.setDefaultTextLanguage metódust a prezentáció betöltése vagy létrehozása során létrehozott szöveg alapértelmezett nyelvének meghatározásához.
import com.aspose.slides.*;
LoadOptions loadOptions = new LoadOptions();
loadOptions.setDefaultTextLanguage("en-US");
Presentation presentation = new Presentation(loadOptions);
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Új téglalap alakzat hozzáadása szöveggel.
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 50);
shape.getTextFrame().setText("Sample text");
// Ellenőrizze az első rész nyelvét.
IPortion portion = shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);
System.out.println(portion.getPortionFormat().getLanguageId());
} finally {
presentation.dispose();
}
Alapértelmezett szövegstílus beállítása
Alapértelmezett szövegformázás alkalmazásához a prezentáció szintjén használja az IPresentation.getDefaultTextStyle metódust.
Az alábbi kódrészlet bemutatja, hogyan állítható be egy alapértelmezett félkövér betűtípus 14 pt mérettel minden dián lévő szöveghez egy új prezentációban.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
// A legfelső szintű bekezdésformátum lekérése.
IParagraphFormat paragraphFormat = presentation.getDefaultTextStyle().getLevel(0);
if (paragraphFormat != null) {
paragraphFormat.getDefaultPortionFormat().setFontHeight(14);
paragraphFormat.getDefaultPortionFormat().setFontBold(NullableBool.True);
}
presentation.save("default_text_style.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Szöveg kinyerése nagybetűs hatással
PowerPointban a All Caps betűhatás alkalmazása nagybetűkkel jeleníti meg a szöveget a dián, még akkor is, ha az eredetileg kisbetűkkel lett beírva. Amikor az Aspose.Slides-szel ilyen szövegréteget kérdez ki, a könyvtár pontosan úgy adja vissza a szöveget, ahogy azt beírták. A megjelenített szöveghez való illesztéshez ellenőrizze a TextCapType értékét, és amennyiben All, konvertálja a visszakapott karakterláncot nagybetűssé.
Tegyük fel, hogy a sample2.pptx fájl első diáján a következő szövegdoboz található.

Az alábbi kódrészlet bemutatja, hogyan nyerhető ki a szöveg a All Caps hatással:
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample2.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
IPortion textPortion = autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);
System.out.println("Original text: " + textPortion.getText());
IPortionFormatEffectiveData textFormat = textPortion.getPortionFormat().getEffective();
if (textFormat.getTextCapType() == TextCapType.All) {
String text = textPortion.getText().toUpperCase();
System.out.println("All-Caps effect: " + text);
}
} finally {
presentation.dispose();
}
Kimenet:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
GYIK
Hogyan módosítható a szöveg egy dián lévő táblázatban?
A szöveg módosításához egy dián található táblázatban használja az ITable interfészt. Iteráljon a cellákon, és frissítse az egyes cellákat az ICell.getTextFrame segítségével, a bekezdésformázást pedig az IParagraph.getParagraphFormat segítségével.
Hogyan lehet színátmenetes színt alkalmazni a szövegre egy PowerPoint dián?
A színátmenetes szín alkalmazásához a szövegre használja az IBasePortionFormat.getFillFormat metódust. Állítsa be az IFillFormat.setFillType metódus értékét a FillType.Gradient típusra, majd konfigurálja a színátmenet állomásait, irányát és átlátszóságát.