Kako formatirati tekst u C++
Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat klasa. A Portion je najmanja nezavisna jedinica teksta; ona se mapira na jedan formatirajući segment 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: Pristupite TextFrame-u
shape.text_frame() vraća pokazivač na oblik TextFrame. Koristite -> da pozovete metode na njemu.
auto* tf = shape.text_frame(); // pointer to the shape's text frame
tf->set_text("your text here");A TextFrame sadrži Paragraph objekti (tf->paragraphs()). Svaki Paragraph sadrži Portion objekti (paragraph.portions()).
Korak 4: Primena podebljanog i kurziva
Koristi portion_format().set_font_bold() i portion_format().set_font_italic(). Ove metode prihvataju NullableBool::TRUE, NullableBool::FALSE, ili NullableBool::NOT_DEFINED (nasleđuje se 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: Postavljanje veličine fonta i boje
Postavi portion_format().set_font_height() za veličinu (u tačkama) i koristi 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 odlomku portions() kolekcija:
#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;
}Uobičajeni problemi i rešenja
Tekst se prikazuje crno iako je boja postavljena
Osigurajte fill_format().set_fill_type(FillType::SOLID) se postavlja 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 biti kompajlirano ili će imati nedefinisano ponašanje u zavisnosti od rezolucije preopterećenja.
Font se ne pojavljuje u sačuvanoj datoteci
The set_latin_font() metod postavlja Latin 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 font porodice kao string.
Kako da postavim poravnanje pasusa?
Koristi paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Podržane vrednosti: LEFT, CENTER, RIGHT, JUSTIFY.
Kako da postavim razmak između redova?
Koristi paragraph_format().set_space_before() (tačaka pre pasusa) ili paragraph_format().set_space_after() (tačaka posle pasusa):
tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6); // 6pt after