Rotar Texto Dentro de PDF usando C++

Rotar Texto Dentro de PDF usando la Propiedad de Rotación

Usando la propiedad de Rotación de la clase TextFragment, puedes rotar texto en varios ángulos. La rotación de texto se puede usar en diferentes escenarios de generación de documentos. Puedes especificar el ángulo de rotación en grados para rotar el texto según tus necesidades. Por favor revisa los siguientes escenarios diferentes, en los cuales puedes implementar la rotación de texto.

Implementar Rotación usando TextFragment y TextBuilder

using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Text;

void ImplementRotationUsingTextFragmentAndTextBuilder() {

    String _dataDir("C:\\Samples\\");

    // Inicializar objeto de documento
    auto document = MakeObject<Document>();
    // Obtener página particular
    auto page = document->get_Pages()->Add();
    // Crear fragmento de texto
    auto textFragment1 = MakeObject<TextFragment>("main text");
    textFragment1->set_Position(MakeObject<Position>(100, 600));

    // Establecer propiedades del texto
    textFragment1->get_TextState()->set_FontSize(12);
    textFragment1->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));

    // Crear fragmento de texto rotado
    auto textFragment2 = MakeObject<TextFragment>("rotated text");
    textFragment2->set_Position(MakeObject<Position>(200, 600));
    // Establecer propiedades del texto
    textFragment2->get_TextState()->set_FontSize(12);
    textFragment2->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
    textFragment2->get_TextState()->set_Rotation(45);

    // Crear fragmento de texto rotado
    auto textFragment3 = MakeObject<TextFragment>("rotated text");
    textFragment3->set_Position(MakeObject<Position>(300, 600));

    // Establecer propiedades del texto
    textFragment3->get_TextState()->set_FontSize(12);
    textFragment3->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
    textFragment3->get_TextState()->set_Rotation(90);

    // crear objeto TextBuilder
    auto textBuilder = MakeObject<TextBuilder>(page);
    // Adjuntar el fragmento de texto a la página PDF
    textBuilder->AppendText(textFragment1);
    textBuilder->AppendText(textFragment2);
    textBuilder->AppendText(textFragment3);

    // Guardar documento
    document->Save(_dataDir + u"TextFragmentTests_Rotated1_out.pdf");
}

Implementar Rotación usando TextParagraph y TextBuilder (Fragmentos Rotados)

void ImplementRotationUsingTextParagraphAndTextBuilder_RotatedFragments() {

    String _dataDir("C:\\Samples\\");

    // Inicializar objeto documento
    auto document = MakeObject<Document>();
    // Obtener página particular
    auto page = document->get_Pages()->Add();
    auto paragraph = MakeObject<TextParagraph>();
    paragraph->set_Position(MakeObject<Position>(200, 600));

    // Crear fragmento de texto
    auto textFragment1 = MakeObject<TextFragment>("rotated text");
    // Establecer propiedades de texto
    textFragment1->get_TextState()->set_FontSize(12);
    textFragment1->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
    // Establecer rotación
    textFragment1->get_TextState()->set_Rotation(45);

    // Crear fragmento de texto
    auto textFragment2 = MakeObject<TextFragment>("main text");
    // Establecer propiedades de texto
    textFragment2->get_TextState()->set_FontSize(12);
    textFragment2->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));

    // Crear fragmento de texto
    auto textFragment3 = MakeObject<TextFragment>("another rotated text");
    // Establecer propiedades de texto
    textFragment3->get_TextState()->set_FontSize(12);
    textFragment3->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
    // Establecer rotación
    textFragment3->get_TextState()->set_Rotation(-45);

    // Agregar los fragmentos de texto al párrafo
    paragraph->AppendLine(textFragment1);
    paragraph->AppendLine(textFragment2);
    paragraph->AppendLine(textFragment3);
    // Crear objeto TextBuilder
    auto textBuilder = MakeObject<TextBuilder>(page);
    // Agregar el párrafo de texto a la página PDF
    textBuilder->AppendParagraph(paragraph);
    // Guardar documento
    document->Save(_dataDir + u"TextFragmentTests_Rotated2_out.pdf");

}

