TextBox verwalten

Texte auf Folien existieren typischerweise in Textfeldern oder Formen. Um also Text zu einer Folie hinzuzufügen, müssen Sie ein Textfeld hinzufügen und dann etwas Text in das Textfeld einfügen. Aspose.Slides für C++ bietet das IAutoShape Interface, das es Ihnen ermöglicht, eine Form mit etwas Text hinzuzufügen.

Textfeld auf Folie erstellen

Um ein Textfeld auf einer Folie zu erstellen, gehen Sie diese Schritte durch:

  1. Erstellen Sie eine Instanz der Presentation Klasse.
  2. Erhalten Sie eine Referenz für die erste Folie in der neu erstellten Präsentation.
  3. Fügen Sie ein IAutoShape Objekt mit ShapeType als Rectangle an einer bestimmten Position auf der Folie hinzu und erhalten Sie die Referenz für das neu hinzugefügte IAutoShape Objekt.
  4. Fügen Sie der IAutoShape Objekt eine TextFrame Eigenschaft hinzu, die einen Text enthält. Im folgenden Beispiel haben wir diesen Text hinzugefügt: Aspose TextBox
  5. Schließlich speichern Sie die PPTX-Datei über das Presentation Objekt.

Dieser C++ Code – eine Implementierung der obigen Schritte – zeigt Ihnen, wie Sie Text zu einer Folie hinzufügen:

// Instanziiert die Präsentation
auto pres = System::MakeObject<Presentation>();

// Holt die erste Folie in der Präsentation
auto sld = pres->get_Slides()->idx_get(0);

// Fügt eine AutoShape mit typ als Rechteck hinzu
auto ashp = sld->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 150.0f, 75.0f, 150.0f, 50.0f);

// Fügt TextFrame zum Rechteck hinzu
ashp->AddTextFrame(u" ");

// Greift auf das Textfeld zu
auto txtFrame = ashp->get_TextFrame();

// Erstellt das Paragraph-Objekt für das Textfeld
auto para = txtFrame->get_Paragraphs()->idx_get(0);

// Erstellt ein Portion-Objekt für den Absatz
auto portion = para->get_Portions()->idx_get(0);

// Setzt den Text
portion->set_Text(u"Aspose TextBox");

// Speichert die Präsentation auf der Festplatte
pres->Save(u"TextBox_out.pptx", SaveFormat::Pptx);

Überprüfen, ob es sich um eine Textfeldform handelt

Aspose.Slides bietet die get_IsTextBox() Methode (aus der AutoShape Klasse), mit der Sie Formen untersuchen und Textfelder finden können.

Textfeld und Form

Dieser C++ Code zeigt Ihnen, wie Sie überprüfen können, ob eine Form als Textfeld erstellt wurde:

auto pres = System::MakeObject<Presentation>(u"pres.pptx");
for (auto&& slide : pres->get_Slides())
{
    for (auto&& shape : slide->get_Shapes())
    {
        auto autoShape = System::DynamicCast_noexcept<Aspose::Slides::AutoShape>(shape);
        if (autoShape != nullptr)
        {
            System::Console::WriteLine(autoShape->get_IsTextBox() ? System::String(u"Form ist ein Textfeld") : System::String(u"Form ist kein Textfeld"));
        }
    }
}

Spalte im Textfeld hinzufügen

Aspose.Slides bietet die set_ColumnCount und set_ColumnSpacing Methoden (aus dem ITextFrameFormat Interface und der TextFrameFormat Klasse), die es Ihnen ermöglichen, Spalten zu Textfeldern hinzuzufügen. Sie können die Anzahl der Spalten in einem Textfeld angeben und den Abstand in Punkten zwischen den Spalten festlegen.

Dieser C++ Code demonstriert die beschriebene Operation:

auto presentation = System::MakeObject<Presentation>();
// Holt die erste Folie in der Präsentation
auto slide = presentation->get_Slides()->idx_get(0);

