Ako formátovať text v C++
Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat trieda. A Portion je najmenšia nezávislá jednotka textu; zodpovedá jednému formátovaciemu úseku v odstavci. Tento sprievodca ukazuje, ako použiť tučné, kurzívne, veľkosť písma a farebné formátovanie na text v prezentácii.
Postupný návod
Krok 1: Zostavte a prepojte knižnicu
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 .Krok 2: Pridajte tvar s textovým rámcom
Pred formátovaním textu pridajte tvar a nastavte jeho textový obsah pomocou 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;
}Krok 3: Získajte prístup k TextFrame
shape.text_frame() vracia ukazovateľ na tvar TextFrame. Použite -> na volanie metód na ňom.
auto* tf = shape.text_frame(); // pointer to the shape's text frame
tf->set_text("your text here");A TextFrame obsahuje Paragraph objekty (tf->paragraphs()). Každý Paragraph obsahuje Portion objekty (paragraph.portions()).
Krok 4: Použite tučné a kurzívne formátovanie
Použite portion_format().set_font_bold() a portion_format().set_font_italic(). Tieto metódy akceptujú NullableBool::TRUE, NullableBool::FALSE, alebo NullableBool::NOT_DEFINED (zdediť z 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;
}Krok 5: Nastavte veľkosť písma a farbu
Nastaviť portion_format().set_font_height() pre veľkosť (v bodoch) a použite fill_format() pre farbu.
#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) akceptuje hodnoty 0‑255 pre každý kanál.
Krok 6: Viacero častí v jednom odstavci
Jeden odsek môže obsahovať viacero častí s rôznym formátovaním. Pridajte nový Portion do odseku portions() zbierka:
#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;
}Bežné problémy a riešenia
Text zostáva čierny aj po nastavení farby
Zabezpečte fill_format().set_fill_type(FillType::SOLID) je nastavené pred priradením farby. Bez nastavenia typu výplne môže zmena farby nemajú žiadny účinok.
NullableBool::TRUE vs true
portion_format().set_font_bold() očakáva NullableBool::TRUE, nie C++ true. Odovzdanie true priamo sa nepreloží alebo bude mať nedefinované správanie v závislosti od riešenia preťaženia.
Písmo sa v uloženom súbore neobjavuje
Metóda set_latin_font() metóda nastavuje latinskú rodinu písma. Ak nie je nastavená, použije sa písmo témy prezentácie. Vlastné písma musia byť vložené alebo dostupné na zobrazovacom zariadení.
Často kladené otázky
Ako zmením rodinu písma?
Nastavte portion_format().set_latin_font():
fmt.set_latin_font(asf::FontData("Arial"));FontData akceptuje názov rodiny písma ako reťazec.
Ako nastaviť zarovnanie odseku?
Použite paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Podporované hodnoty: LEFT, CENTER, RIGHT, JUSTIFY.
Ako nastaviť riadkovú medzeru?
Použiť paragraph_format().set_space_before() (bodky pred odstavcom) alebo paragraph_format().set_space_after() (bodky po odstavci):
tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6); // 6pt after