Cara Memformat Teks dalam C++
Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat kelas. A Portion adalah unit teks independen terkecil; ia memetakan ke satu rangkaian pemformatan dalam sebuah paragraf. Panduan ini menunjukkan cara menerapkan pemformatan tebal, miring, ukuran font, dan warna pada teks dalam sebuah presentasi.
Panduan Langkah-demi-Langkah
Langkah 1: Bangun dan Tautkan Perpustakaan
git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp && mkdir build && cd build
cmake .. && cmake --build .Langkah 2: Tambahkan Bentuk dengan Bingkai Teks
Sebelum memformat teks, tambahkan sebuah shape dan atur konten teksnya melalui shape.text_frame()->set_text().
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
shape.text_frame()->set_text("Default text: will be formatted");
prs.save("output.pptx", asf::SaveFormat::PPTX);
return 0;
}Langkah 3: Akses TextFrame
shape.text_frame() mengembalikan pointer ke shape’s TextFrame. Gunakan -> untuk memanggil metode pada objek tersebut.
auto* tf = shape.text_frame(); // pointer to the shape's text frame
tf->set_text("your text here");A TextFrame mengandung Paragraph objek (tf->paragraphs()). Setiap Paragraph mengandung Portion objek (paragraph.portions()).
Langkah 4: Terapkan Pemformatan Tebal dan Miring
Gunakan portion_format().set_font_bold() dan portion_format().set_font_italic(). Metode-metode ini menerima NullableBool::TRUE, NullableBool::FALSE, atau NullableBool::NOT_DEFINED (mewarisi dari master).
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
shape.text_frame()->set_text("Bold and italic text");
auto* tf = shape.text_frame();
auto& fmt = tf->paragraphs()[0].portions()[0].portion_format();
fmt.set_font_bold(asf::NullableBool::TRUE);
fmt.set_font_italic(asf::NullableBool::TRUE);
prs.save("bold-italic.pptx", asf::SaveFormat::PPTX);
return 0;
}Langkah 5: Atur Ukuran Font dan Warna
Atur portion_format().set_font_height() untuk ukuran (dalam poin) dan gunakan fill_format() untuk warna.
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
shape.text_frame()->set_text("Large corporate-blue heading");
auto* tf = shape.text_frame();
auto& fmt = tf->paragraphs()[0].portions()[0].portion_format();
fmt.set_font_height(32); // 32pt font
fmt.set_font_bold(asf::NullableBool::TRUE);
fmt.fill_format().set_fill_type(asf::FillType::SOLID);
fmt.fill_format().solid_fill_color().set_color(
asf::Color::from_argb(255, 0, 70, 127));
prs.save("colored-text.pptx", asf::SaveFormat::PPTX);
return 0;
}Color::from_argb(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 portions() koleksi:
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 600, 100);
shape.text_frame()->set_text(""); // start with empty text
auto* tf = shape.text_frame();
auto& paragraph = tf->paragraphs()[0];
// First portion: normal text
auto& portion1 = paragraph.portions()[0];
portion1.set_text("Normal text followed by ");
portion1.portion_format().set_font_height(20);
// Second portion: bold red text
asf::Portion portion2;
portion2.set_text("bold red text");
portion2.portion_format().set_font_height(20);
portion2.portion_format().set_font_bold(asf::NullableBool::TRUE);
portion2.portion_format().fill_format().set_fill_type(asf::FillType::SOLID);
portion2.portion_format().fill_format().solid_fill_color().set_color(
asf::Color::from_argb(255, 200, 0, 0));
paragraph.portions().add(portion2);
prs.save("mixed-format.pptx", asf::SaveFormat::PPTX);
return 0;
}Masalah Umum dan Solusinya
Teks tetap berwarna hitam meskipun sudah mengatur warna
Pastikan fill_format().set_fill_type(FillType::SOLID) diatur sebelum menetapkan warna. Tanpa mengatur tipe isian, perubahan warna mungkin tidak berpengaruh.
NullableBool::TRUE vs true
portion_format().set_font_bold() mengharapkan NullableBool::TRUE, bukan C++ true. Mengirimkan true langsung tidak akan dapat dikompilasi atau akan memiliki perilaku tidak terdefinisi tergantung pada resolusi overload.
Font tidak muncul dalam file yang disimpan
Metode set_latin_font() mengatur keluarga font Latin. Jika tidak diatur, font tema presentasi yang digunakan. Font khusus harus disematkan atau tersedia pada mesin penampil.
Pertanyaan yang Sering Diajukan
Bagaimana cara mengubah keluarga font?
Setel portion_format().set_latin_font():
fmt.set_latin_font(asf::FontData("Arial"));FontData menerima nama keluarga font sebagai string.
Bagaimana cara mengatur perataan paragraf?
Gunakan paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Nilai yang didukung: LEFT, CENTER, RIGHT, JUSTIFY.
Bagaimana cara mengatur spasi baris?
Gunakan paragraph_format().set_space_before() (titik sebelum paragraf) atau paragraph_format().set_space_after() (titik setelah paragraf):
tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6); // 6pt after