Como formatar texto em C++

Como formatar texto em C++

Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat classe A. Portion É a menor unidade independente de texto; ele mapeia para uma única formatação executada dentro de um parágrafo. Este guia mostra como aplicar o formato em negrito, itálico, tamanho da fonte e cor ao texto em uma apresentação.

Guia passo a passo

Passo 1: Criar e ligar a biblioteca

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 .

Passo 2: Adicionar uma forma com um quadro de texto

Antes de formatar texto, adicione uma forma e defina o seu conteúdo de texto via 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;
}

Passo 3: Acesse o quadro de texto

shape.text_frame() retorna um ponteiro para a forma de TextFrame.- Usar . -> Para chamar métodos sobre ele.

auto* tf = shape.text_frame();          // pointer to the shape's text frame
tf->set_text("your text here");

A. - Não . TextFrame contém: Paragraph objetos (tf->paragraphs()) Cada um. Paragraph contém: Portion objetos (paragraph.portions()).


Passo 4: Aplicar a formatação em negrito e itálico

Utilização: portion_format().set_font_bold() e a) portion_format().set_font_italic().Estes métodos aceitam: NullableBool::TRUE, NullableBool::FALSE, ou NullableBool::NOT_DEFINED (herdado do mestre).

#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;
}

Passo 5: Configure o tamanho e a cor da fonte

Set (s) portion_format().set_font_height() para tamanho (em pontos) e utilização fill_format() para a cor.

#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::Drawing::Color::from_argb(255, 0, 70, 127));

    prs.save("colored-text.pptx", asf::SaveFormat::PPTX);
    return 0;
}

Color::from_argb(alpha, red, green, blue) Aceita valores 0-255 para cada canal.


Passo 6: Diversas partes num mesmo parágrafo

Um único parágrafo pode conter várias partes com formatamento diferente. Adicionar um novo Portion para um parágrafo de portions() Coleção:

#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::Drawing::Color::from_argb(255, 200, 0, 0));
    paragraph.portions().add(portion2);

    prs.save("mixed-format.pptx", asf::SaveFormat::PPTX);
    return 0;
}

Problemas comuns e soluções

Texto aparece preto mesmo após a definição de cor

Assegurar a fill_format().set_fill_type(FillType::SOLID) Se não for definido o tipo de preenchimento, a alteração da cor pode não ter efeito.

NullableBool::TRUE vs. true

portion_format().set_font_bold() espera que o NullableBool::TRUE, não o C++ true.- Passando . true diretamente não irá compilar ou terá um comportamento indefinido dependendo da resolução de sobrecarga.

Fonte não aparece no arquivo guardado .

A Comissão set_latin_font() method define a família de fontes latinas. Se não for definida, é usada a fonte do tema da apresentação. As fontes personalizadas devem estar incorporadas ou disponíveis na máquina de visualização.


Perguntas Frequentes

Como posso mudar a família de fontes?

Set (s) portion_format().set_latin_font():

fmt.set_latin_font(asf::FontData("Arial"));

FontData Aceita o nome da família de fontes como uma cadeia.

Como eu definir alinhamento parágrafo?

Utilização: paragraph_format().set_alignment():

tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);

Valores suportados: LEFT, CENTER, RIGHT, JUSTIFY.

Como é que eu ajusto o espaço entre as linhas?

Utilização: paragraph_format().set_space_before() (ponto anterior ao parágrafo) ou paragraph_format().set_space_after() (ponto após o parágrafo):

tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6);   // 6pt after

Ver também:

 Português