Verwalten von PowerPoint-Textabsätzen in PHP
Aspose.Slides bietet alle Schnittstellen und Klassen, die Sie benötigen, um mit PowerPoint-Texten, Absätzen und Portionen zu arbeiten.
- Aspose.Slides stellt die ITextFrame Schnittstelle bereit, um Objekte hinzuzufügen, die einen Absatz repräsentieren. Ein
ITextFame‑Objekt kann einen oder mehrere Absätze enthalten (jeder Absatz wird durch einen Zeilenumbruch erzeugt). - Aspose.Slides stellt die IParagraph Schnittstelle bereit, um Objekte hinzuzufügen, die Portionen repräsentieren. Ein
IParagraph‑Objekt kann eine oder mehrere Portionen enthalten (Sammlung von iPortions‑Objekten). - Aspose.Slides stellt die IPortion Schnittstelle bereit, um Objekte hinzuzufügen, die Texte und deren Formatierungseigenschaften repräsentieren.
Ein IParagraph‑Objekt kann Texte mit unterschiedlichen Formatierungseigenschaften über seine zugrunde liegenden IPortion‑Objekte verarbeiten.
Mehrere Absätze mit mehreren Portionen hinzufügen
Diese Schritte zeigen, wie Sie einen Textrahmen mit 3 Absätzen hinzufügen, wobei jeder Absatz 3 Portionen enthält:
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
- Fügen Sie der Folie ein Rechteck‑IAutoShape hinzu.
- Rufen Sie das mit dem IAutoShape verknüpfte
ITextFrameab. - Erstellen Sie zwei IParagraph‑Objekte und fügen Sie sie der
IParagraphs‑Sammlung des ITextFrame hinzu. - Erstellen Sie für jedes neue
IParagraphdrei IPortion‑Objekte (zwei Portion‑Objekte für den Standardabsatz) und fügen Sie jedesIPortion‑Objekt der IPortion‑Sammlung jedesIParagraphhinzu. - Legen Sie für jede Portion etwas Text fest.
- Wenden Sie die gewünschten Formatierungsoptionen auf jede Portion an, indem Sie die vom
IPortion‑Objekt bereitgestellten Formatierungseigenschaften nutzen. - Speichern Sie die geänderte Präsentation.
# Instanziieren einer Presentation-Klasse, die eine PPTX-Datei repräsentiert
$pres = new Presentation();
try {
# Zugriff auf die erste Folie
$slide = $pres->getSlides()->get_Item(0);
# Hinzufügen einer AutoShape vom Typ Rechteck
$ashp = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 150, 300, 150);
# Zugriff auf TextFrame der AutoShape
$tf = $ashp->getTextFrame();
# Erstellen von Absätzen und Portionen mit verschiedenen Textformaten
$para0 = $tf->getParagraphs()->get_Item(0);
$port01 = new Portion();
$port02 = new Portion();
$para0->getPortions()->add($port01);
$para0->getPortions()->add($port02);
$para1 = new Paragraph();
$tf->getParagraphs()->add($para1);
$port10 = new Portion();
$port11 = new Portion();
$port12 = new Portion();
$para1->getPortions()->add($port10);
$para1->getPortions()->add($port11);
$para1->getPortions()->add($port12);
$para2 = new Paragraph();
$tf->getParagraphs()->add($para2);
$port20 = new Portion();
$port21 = new Portion();
$port22 = new Portion();
$para2->getPortions()->add($port20);
$para2->getPortions()->add($port21);
$para2->getPortions()->add($port22);
for($i = 0; $i < 3; $i++) {
for($j = 0; $j < 3; $j++) {
$portion = $tf->getParagraphs()->get_Item($i)->getPortions()->get_Item($j);
$portion->setText("Portion0" . $j);
if ($j == 0) {
$portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$portion->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
$portion->getPortionFormat()->setFontBold(NullableBool::True);
$portion->getPortionFormat()->setFontHeight(15);
} else if ($j == 1) {
$portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$portion->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
$portion->getPortionFormat()->setFontItalic(NullableBool::True);
$portion->getPortionFormat()->setFontHeight(18);
}
}
}
# Schreiben der PPTX auf die Festplatte
$pres->save("multiParaPort_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Absatzaufzählungen verwalten
Aufzählungslisten helfen Ihnen, Informationen schnell und effizient zu organisieren und darzustellen. Aufgezählte Absätze sind stets leichter zu lesen und zu verstehen.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
- Fügen Sie dem ausgewählten Folie ein autoshape hinzu.
- Greifen Sie auf das TextFrame des autoshape zu.
- Entfernen Sie den Standardabsatz im
TextFrame. - Erstellen Sie die erste Absatzinstanz mit der Klasse Paragraph.
- Setzen Sie den Aufzählungs‑
Typedes Absatzes aufSymbolund legen Sie das Aufzählungszeichen fest. - Legen Sie den Absatz‑
Textfest. - Setzen Sie die Absatz‑
Indentfür die Aufzählung. - Legen Sie eine Farbe für die Aufzählung fest.
- Setzen Sie die Höhe der Aufzählung.
- Fügen Sie den neuen Absatz zur Absatzsammlung des
TextFramehinzu. - Fügen Sie den zweiten Absatz hinzu und wiederholen Sie den Vorgang aus den Schritten 7 bis 13.
- Speichern Sie die Präsentation.
# Instanziiert eine Presentation-Klasse, die eine PPTX-Datei darstellt
$pres = new Presentation();
try {
# Greift auf die erste Folie zu
$slide = $pres->getSlides()->get_Item(0);
# Fügt eine AutoShape hinzu und greift darauf zu
$aShp = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 400, 200);
# Greift auf den TextFrame der AutoShape zu
$txtFrm = $aShp->getTextFrame();
# Entfernt den Standardabsatz
$txtFrm->getParagraphs()->removeAt(0);
# Erstellt einen Absatz
$para = new Paragraph();
# Setzt den Aufzählungsstil und das Symbol für den Absatz
$para->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$para->getParagraphFormat()->getBullet()->setChar(8226);
# Setzt den Absatztext
$para->setText("Welcome to Aspose.Slides");
# Setzt den Einzug des Aufzählungszeichens
$para->getParagraphFormat()->setIndent(25);
# Setzt die Farbe des Aufzählungszeichens
$para->getParagraphFormat()->getBullet()->getColor()->setColorType(ColorType::RGB);
$para->getParagraphFormat()->getBullet()->getColor()->setColor(java("java.awt.Color")->BLACK);
$para->getParagraphFormat()->getBullet()->setBulletHardColor(NullableBool::True);// setzt IsBulletHardColor auf true, um die eigene Aufzählungsfarbe zu verwenden
# Setzt die Höhe des Aufzählungszeichens
$para->getParagraphFormat()->getBullet()->setHeight(100);
# Fügt den Absatz dem TextFrame hinzu
$txtFrm->getParagraphs()->add($para);
# Erstellt einen zweiten Absatz
$para2 = new Paragraph();
# Setzt den Aufzählungstyp und -stil für den Absatz
$para2->getParagraphFormat()->getBullet()->setType(BulletType::Numbered);
$para2->getParagraphFormat()->getBullet()->setNumberedBulletStyle(NumberedBulletStyle->BulletCircleNumWDBlackPlain);
# Fügt dem Absatz Text hinzu
$para2->setText("This is numbered bullet");
# Setzt den Einzug des Aufzählungszeichens
$para2->getParagraphFormat()->setIndent(25);
$para2->getParagraphFormat()->getBullet()->getColor()->setColorType(ColorType::RGB);
$para2->getParagraphFormat()->getBullet()->getColor()->setColor(java("java.awt.Color")->BLACK);
$para2->getParagraphFormat()->getBullet()->setBulletHardColor(NullableBool::True);// setzt IsBulletHardColor auf true, um die eigene Aufzählungsfarbe zu verwenden
# Setzt die Höhe des Aufzählungszeichens
$para2->getParagraphFormat()->getBullet()->setHeight(100);
# Fügt den Absatz dem TextFrame hinzu
$txtFrm->getParagraphs()->add($para2);
# Speichert die geänderte Präsentation
$pres->save("Bullet_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Bildaufzählungen verwalten
Aufzählungslisten helfen Ihnen, Informationen schnell und effizient zu organisieren und darzustellen. Bildabsätze sind leicht zu lesen und zu verstehen.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
- Fügen Sie dem Folie ein autoshape hinzu.
- Greifen Sie auf das TextFrame des autoshape zu.
- Entfernen Sie den Standardabsatz im
TextFrame. - Erstellen Sie die erste Absatzinstanz mit der Klasse Paragraph.
- Laden Sie das Bild in IPPImage.
- Setzen Sie den Aufzählungstyp auf Picture und legen Sie das Bild fest.
- Legen Sie den Absatz‑
Textfest. - Setzen Sie die Absatz‑
Indentfür die Aufzählung. - Legen Sie eine Farbe für die Aufzählung fest.
- Setzen Sie die Höhe der Aufzählung.
- Fügen Sie den neuen Absatz zur Absatzsammlung des
TextFramehinzu. - Fügen Sie den zweiten Absatz hinzu und wiederholen Sie den Vorgang anhand der vorherigen Schritte.
- Speichern Sie die geänderte Präsentation.
# Instanziiert eine Presentation-Klasse, die eine PPTX-Datei repräsentiert
$presentation = new Presentation();
try {
# Greift auf die erste Folie zu
$slide = $presentation->getSlides()->get_Item(0);
# Instanziiert das Bild für Aufzählungszeichen
$picture;
$image = Images->fromFile("bullets.png");
try {
$picture = $presentation->getImages()->addImage($image);
} finally {
if (!java_is_null($image)) {
$image->dispose();
}
}
# Fügt eine AutoShape hinzu und greift darauf zu
$autoShape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 400, 200);
# Greift auf den TextFrame der AutoShape zu
$textFrame = $autoShape->getTextFrame();
# Entfernt den Standardabsatz
$textFrame->getParagraphs()->removeAt(0);
# Erstellt einen neuen Absatz
$paragraph = new Paragraph();
$paragraph->setText("Welcome to Aspose.Slides");
# Setzt den Aufzählungsstil und das Bild für den Absatz
$paragraph->getParagraphFormat()->getBullet()->setType(BulletType::Picture);
$paragraph->getParagraphFormat()->getBullet()->getPicture()->setImage($picture);
# Setzt die Höhe des Aufzählungszeichens
$paragraph->getParagraphFormat()->getBullet()->setHeight(100);
# Fügt den Absatz dem TextFrame hinzu
$textFrame->getParagraphs()->add($paragraph);
# Speichert die Präsentation als PPTX-Datei
$presentation->save("ParagraphPictureBulletsPPTX_out.pptx", SaveFormat::Pptx);
# Speichert die Präsentation als PPT-Datei
$presentation->save("ParagraphPictureBulletsPPT_out.ppt", SaveFormat::Ppt);
} catch (JavaException $e) {
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
Mehrstufige Aufzählungen verwalten
Aufzählungslisten helfen Ihnen, Informationen schnell und effizient zu organisieren und darzustellen. Mehrstufige Aufzählungen sind leicht zu lesen und zu verstehen.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
- Fügen Sie dem neuen Folie ein autoshape hinzu.
- Greifen Sie auf das TextFrame des autoshape zu.
- Entfernen Sie den Standardabsatz im
TextFrame. - Erstellen Sie die erste Absatzinstanz über die Klasse Paragraph und setzen Sie die Tiefe auf 0.
- Erstellen Sie die zweite Absatzinstanz über die Klasse
Paragraphund setzen Sie die Tiefe auf 1. - Erstellen Sie die dritte Absatzinstanz über die Klasse
Paragraphund setzen Sie die Tiefe auf 2. - Erstellen Sie die vierte Absatzinstanz über die Klasse
Paragraphund setzen Sie die Tiefe auf 3. - Fügen Sie die neuen Absätze zur Absatzsammlung des
TextFramehinzu. - Speichern Sie die geänderte Präsentation.
# Instanziiert eine Presentation-Klasse, die eine PPTX-Datei repräsentiert
$pres = new Presentation();
try {
# Greift auf die erste Folie zu
$slide = $pres->getSlides()->get_Item(0);
# Fügt eine AutoShape hinzu und greift darauf zu
$aShp = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 400, 200);
# Greift auf den TextFrame der erstellten AutoShape zu
$text = $aShp->addTextFrame("");
# Löscht den Standardabsatz
$text->getParagraphs()->clear();
# Fügt den ersten Absatz hinzu
$para1 = new Paragraph();
$para1->setText("Content");
$para1->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$para1->getParagraphFormat()->getBullet()->setChar(8226);
$para1->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$para1->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
# Setzt die Aufzählungsebene
$para1->getParagraphFormat()->setDepth(0);
# Fügt den zweiten Absatz hinzu
$para2 = new Paragraph();
$para2->setText("Second Level");
$para2->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$para2->getParagraphFormat()->getBullet()->setChar('-');
$para2->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$para2->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
# Setzt die Aufzählungsebene
$para2->getParagraphFormat()->setDepth(1);
# Fügt den dritten Absatz hinzu
$para3 = new Paragraph();
$para3->setText("Third Level");
$para3->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$para3->getParagraphFormat()->getBullet()->setChar(8226);
$para3->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$para3->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
# Setzt die Aufzählungsebene
$para3->getParagraphFormat()->setDepth(2);
# Fügt den vierten Absatz hinzu
$para4 = new Paragraph();
$para4->setText("Fourth Level");
$para4->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$para4->getParagraphFormat()->getBullet()->setChar('-');
$para4->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$para4->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
# Setzt die Aufzählungsebene
$para4->getParagraphFormat()->setDepth(3);
# Fügt die Absätze zur Sammlung hinzu
$text->getParagraphs()->add($para1);
$text->getParagraphs()->add($para2);
$text->getParagraphs()->add($para3);
$text->getParagraphs()->add($para4);
# Speichert die Präsentation als PPTX-Datei
$pres->save("MultilevelBullet.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Einen Absatz mit einer benutzerdefinierten nummerierten Liste verwalten
Die IBulletFormat Schnittstelle stellt die NumberedBulletStartWith Eigenschaft und weitere bereit, die es ermöglichen, Absätze mit benutzerdefinierter Nummerierung oder Formatierung zu verwalten.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie auf die Folie zu, die den Absatz enthält.
- Fügen Sie dem Folie ein autoshape hinzu.
- Greifen Sie auf das TextFrame des autoshape zu.
- Entfernen Sie den Standardabsatz im
TextFrame. - Erstellen Sie die erste Absatzinstanz mit der Klasse Paragraph und setzen Sie NumberedBulletStartWith auf 2.
- Erstellen Sie die zweite Absatzinstanz über die Klasse
Paragraphund setzen SieNumberedBulletStartWithauf 3. - Erstellen Sie die dritte Absatzinstanz über die Klasse
Paragraphund setzen SieNumberedBulletStartWithauf 7. - Fügen Sie die neuen Absätze zur Absatzsammlung des
TextFramehinzu. - Speichern Sie die geänderte Präsentation.
$presentation = new Presentation();
try {
$shape = $presentation->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 400, 200);
# Greift auf den TextFrame der erstellten AutoShape zu
$textFrame = $shape->getTextFrame();
# Entfernt den standardmäßig vorhandenen Absatz
$textFrame->getParagraphs()->removeAt(0);
# Erste Liste
$paragraph1 = new Paragraph();
$paragraph1->setText("bullet 2");
$paragraph1->getParagraphFormat()->setDepth(4);
$paragraph1->getParagraphFormat()->getBullet()->setNumberedBulletStartWith(2);
$paragraph1->getParagraphFormat()->getBullet()->setType(BulletType::Numbered);
$textFrame->getParagraphs()->add($paragraph1);
$paragraph2 = new Paragraph();
$paragraph2->setText("bullet 3");
$paragraph2->getParagraphFormat()->setDepth(4);
$paragraph2->getParagraphFormat()->getBullet()->setNumberedBulletStartWith(3);
$paragraph2->getParagraphFormat()->getBullet()->setType(BulletType::Numbered);
$textFrame->getParagraphs()->add($paragraph2);
$paragraph5 = new Paragraph();
$paragraph5->setText("bullet 7");
$paragraph5->getParagraphFormat()->setDepth(4);
$paragraph5->getParagraphFormat()->getBullet()->setNumberedBulletStartWith(7);
$paragraph5->getParagraphFormat()->getBullet()->setType(BulletType::Numbered);
$textFrame->getParagraphs()->add($paragraph5);
$presentation->save("SetCustomBulletsNumber-slides.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
Absatzeinzug festlegen
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
- Fügen Sie dem Rechteck‑autoshape ein autoshape hinzu.
- Fügen Sie dem Rechteck‑autoshape ein TextFrame mit drei Absätzen hinzu.
- Blenden Sie die Rechtecklinien aus.
- Setzen Sie den Einzug für jeden Paragraph über dessen BulletOffset‑Eigenschaft.
- Schreiben Sie die geänderte Präsentation als PPT‑Datei.
# Instanziert Presentation-Klasse
$pres = new Presentation();
try {
# Ruft die erste Folie ab
$sld = $pres->getSlides()->get_Item(0);
# Fügt ein Rechteck-Shape hinzu
$rect = $sld->getShapes()->addAutoShape(ShapeType::Rectangle, 100, 100, 500, 150);
# Fügt dem Rechteck ein TextFrame hinzu
$tf = $rect->addTextFrame("This is first line \rThis is second line \rThis is third line");
# Setzt den Text passend zur Form
$tf->getTextFrameFormat()->setAutofitType(TextAutofitType::Shape);
# Versteckt die Linien des Rechtecks
$rect->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
# Holt den ersten Absatz im TextFrame und setzt dessen Einzug
$para1 = $tf->getParagraphs()->get_Item(0);
# Setzt den Aufzählungsstil und das Symbol des Absatzes
$para1->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$para1->getParagraphFormat()->getBullet()->setChar(8226);
$para1->getParagraphFormat()->setAlignment(TextAlignment->Left);
$para1->getParagraphFormat()->setDepth(2);
$para1->getParagraphFormat()->setIndent(30);
# Holt den zweiten Absatz im TextFrame und setzt dessen Einzug
$para2 = $tf->getParagraphs()->get_Item(1);
$para2->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$para2->getParagraphFormat()->getBullet()->setChar(8226);
$para2->getParagraphFormat()->setAlignment(TextAlignment->Left);
$para2->getParagraphFormat()->setDepth(2);
$para2->getParagraphFormat()->setIndent(40);
# Holt den dritten Absatz im TextFrame und setzt dessen Einzug
$para3 = $tf->getParagraphs()->get_Item(2);
$para3->getParagraphFormat()->getBullet()->setType(BulletType::Symbol);
$para3->getParagraphFormat()->getBullet()->setChar(8226);
$para3->getParagraphFormat()->setAlignment(TextAlignment->Left);
$para3->getParagraphFormat()->setDepth(2);
$para3->getParagraphFormat()->setIndent(50);
# Schreibt die Präsentation auf die Festplatte
$pres->save("InOutDent_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Hängenden Einzug für einen Absatz festlegen
Dieser PHP‑Code zeigt, wie Sie den hängenden Einzug für einen Absatz festlegen:
$pres = new Presentation();
try {
$autoShape = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 250, 550, 150);
$para1 = new Paragraph();
$para1->setText("Example");
$para2 = new Paragraph();
$para2->setText("Set Hanging Indent for Paragraph");
$para3 = new Paragraph();
$para3->setText("This code shows you how to set the hanging indent for a paragraph: ");
$para2->getParagraphFormat()->setMarginLeft(10.0);
$para3->getParagraphFormat()->setMarginLeft(20.0);
$autoShape->getTextFrame()->getParagraphs()->add($para1);
$autoShape->getTextFrame()->getParagraphs()->add($para2);
$autoShape->getTextFrame()->getParagraphs()->add($para3);
$pres->save("pres.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
End‑Absatz‑Lauf‑Eigenschaften verwalten
- Erstellen Sie eine Instanz der Klasse Presentation.
- Holen Sie die Referenz für die Folie, die den Absatz enthält, über deren Position.
- Fügen Sie dem Folie ein Rechteck‑autoshape hinzu.
- Fügen Sie dem Rechteck ein TextFrame mit zwei Absätzen hinzu.
- Setzen Sie die
FontHeightund den Schriftarttyp für die Absätze. - Setzen Sie die End‑Eigenschaften für die Absätze.
- Schreiben Sie die geänderte Präsentation als PPTX‑Datei.
$pres = new Presentation();
try {
$shape = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 10, 200, 250);
$para1 = new Paragraph();
$para1->getPortions()->add(new Portion("Sample text"));
$para2 = new Paragraph();
$para2->getPortions()->add(new Portion("Sample text 2"));
$portionFormat = new PortionFormat();
$portionFormat::setFontHeight(48);
$portionFormat::setLatinFont(new FontData("Times New Roman"));
$para2->setEndParagraphPortionFormat($portionFormat);
$shape->getTextFrame()->getParagraphs()->add($para1);
$shape->getTextFrame()->getParagraphs()->add($para2);
$pres->save($resourcesOutputPath . "pres.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
HTML‑Text in Absätze importieren
Aspose.Slides bietet erweiterte Unterstützung für das Importieren von HTML‑Text in Absätze.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
- Fügen Sie dem Folie ein autoshape hinzu.
- Fügen Sie dem
autoshapeein ITextFrame hinzu und greifen Sie darauf zu. - Entfernen Sie den Standardabsatz im
ITextFrame. - Lesen Sie die Quell‑HTML‑Datei mit einem TextReader.
- Erstellen Sie die erste Absatzinstanz über die Klasse Paragraph.
- Fügen Sie den HTML‑Dateiinhalt aus dem gelesenen TextReader zur ParagraphCollection des TextFrames hinzu.
- Speichern Sie die geänderte Präsentation.
# Leere Präsentationsinstanz erstellen
$pres = new Presentation();
try {
# Zugriff auf die standardmäßige erste Folie der Präsentation
$slide = $pres->getSlides()->get_Item(0);
# AutoShape hinzufügen, um den HTML-Inhalt aufzunehmen
$ashape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 10, $pres->getSlideSize()->getSize()->getWidth() - 20, $pres->getSlideSize()->getSize()->getHeight() - 10);
$ashape->getFillFormat()->setFillType(FillType::NoFill);
# Textframe zur Form hinzufügen
$ashape->addTextFrame("");
# Alle Absätze im hinzugefügten Textframe löschen
$ashape->getTextFrame()->getParagraphs()->clear();
# HTML-Datei mit StreamReader laden
$tr = new StreamReader("file.html");
# Text aus dem HTML-StreamReader in den Textframe einfügen
$ashape->getTextFrame()->getParagraphs()->addFromHtml($tr->readToEnd());
# Präsentation speichern
$pres->save("output_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Absatztext nach HTML exportieren
Aspose.Slides bietet erweiterte Unterstützung für das Exportieren von Texten (in Absätzen enthalten) nach HTML.
- Erstellen Sie eine Instanz der Klasse Presentation und laden Sie die gewünschte Präsentation.
- Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
- Greifen Sie auf die Form zu, die den Text enthält, der nach HTML exportiert werden soll.
- Greifen Sie auf das TextFrame der Form zu.
- Erstellen Sie eine Instanz von
StreamWriterund fügen Sie die neue HTML‑Datei hinzu. - Geben Sie dem
StreamWritereinen Start‑Index und exportieren Sie die gewünschten Absätze.
# Lade die Präsentationsdatei
$pres = new Presentation("ExportingHTMLText.pptx");
try {
# Zugriff auf die standardmäßige erste Folie der Präsentation
$slide = $pres->getSlides()->get_Item(0);
# Gewünschter Index
$index = 0;
# Zugriff auf das hinzugefügte Shape
$ashape = $slide->getShapes()->get_Item($index);
# Erstelle die HTML-Ausgabedatei
$os = new Java("java.io.FileOutputStream", "output.html");
$writer = new OutputStreamWriter($os, "UTF-8");
# Extrahiere den ersten Absatz als HTML
# Schreibe Paragraphendaten nach HTML, indem der Startindex des Paragraphen und die Gesamtzahl zu kopierenden Paragraphen angegeben wird
$writer->write($ashape->getTextFrame()->getParagraphs()->exportToHtml(0, $ashape->getTextFrame()->getParagraphs()->getCount(), null));
$writer->close();
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Einen Absatz als Bild speichern
In diesem Abschnitt untersuchen wir zwei Beispiele, die zeigen, wie ein Textabsatz, dargestellt durch die Paragraph‑Klasse, als Bild gespeichert wird. Beide Beispiele umfassen das Abrufen des Bildes einer Form, die den Absatz enthält, über die getImage‑Methoden der Shape-Klasse, das Berechnen der Begrenzungsrechtecke des Absatzes innerhalb der Form und das Exportieren als Bitmap‑Bild. Diese Ansätze ermöglichen das Extrahieren bestimmter Textteile aus PowerPoint‑Präsentationen und das Speichern als separate Bilder, was in verschiedenen Szenarien nützlich sein kann.
Nehmen wir an, wir haben eine Präsentationsdatei namens sample.pptx mit einer Folie, wobei die erste Form ein Textfeld mit drei Absätzen ist.

Beispiel 1
In diesem Beispiel erhalten wir den zweiten Absatz als Bild. Dazu extrahieren wir das Bild der Form aus der ersten Folie der Präsentation und berechnen anschließend die Begrenzungsrechtecke des zweiten Absatzes im TextFrame der Form. Der Absatz wird dann auf ein neues Bitmap‑Bild gezeichnet, das im PNG‑Format gespeichert wird. Diese Methode ist besonders nützlich, wenn ein bestimmter Absatz als separates Bild gespeichert werden soll, wobei die genauen Abmessungen und die Formatierung des Textes erhalten bleiben.
$imageIO = new Java("javax.imageio.ImageIO");
$presentation = new Presentation("sample.pptx");
try {
$firstShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
// Speichere das Shape im Speicher als Bitmap.
$shapeImage = $firstShape->getImage();
$shapeImageStream = new Java("java.io.ByteArrayOutputStream");
$shapeImage->save($shapeImageStream, ImageFormat::Png);
$shapeImage->dispose();
// Erstelle ein Shape-Bitmap aus dem Speicher.
$shapeImageInputStream = new Java("java.io.ByteArrayInputStream", $shapeImageStream->toByteArray());
$shapeBitmap = $imageIO->read($shapeImageInputStream);
// Berechne die Grenzen des zweiten Absatzes.
$secondParagraph = $firstShape->getTextFrame()->getParagraphs()->get_Item(1);
$paragraphRectangle = $secondParagraph->getRect();
// Berechne die Koordinaten und die Größe für das Ausgabebild (Mindestgröße - 1x1 Pixel).
$imageX = floor(java_values($paragraphRectangle->getX()));
$imageY = floor(java_values($paragraphRectangle->getY()));
$imageWidth = max(1, ceil(java_values($paragraphRectangle->getWidth())));
$imageHeight = max(1, ceil(java_values($paragraphRectangle->getHeight())));
// Beschneide das Shape-Bitmap, um nur das Absatz-Bitmap zu erhalten.
$paragraphBitmap = $shapeBitmap->getSubimage($imageX, $imageY, $imageWidth, $imageHeight);
$imageIO->write($paragraphBitmap, "png", new Java("java.io.File", "paragraph.png"));
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
Das Ergebnis:

Beispiel 2
In diesem Beispiel erweitern wir den vorherigen Ansatz, indem wir Skalierungsfaktoren zum Absatzbild hinzufügen. Die Form wird aus der Präsentation extrahiert und mit einem Skalierungsfaktor von 2 als Bild gespeichert. Dadurch wird bei der Exportierung des Absatzes eine höhere Auflösung erzielt. Die Absatzgrenzen werden anschließend unter Berücksichtigung des Skalierungsfaktors berechnet. Skalierung kann besonders nützlich sein, wenn ein detaillierteres Bild benötigt wird, etwa für hochwertige Druckmaterialien.
$imageIO = new Java("javax.imageio.ImageIO");
$imageScaleX = 2;
$imageScaleY = $imageScaleX;
$presentation = new Presentation("sample.pptx");
try {
$firstShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
// Speichere das Shape im Speicher als Bitmap mit Skalierung.
$shapeImage = $firstShape->getImage(ShapeThumbnailBounds::Shape, $imageScaleX, $imageScaleY);
$shapeImageStream = new Java("java.io.ByteArrayOutputStream");
$shapeImage->save($shapeImageStream, ImageFormat::Png);
$shapeImage->dispose();
// Erstelle ein Shape-Bitmap aus dem Speicher.
$shapeImageInputStream = new Java("java.io.ByteArrayInputStream", $shapeImageStream->toByteArray());
$shapeBitmap = $imageIO->read($shapeImageInputStream);
// Berechne die Grenzen des zweiten Absatzes.
$secondParagraph = $firstShape->getTextFrame()->getParagraphs()->get_Item(1);
$paragraphRectangle = $secondParagraph->getRect();
$paragraphRectangle->setRect(
java_values($paragraphRectangle->getX()) * $imageScaleX,
java_values($paragraphRectangle->getY()) * $imageScaleY,
java_values($paragraphRectangle->getWidth()) * $imageScaleX,
java_values($paragraphRectangle->getHeight()) * $imageScaleY
);
// Berechne die Koordinaten und die Größe für das Ausgabebild (Mindestgröße - 1x1 Pixel).
$imageX = floor(java_values($paragraphRectangle->getX()));
$imageY = floor(java_values($paragraphRectangle->getY()));
$imageWidth = max(1, ceil(java_values($paragraphRectangle->getWidth())));
$imageHeight = max(1, ceil(java_values($paragraphRectangle->getHeight())));
// Beschneide das Shape-Bitmap, um nur das Absatz-Bitmap zu erhalten.
$paragraphBitmap = $shapeBitmap->getSubimage($imageX, $imageY, $imageWidth, $imageHeight);
$imageIO->write($paragraphBitmap, "png", new Java("java.io.File", "paragraph.png"));
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
FAQ
Kann ich das Zeilenumbruch im Textrahmen komplett deaktivieren?
Ja. Verwenden Sie die Umbruch‑Einstellung des TextFrames (setWrapText), um den Umbruch auszuschalten, sodass Zeilen nicht am Rand des Rahmens umbrechen.
Wie kann ich die genauen Begrenzungsrechtecke eines bestimmten Absatzes auf der Folie erhalten?
Sie können das Begrenzungsrechteck des Absatzes (und sogar eines einzelnen Portions) abrufen, um seine genaue Position und Größe auf der Folie zu kennen.
Wo wird die Absatz‑Ausrichtung (links/rechts/zentriert/Blocksatz) gesteuert?
Alignment ist eine Absatz‑Einstellung in ParagraphFormat; sie gilt für den gesamten Absatz, unabhängig von der Formatierung einzelner Portionen.
Kann ich eine Rechtschreib‑Sprache nur für einen Teil eines Absatzes (z. B. ein Wort) festlegen?
Ja. Die Sprache wird auf Portionsebene festgelegt (PortionFormat.setLanguageId), sodass mehrere Sprachen innerhalb eines Absatzes coexistieren können.