Jak formátovat text v C++
Aspose.Slides FOSS for C++ poskytuje jemné formátování textu prostřednictvím třídy PortionFormat. Portion je nejmenší nezávislá jednotka textu; mapuje se na jeden formátovací běh v odstavci. Tento průvodce ukazuje, jak aplikovat tučné, kurzívou, velikost písma a barevné formátování na text v prezentaci.
Průvodce krok za krokem
Krok 1: Sestavit a propojit knihovnu
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: Přidat tvar s textovým rámečkem
Před formátováním textu přidejte tvar a nastavte jeho textový obsah pomocí 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: Přístup k TextFrame
shape.text_frame() vrací ukazatel na TextFrame tvaru. Použijte -> k volání metod na něm.
auto* tf = shape.text_frame(); // pointer to the shape's text frame
tf->set_text("your text here");TextFrame obsahuje Paragraph objektů (tf->paragraphs()). Každý Paragraph obsahuje Portion objektů (paragraph.portions()).
Krok 4: Použít tučné a kurzívní formátování
Použijte portion_format().set_font_bold() a portion_format().set_font_italic(). Tyto metody přijímají NullableBool::TRUE, NullableBool::FALSE nebo NullableBool::NOT_DEFINED (dědí z hlavní).
#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 velikost písma a barvu
Nastavte portion_format().set_font_height() pro velikost (v bodech) a použijte fill_format() pro barvu.
#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) přijímá hodnoty 0‑255 pro každý kanál.
Krok 6: Více částí v jednom odstavci
Jeden odstavec může obsahovat více částí s různým formátováním. Přidejte nový Portion do kolekce portions() odstavce:
#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;
}Běžné problémy a opravy
Text se zobrazuje černě i po nastavení barvy
Ujistěte se, že je fill_format().set_fill_type(FillType::SOLID) nastaveno před přiřazením barvy. Bez nastavení typu výplně může změna barvy nemít žádný efekt.
NullableBool::TRUE vs true
portion_format().set_font_bold() očekává NullableBool::TRUE, ne C++ true. Přímé předání true se nekompiluje nebo bude mít nedefinované chování v závislosti na řešení přetížení.
Písmo se v uloženém souboru neobjevuje
Metoda set_latin_font() nastavuje latinskou rodinu písma. Pokud není nastavena, použije se písmo motivu prezentace. Vlastní písma musí být vložena nebo dostupná na zobrazovacím počítači.
Často kladené otázky
Jak změním rodinu písma?
Nastavit portion_format().set_latin_font():
fmt.set_latin_font(asf::FontData("Arial"));FontData přijímá název rodiny písma jako řetězec.
Jak nastavit zarovnání odstavce?
Použijte paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Podporované hodnoty: LEFT, CENTER, RIGHT, JUSTIFY.
Jak nastavit řádkování?
Použijte paragraph_format().set_space_before() (body před odstavcem) nebo paragraph_format().set_space_after() (body po odstavci):
tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6); // 6pt after