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.
Info
Aspose.Slides bietet auch das IShape Interface, mit dem Sie Formen zu Folien hinzufügen können. Allerdings können nicht alle über dasIShape
Interface hinzugefügten Formen Text halten. Formen, die über das IAutoShape Interface hinzugefügt werden, können jedoch Text enthalten.
Hinweis
Wenn Sie daher mit einer Form umgehen, zu der Sie Text hinzufügen möchten, sollten Sie überprüfen und bestätigen, dass sie durch dasIAutoShape
Interface gecastet wurde. Nur dann können Sie mit dem TextFrame arbeiten, der eine Eigenschaft unter IAutoShape
ist. Siehe den Abschnitt Text aktualisieren auf dieser Seite.
Textfeld auf Folie erstellen
Um ein Textfeld auf einer Folie zu erstellen, gehen Sie diese Schritte durch:
- Erstellen Sie eine Instanz der Presentation Klasse.
- Erhalten Sie eine Referenz für die erste Folie in der neu erstellten Präsentation.
- 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ügteIAutoShape
Objekt. - Fügen Sie der
IAutoShape
Objekt eineTextFrame
Eigenschaft hinzu, die einen Text enthält. Im folgenden Beispiel haben wir diesen Text hinzugefügt: Aspose TextBox - 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.
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);
Textbox mit Hyperlink hinzufügen
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:
- Erstellen Sie eine Instanz der
Presentation
Klasse. - Erhalten Sie eine Referenz für die erste Folie in der neu erstellten Präsentation.
- Fügen Sie ein
AutoShape
Objekt mitShapeType
alsRectangle
an einer bestimmten Position auf der Folie hinzu und erhalten Sie eine Referenz für das neu hinzugefügte AutoShape Objekt. - Fügen Sie dem
AutoShape
Objekt einTextFrame
hinzu, das Aspose TextBox als Standardtext enthält. - Instanziieren Sie die
IHyperlinkManager
Klasse. - Weisen Sie das
IHyperlinkManager
Objekt der set_HyperlinkClick Methode zu, die mit Ihrem bevorzugten Abschnitt desTextFrame
verknüpft ist. - 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);