Cara Memformat Teks di Java
Aspose.Slides FOSS for Java provides fine-grained text formatting through the PortionFormat class. A Portion adalah unit teks independen terkecil; ia memetakan ke satu rangkaian format dalam sebuah paragraf. Panduan ini menunjukkan cara menerapkan format tebal, miring, ukuran font, dan warna pada teks dalam sebuah presentasi.
Panduan Langkah-demi-Langkah
Langkah 1: Tambahkan Dependensi Maven
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Langkah 2: Tambahkan Bentuk dengan Bingkai Teks
Sebelum memformat teks, sebuah shape harus berisi sebuah TextFrame. Gunakan shape.addTextFrame() untuk membuatnya.
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);
}Langkah 3: Akses TextFrame
shape.addTextFrame() mengembalikan TextFrame objek. Anda juga dapat mengambilnya nanti melalui shape.getTextFrame().
ITextFrame tf = shape.getTextFrame(); // if the frame already exists
ITextFrame tf = shape.addTextFrame(""); // creates a new frameA TextFrame berisi daftar Paragraph objek (tf.getParagraphs()). Setiap Paragraph berisi Portion objek (paragraph.getPortions()).
Langkah 4: Terapkan Pemformatan Tebal dan Miring
Gunakan portionFormat.setFontBold() dan portionFormat.setFontItalic(). Metode-metode ini menerima NullableBool.TRUE, NullableBool.FALSE, atau NullableBool.NOT_DEFINED (mewarisi dari 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);
}Langkah 5: Atur Ukuran Font dan Warna
Atur portionFormat.setFontHeight() untuk ukuran (dalam poin) dan gunakan getFillFormat() untuk warna.
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) menerima nilai 0-255 untuk setiap saluran.
Langkah 6: Beberapa Portion dalam Satu Paragraf
Sebuah paragraf tunggal dapat berisi beberapa bagian dengan pemformatan yang berbeda. Tambahkan yang baru Portion ke paragraf getPortions() koleksi:
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);
}Masalah Umum dan Solusinya
Teks tetap berwarna hitam meskipun sudah mengatur warna
Pastikan getFillFormat().setFillType(FillType.SOLID) dipanggil sebelum menetapkan warna. Tanpa mengatur tipe isian, perubahan warna mungkin tidak berpengaruh.
NullableBool.TRUE vs true
portionFormat.setFontBold() mengharapkan NullableBool.TRUE, bukan Java’s true. Mengirimkan boolean akan menyebabkan kesalahan kompilasi karena metode mengharapkan NullableBool enum.
Font tidak muncul dalam file yang disimpan
Metode setLatinFont() metode mengatur keluarga font Latin. Jika tidak diatur, font tema presentasi yang digunakan. Font khusus harus disematkan atau tersedia di mesin penampil.
Pertanyaan yang Sering Diajukan
Bagaimana cara mengubah keluarga font?
Atur portionFormat.setLatinFont():
fmt.setLatinFont(new FontData("Arial"));FontData menerima nama keluarga font sebagai string.
Bagaimana cara mengatur perataan paragraf?
Gunakan paragraphFormat.setAlignment():
import org.aspose.slides.foss.TextAlignment;
tf.getParagraphs().get(0).getParagraphFormat()
.setAlignment(TextAlignment.CENTER);Nilai yang didukung: LEFT, CENTER, RIGHT, JUSTIFY.
Bagaimana cara mengatur spasi baris?
Gunakan paragraphFormat.setSpaceBefore() (titik sebelum paragraf) atau paragraphFormat.setSpaceAfter() poin setelah paragraf:
tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12); // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6); // 6pt after