Kako formatirati tekst u C++
Aspose.Slides FOSS za C++ pruža detaljno formatiranje teksta putem klase PortionFormat. Portion je najmanja nezavisna jedinica teksta; ona odgovara jednom formatu unutar pasusa. Ovaj vodič pokazuje kako primeniti podebljano, kurziv, veličinu fonta i formatiranje boje na tekst u prezentaciji.
Vodič korak po korak
Korak 1: Izgradite i povežite biblioteku
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 .Korak 2: Dodajte oblik sa tekstualnim okvirom
Pre formatiranja teksta, dodajte oblik i postavite njegov sadržaj teksta putem 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;
}Korak 3: Pristup TextFrame
shape.text_frame() vraća pokazivač na TextFrame oblika. Koristite -> da pozovete metode na njemu.
auto* tf = shape.text_frame(); // pointer to the shape's text frame
tf->set_text("your text here");Jedan TextFrame sadrži Paragraph objekata (tf->paragraphs()). Svaki Paragraph sadrži Portion objekata (paragraph.portions()).
Korak 4: Primena podebljanog i kurzivnog formatiranja
Koristite portion_format().set_font_bold() i portion_format().set_font_italic(). Ove metode prihvataju NullableBool::TRUE, NullableBool::FALSE ili NullableBool::NOT_DEFINED (nasleđuju od mastera).
#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;
}Korak 5: Postavi veličinu fonta i boju
Postavite portion_format().set_font_height() za veličinu (u tačkama) i koristite fill_format() za boju.
#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) prihvata vrednosti 0‑255 za svaki kanal.
Korak 6: Više delova u jednom paragrafu
Jedan odlomak može da sadrži više delova sa različitim formatiranjem. Dodajte novi Portion u kolekciju portions() odlomka:
#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;
}Уобичајени проблеми и исправке
Tekst se pojavljuje crno iako je boja postavljena
Osigurajte da je fill_format().set_fill_type(FillType::SOLID) postavljen pre dodele boje. Bez postavljanja tipa popunjavanja, promena boje možda neće imati efekta.
NullableBool::TRUE vs true
portion_format().set_font_bold() očekuje NullableBool::TRUE, a ne C++ true. Prosleđivanje true direktno neće se kompajlirati ili će imati neodređeno ponašanje u zavisnosti od rezolucije preopterećenja.
Font se ne pojavljuje u sačuvanoj datoteci
Metoda set_latin_font() postavlja latinski font porodicu. Ako nije postavljeno, koristi se font teme prezentacije. Prilagođeni fontovi moraju biti ugrađeni ili dostupni na računaru za pregled.
Često postavljana pitanja
Kako da promenim porodicu fonta?
Postavi portion_format().set_latin_font():
fmt.set_latin_font(asf::FontData("Arial"));FontData prihvata naziv porodice fonta kao string.
Kako postaviti poravnanje pasusa?
Koristite paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Podržane vrednosti: LEFT, CENTER, RIGHT, JUSTIFY.
Kako da podesim razmak između redova?
Koristite paragraph_format().set_space_before() (tačke pre pasusa) ili paragraph_format().set_space_after() (tačke posle pasusa):
tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6); // 6pt after