// Fügt eine AutoShape mit typ als Rechteck hinzu
auto aShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 100.0f, 100.0f, 300.0f, 300.0f);

// Fügt TextFrame zum Rechteck hinzu
aShape->AddTextFrame(String(u"Alle diese Spalten sind darauf beschränkt, innerhalb eines einzigen Textrahmens zu bleiben -- ") 
    + u" Sie können Text hinzufügen oder löschen, und der neue oder verbleibende Text passt sich automatisch " 
    + u"an, um im Rahmen zu fließen. Sie können keinen Text von einem Rahmen " 
    + u"zu einem anderen fließen lassen -- wir haben Ihnen gesagt, dass die Spaltenoptionen für Texte in PowerPoint eingeschränkt sind!");

// Holt das Textformat des TextFrames
auto format = aShape->get_TextFrame()->get_TextFrameFormat();

// Gibt die Anzahl der Spalten im TextFrame an
format->set_ColumnCount(3);

// Gibt den Abstand zwischen den Spalten an
format->set_ColumnSpacing(10);

// Speichert die Präsentation
presentation->Save(u"ColumnCount.pptx", SaveFormat::Pptx);

Spalte im Textfeld hinzufügen

Aspose.Slides für C++ bietet die set_ColumnCount Methode (aus dem ITextFrameFormat Interface), die es Ihnen ermöglicht, Spalten in Textfeldern hinzuzufügen. Mit dieser Methode können Sie Ihre bevorzugte Anzahl von Spalten in einem Textfeld angeben.

Dieser C++ Code zeigt Ihnen, wie Sie eine Spalte innerhalb eines Textfeldes hinzufügen:

String outPptxFileName = u"ColumnsTest.pptx";
    
auto pres = System::MakeObject<Presentation>();
auto shape = pres->get_Slides()->idx_get(0)->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 100.0f, 100.0f, 300.0f, 300.0f);
auto format = System::ExplicitCast<TextFrameFormat>(shape->get_TextFrame()->get_TextFrameFormat());

format->set_ColumnCount(2);
shape->get_TextFrame()->set_Text(String(u"Alle diese Spalten sind gezwungen, innerhalb eines einzigen Textrahmens zu bleiben -- ") 
    + u" Sie können Text hinzufügen oder löschen - und der neue oder verbleibende Text passt sich automatisch " 
    + u"an, um im Rahmen zu bleiben. Sie können keinen Text von einem Rahmen " 
    + u"zu einem anderen fließen lassen, obwohl -- weil die Spaltenoptionen für Texte in PowerPoint eingeschränkt sind!");
pres->Save(outPptxFileName, SaveFormat::Pptx);

{
    auto test = System::MakeObject<Presentation>(outPptxFileName);
    auto format1 = System::ExplicitCast<AutoShape>(test->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0))->get_TextFrame()->get_TextFrameFormat();
    CODEPORTING_DEBUG_ASSERT1(2 == format1->get_ColumnCount());
    CODEPORTING_DEBUG_ASSERT1(std::numeric_limits<double>::quiet_NaN() == format1->get_ColumnSpacing());
}

format->set_ColumnSpacing(20);
pres->Save(outPptxFileName, SaveFormat::Pptx);

{
    auto test = System::MakeObject<Presentation>(outPptxFileName);
    auto format2 = System::ExplicitCast<AutoShape>(test->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0))->get_TextFrame()->get_TextFrameFormat();
    CODEPORTING_DEBUG_ASSERT1(2 == format2->get_ColumnCount());
    CODEPORTING_DEBUG_ASSERT1(20 == format2->get_ColumnSpacing());
}

format->set_ColumnCount(3);
format->set_ColumnSpacing(15);
pres->Save(outPptxFileName, SaveFormat::Pptx);

{
    auto test = System::MakeObject<Presentation>(outPptxFileName);
    auto format3 = System::ExplicitCast<AutoShape>(test->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0))->get_TextFrame()->get_TextFrameFormat();
    CODEPORTING_DEBUG_ASSERT1(3 == format3->get_ColumnCount());
    CODEPORTING_DEBUG_ASSERT1(15 == format3->get_ColumnSpacing());
}

