Cara Memformat Teks di C++
Aspose.Slides FOSS for C++ menyediakan pemformatan teks yang sangat detail melalui kelas PortionFormat. Sebuah Portion adalah unit teks independen terkecil; ia memetakan ke satu run 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 bentuk 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 TextFrame bentuk. Gunakan -> untuk memanggil metode pada pointer tersebut.
auto* tf = shape.text_frame(); // pointer to the shape's text frame
tf->set_text("your text here");Sebuah TextFrame berisi Paragraph objek (tf->paragraphs()). Setiap Paragraph berisi 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
Set 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 Bagian dalam Satu Paragraf
Sebuah paragraf tunggal dapat berisi beberapa bagian dengan format yang berbeda. Tambahkan Portion baru ke koleksi portions() paragraf:
#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 Solusi
Teks muncul hitam meskipun sudah mengatur warna
Pastikan fill_format().set_fill_type(FillType::SOLID) diatur sebelum menetapkan warna. Tanpa mengatur jenis isi, perubahan warna mungkin tidak berpengaruh.
NullableBool::TRUE vs true
portion_format().set_font_bold() mengharapkan NullableBool::TRUE, bukan true C++. Mengirimkan true secara langsung tidak akan terkompilasi atau akan memiliki perilaku tak terdefinisi tergantung pada resolusi overload.
Font tidak muncul di file yang disimpan
Metode set_latin_font() mengatur keluarga font Latin. Jika tidak diatur, font tema presentasi akan digunakan. Font khusus harus disematkan atau tersedia pada mesin penampil.
Pertanyaan yang Sering Diajukan
Bagaimana cara mengubah keluarga font?
Atur 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