Kako formatirati tekst u C++
Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat klasa. A Portion je najmanja neovisna jedinica teksta; ona se mapira na jedan formatiranje unutar odlomka. Ovaj vodič pokazuje kako primijeniti podebljano, kurziv, veličinu fonta i boju formatiranja 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 s tekstualnim okvirom
Prije 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 TextFrameu
shape.text_frame() vraća pokazivač na oblik TextFrame. Upotrijebite -> za pozivanje metoda 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 objekte (tf->paragraphs()). Svaki Paragraph sadrži Portion objekte (paragraph.portions()).
Korak 4: Primijenite podebljano i kurziv formatiranje
Upotrijebite portion_format().set_font_bold() i portion_format().set_font_italic(). Ove metode prihvaćaju NullableBool::TRUE, NullableBool::FALSE, ili NullableBool::NOT_DEFINED (naslijedi 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: Postavite veličinu fonta i boju
Postavi portion_format().set_font_height() za veličinu (u točkama) i upotrijebi 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) prihvaća vrijednosti 0-255 za svaki kanal.
Korak 6: Više odjeljaka u jednom odlomku
Jedan odlomak može sadržavati više dijelova s različitim formatiranjem. Dodajte novi Portion u kolekciju odlomka 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 rješenja
Tekst ostaje crn iako je boja postavljena
Osigurajte fill_format().set_fill_type(FillType::SOLID) je postavljeno prije dodjele boje. Bez postavljanja fill type, promjena boje možda neće imati učinka.
NullableBool::TRUE vs true
portion_format().set_font_bold() očekuje NullableBool::TRUE, a ne C++ true. Prosljeđivanje true direktno neće prevesti ili će imati neodređeno ponašanje ovisno o rješavanju preopterećenja.
Font se ne pojavljuje u spremljenoj datoteci
Metoda set_latin_font() metoda postavlja Latin obitelj fonta. Ako nije postavljeno, koristi se font teme prezentacije. Prilagođeni fontovi moraju biti ugrađeni ili dostupni na računalu za pregled.
Često postavljana pitanja
Kako promijeniti obitelj fonta?
Postavi portion_format().set_latin_font():
fmt.set_latin_font(asf::FontData("Arial"));FontData prima naziv obitelji fonta kao string.
Kako postaviti poravnanje odlomka?
Koristite paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Podržane vrijednosti: LEFT, CENTER, RIGHT, JUSTIFY.
Kako postaviti razmak između redaka?
Upotreba paragraph_format().set_space_before() (točke prije odlomka) ili paragraph_format().set_space_after() (točke nakon odlomka):
tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6); // 6pt after