Cara Memformat Teks dalam Java
Aspose.Slides FOSS for Java provides fine-grained text formatting through the PortionFormat class. A Portion ialah unit teks bebas terkecil; ia memetakan kepada satu rentetan pemformatan dalam perenggan. Panduan ini menunjukkan cara untuk menerapkan pemformatan tebal, condong, saiz fon, dan warna pada teks dalam persembahan.
Panduan Langkah demi Langkah
Langkah 1: Tambah Kebergantungan Maven
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Langkah 2: Tambah Bentuk dengan Bingkai Teks
Sebelum memformat teks, bentuk mesti mengandungi satu TextFrame. Gunakan shape.addTextFrame() untuk membuat satu.
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 boleh mendapatkannya kemudian melalui shape.getTextFrame().
ITextFrame tf = shape.getTextFrame(); // if the frame already exists
ITextFrame tf = shape.addTextFrame(""); // creates a new frameA TextFrame mengandungi senarai Paragraph objek (tf.getParagraphs()). Setiap Paragraph mengandungi Portion objek (paragraph.getPortions()).
Langkah 4: Terapkan Pemformatan Tebal dan Condong
Gunakan portionFormat.setFontBold() dan portionFormat.setFontItalic(). Kaedah-kaedah ini menerima NullableBool.TRUE, NullableBool.FALSE, atau NullableBool.NOT_DEFINED (warisi 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: Tetapkan Saiz Fon dan Warna
Tetapkan portionFormat.setFontHeight() untuk saiz (dalam mata) 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: Pelbagai Bahagian dalam Satu Perenggan
Satu perenggan tunggal boleh mengandungi pelbagai bahagian dengan pemformatan yang berbeza. Tambah yang baru Portion kepada perenggan 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);
}Isu Umum dan Penyelesaian
Teks muncul hitam walaupun selepas menetapkan warna
Pastikan getFillFormat().setFillType(FillType.SOLID) dipanggil sebelum menetapkan warna. Tanpa menetapkan jenis isi, perubahan warna mungkin tidak memberi kesan.
NullableBool.TRUE vs true
portionFormat.setFontBold() menjangka NullableBool.TRUE, bukan Java’s true. Melewatkan boolean akan menyebabkan ralat kompilasi kerana kaedah menjangka NullableBool enum.
Font tidak muncul dalam fail yang disimpan
The setLatinFont() kaedah menetapkan keluarga fon Latin. Jika tidak ditetapkan, fon tema persembahan akan digunakan. Fon tersuai mesti disematkan atau tersedia pada mesin penonton.
Soalan Lazim
Bagaimana saya menukar keluarga fon?
Tetapkan portionFormat.setLatinFont():
fmt.setLatinFont(new FontData("Arial"));FontData menerima nama keluarga fon sebagai rentetan.
Bagaimana saya menetapkan penjajaran perenggan?
Gunakan paragraphFormat.setAlignment():
import org.aspose.slides.foss.TextAlignment;
tf.getParagraphs().get(0).getParagraphFormat()
.setAlignment(TextAlignment.CENTER);Nilai yang disokong: LEFT, CENTER, RIGHT, JUSTIFY.
Bagaimana saya menetapkan jarak baris?
Gunakan paragraphFormat.setSpaceBefore() (titik sebelum perenggan) atau paragraphFormat.setSpaceAfter() (titik selepas perenggan):
tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12); // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6); // 6pt after