Text aktualisieren

Aspose.Slides ermöglicht es Ihnen, den Text in einem Textfeld oder allen Texten in einer Präsentation zu ändern oder zu aktualisieren.

Dieser C++ Code demonstriert einen Vorgang, bei dem alle Texte in einer Präsentation aktualisiert oder geändert werden:

auto pres = System::MakeObject<Presentation>(u"text.pptx");
for (const auto& slide : pres->get_Slides())
{
    for (const auto& shape : slide->get_Shapes())
    {
        if (ObjectExt::Is<IAutoShape>(shape))
        {
            auto autoShape = System::AsCast<IAutoShape>(shape);
            for (const auto& paragraph : autoShape->get_TextFrame()->get_Paragraphs())
            {
                for (const auto& portion : paragraph->get_Portions())
                {
                    //Ändert den Text
                    portion->set_Text(portion->get_Text().Replace(u"Jahre", u"Monate"));
                    //Ändert das Format
                    portion->get_PortionFormat()->set_FontBold(NullableBool::True);
                }
            }
        }
    }
}

//Speichert die geänderte Präsentation
pres->Save(u"text-changed.pptx", SaveFormat::Pptx);

Sie können einen Link in ein Textfeld einfügen. Wenn das Textfeld angeklickt wird, werden die Benutzer auf den Link weitergeleitet.

Um ein Textfeld hinzuzufügen, das einen Link enthält, gehen Sie diese Schritte durch:

  1. Erstellen Sie eine Instanz der Presentation Klasse.
  2. Erhalten Sie eine Referenz für die erste Folie in der neu erstellten Präsentation.
  3. Fügen Sie ein AutoShape Objekt mit ShapeType als Rectangle an einer bestimmten Position auf der Folie hinzu und erhalten Sie eine Referenz für das neu hinzugefügte AutoShape Objekt.
  4. Fügen Sie dem AutoShape Objekt ein TextFrame hinzu, das Aspose TextBox als Standardtext enthält.
  5. Instanziieren Sie die IHyperlinkManager Klasse.
  6. Weisen Sie das IHyperlinkManager Objekt der set_HyperlinkClick Methode zu, die mit Ihrem bevorzugten Abschnitt des TextFrame verknüpft ist.
  7. Schließlich schreiben Sie die PPTX-Datei über das Presentation Objekt.

Dieser C++ Code – eine Implementierung der oben beschriebenen Schritte – zeigt Ihnen, wie Sie ein Textfeld mit einem Hyperlink zu einer Folie hinzufügen:

// Instanziiert eine Präsentationsklasse, die eine PPTX darstellt
auto presentation = System::MakeObject<Presentation>();

// Holt die erste Folie in der Präsentation
auto slide = presentation->get_Slides()->idx_get(0);

// Fügt ein AutoShape Objekt mit typ als Rechteck hinzu
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 150.0f, 150.0f, 150.0f, 50.0f);

// Castet die Form in AutoShape
auto autoShape = System::ExplicitCast<IAutoShape>(shape);

// Greift auf die ITextFrame Eigenschaft zu, die mit dem AutoShape verbunden ist
autoShape->AddTextFrame(u"");

auto textFrame = autoShape->get_TextFrame();

// Fügt dem Rahmen etwas Text hinzu
textFrame->get_Paragraphs()->idx_get(0)->get_Portions()->idx_get(0)->set_Text(u"Aspose.Slides");

// Setzt den Hyperlink für den Portiontext
auto linkManager = textFrame->get_Paragraphs()->idx_get(0)->get_Portions()->idx_get(0)->get_PortionFormat()->get_HyperlinkManager();
linkManager->SetExternalHyperlinkClick(u"http://www.aspose.com");

// Speichert die PPTX-Präsentation
presentation->Save(u"hLinkPPTX_out.pptx", SaveFormat::Pptx);