Implementar Rotación usando TextFragment y Page.Paragraphs

void ImplementRotationUsingTextFragmentAndPageParagraphs() {

    String _dataDir("C:\\Samples\\");

    // Inicializar objeto documento
    auto document = MakeObject<Document>();
    // Obtener página particular
    auto page = document->get_Pages()->Add();
    // Crear fragmento de texto
    auto textFragment1 = MakeObject<TextFragment>("texto principal");
    // Establecer propiedades de texto
    textFragment1->get_TextState()->set_FontSize(12);
    textFragment1->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));

    // Crear fragmento de texto
    auto textFragment2 = MakeObject<TextFragment>("texto rotado");

    // Establecer propiedades de texto
    textFragment2->get_TextState()->set_FontSize(12);
    textFragment2->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));

    // Establecer rotación
    textFragment2->get_TextState()->set_Rotation(315);

    // Crear fragmento de texto
    auto textFragment3 = MakeObject<TextFragment>("texto rotado");
    // Establecer propiedades de texto
    textFragment3->get_TextState()->set_FontSize(12);
    textFragment3->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));

    // Establecer rotación
    textFragment3->get_TextState()->set_Rotation(270);
    page->get_Paragraphs()->Add(textFragment1);
    page->get_Paragraphs()->Add(textFragment2);
    page->get_Paragraphs()->Add(textFragment3);

    // Guardar documento
    document->Save(_dataDir + u"TextFragmentTests_Rotated3_out.pdf");
}

Implementar Rotación usando TextParagraph y TextBuilder (Párrafo Completo Rotado)

void ImplementRotationUsingTextParagraphAndTextBuilder() {

    String _dataDir("C:\\Samples\\");

    // Inicializar objeto de documento
    auto document = MakeObject<Document>();
    // Obtener página particular
    auto page = document->get_Pages()->Add();
    for (int i = 0; i < 4; i++) {
        auto paragraph = MakeObject<TextParagraph>();
        paragraph->set_Position(MakeObject<Position>(200, 600));
        // Especificar rotación
        paragraph->set_Rotation(i * 90 + 45);
        // Crear fragmento de texto
        auto textFragment1 = MakeObject<TextFragment>("Texto del Párrafo");
        // Crear fragmento de texto
        textFragment1->get_TextState()->set_FontSize(12);
        textFragment1->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
        textFragment1->get_TextState()->set_BackgroundColor(Color::get_LightGray());
        textFragment1->get_TextState()->set_ForegroundColor(Color::get_Blue());

        // Crear fragmento de texto
        auto textFragment2 = MakeObject<TextFragment>("Segunda línea de texto");
        // Establecer propiedades del texto
        textFragment2->get_TextState()->set_FontSize(12);
        textFragment2->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
        textFragment2->get_TextState()->set_BackgroundColor(Color::get_LightGray());
        textFragment2->get_TextState()->set_ForegroundColor(Color::get_Blue());

        // Crear fragmento de texto
        auto textFragment3 = MakeObject<TextFragment>("Y algo más de texto...");
        // Establecer propiedades del texto
        textFragment3->get_TextState()->set_FontSize(12);
        textFragment3->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
        textFragment3->get_TextState()->set_BackgroundColor(Color::get_LightGray());
        textFragment3->get_TextState()->set_ForegroundColor(Color::get_Blue());
        textFragment3->get_TextState()->set_Underline(true);

        paragraph->AppendLine(textFragment1);
        paragraph->AppendLine(textFragment2);
        paragraph->AppendLine(textFragment3);
        // Crear objeto TextBuilder
        auto textBuilder = MakeObject<TextBuilder>(page);
        // Añadir el fragmento de texto a la página PDF
        textBuilder->AppendParagraph(paragraph);
    }
    // Guardar documento
    document->Save(_dataDir + u"TextFragmentTests_Rotated4_out.pdf");
}