Ako formátovať text v C++
Aspose.Slides FOSS for C++ poskytuje detailné formátovanie textu prostredníctvom triedy PortionFormat. Portion je najmenšia nezávislá jednotka textu; mapuje sa na jeden formátovací beh v odstavci. Tento návod ukazuje, ako použiť tučné, kurzívne, veľkosť písma a farebné formátovanie na text v prezentácii.
Sprievodca krok za krokom
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: Pridať 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: Prístup k TextFrame
shape.text_frame() vracia ukazovateľ na TextFrame tvaru. 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");TextFrame obsahuje Paragraph objektov (tf->paragraphs()). Každý Paragraph obsahuje Portion objektov (paragraph.portions()).
Krok 4: Použiť 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 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;
}Krok 5: Nastavte veľkosť písma a farbu
Nastavte 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 odseku
Jeden odsek môže obsahovať viacero častí s rôznym formátovaním. Pridajte nový Portion do kolekcie portions() odseku:
#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 sa zobrazuje čierne aj po nastavení farby
Uistite sa, že 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. Priame odovzdanie true sa nebude kompilovať alebo bude mať nedefinované správanie v závislosti od rozlíšenia preťaženia.
Písmo sa v uloženom súbore nezobrazuje
Metóda set_latin_font() nastavuje rodinu latinských fontov. Ak nie je nastavená, použije sa písmo témy prezentácie. Vlastné fonty musia byť vložené alebo dostupné na zobrazovacom zariadení.
Často kladené otázky
Ako zmením fontovú rodinu?
Nastaviť 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žiť paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Podporované hodnoty: LEFT, CENTER, RIGHT, JUSTIFY.
Ako nastaviť riadkový rozostup?
Použite 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