Verwalten von PowerPoint-Textabsätzen auf Android
Aspose.Slides stellt alle Schnittstellen und Klassen bereit, die Sie benötigen, um in Java mit PowerPoint-Texten, Absätzen und Portionen zu arbeiten.
- Aspose.Slides stellt die ITextFrame Schnittstelle bereit, mit der Sie Objekte hinzufügen können, die einen Absatz darstellen. Ein
ITextFame‑Objekt kann einen oder mehrere Absätze enthalten (jeder Absatz wird durch einen Wagenrücklauf erstellt). - Aspose.Slides stellt die IParagraph Schnittstelle bereit, mit der Sie Objekte hinzufügen können, die Portionen darstellen. Ein
IParagraph‑Objekt kann eine oder mehrere Portionen enthalten (eine Sammlung von iPortions‑Objekten). - Aspose.Slides stellt die IPortion Schnittstelle bereit, mit der Sie Objekte hinzufügen können, die Texte und deren Formatierungseigenschaften darstellen.
Ein IParagraph‑Objekt kann Texte mit unterschiedlichen Formatierungseigenschaften über seine zugrunde liegenden IPortion‑Objekte verarbeiten.
Mehrere Absätze mit mehreren Textportionen hinzufügen
Diese Schritte zeigen, wie Sie einen Textrahmen hinzufügen, der 3 Absätze enthält und jeder Absatz 3 Portionen enthält:
- Erstellen Sie eine Instanz der Presentation Klasse.
- Greifen Sie über dessen Index auf die Referenz der entsprechenden Folie zu.
- Fügen Sie der Folie ein rechteckiges IAutoShape hinzu.
- Rufen Sie das mit dem IAutoShape verknüpfte ITextFrame ab.
- Erstellen Sie zwei IParagraph‑Objekte und fügen Sie diese der
IParagraphs‑Sammlung des ITextFrame hinzu. - Erstellen Sie für jedes neue
IParagraphdrei IPortion‑Objekte (zwei Portion‑Objekte für den Standard‑Paragraph) und fügen Sie jedesIPortion‑Objekt der IPortion‑Sammlung jedesIParagraphhinzu. - Legen Sie für jede Portion einen Text fest.
- Wenden Sie die gewünschten Formatierungsfunktionen 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 darstellt
Presentation pres = new Presentation();
try {
// Zugriff auf die erste Folie
ISlide slide = pres.getSlides().get_Item(0);
// Hinzufügen einer AutoShape vom Typ Rechteck
IAutoShape ashp = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 150, 300, 150);
// Zugriff auf das TextFrame der AutoShape
ITextFrame tf = ashp.getTextFrame();
// Erstellen von Absätzen und Portionen mit unterschiedlichen Textformaten
IParagraph para0 = tf.getParagraphs().get_Item(0);
IPortion port01 = new Portion();
IPortion port02 = new Portion();
para0.getPortions().add(port01);
para0.getPortions().add(port02);
IParagraph para1 = new Paragraph();
tf.getParagraphs().add(para1);
IPortion port10 = new Portion();
IPortion port11 = new Portion();
IPortion port12 = new Portion();
para1.getPortions().add(port10);
para1.getPortions().add(port11);
para1.getPortions().add(port12);
IParagraph para2 = new Paragraph();
tf.getParagraphs().add(para2);
IPortion port20 = new Portion();
IPortion port21 = new Portion();
IPortion port22 = new Portion();
para2.getPortions().add(port20);
para2.getPortions().add(port21);
para2.getPortions().add(port22);
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
IPortion 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(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(Color.BLUE);
portion.getPortionFormat().setFontItalic(NullableBool.True);
portion.getPortionFormat().setFontHeight(18);
}
}
}
// PPTX auf Festplatte schreiben
pres.save("multiParaPort_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Absatz-Aufzählungen verwalten
Aufzählungslisten helfen Ihnen, Informationen schnell und effizient zu organisieren und zu präsentieren. Aufgelistete Absätze sind immer leichter zu lesen und zu verstehen.
- Erstellen Sie eine Instanz der Presentation Klasse.
- Greifen Sie über dessen Index auf die Referenz der entsprechenden Folie zu.
- Fügen Sie der ausgewählten Folie ein autoshape hinzu.
- Greifen Sie auf das TextFrame des Autoshapes zu.
- Entfernen Sie den Standardabsatz im
TextFrame. - Erstellen Sie die erste Absatzinstanz mit der Paragraph Klasse.
- Setzen Sie den Aufzählungs‑
Typedes Absatzes aufSymbolund legen Sie das Aufzählungszeichen fest. - Setzen Sie den Absatz‑
Text. - Setzen Sie den Absatz‑
Indentfür die Aufzählung. - Legen Sie eine Farbe für die Aufzählung fest.
- Legen Sie die Höhe der Aufzählung fest.
- Fügen Sie den neuen Absatz zur Absatzsammlung des
TextFramehinzu. - Fügen Sie den zweiten Absatz hinzu und wiederholen Sie den Vorgang der Schritte 7 bis 13.
- Speichern Sie die Präsentation.
// Instanziert eine Presentation-Klasse, die eine PPTX-Datei darstellt
Presentation pres = new Presentation();
try {
// Greift auf die erste Folie zu
ISlide slide = pres.getSlides().get_Item(0);
// Fügt eine Autoshape hinzu und greift darauf zu
IAutoShape aShp = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
// Greift auf den Textframe der Autoshape zu
ITextFrame txtFrm = aShp.getTextFrame();
// Entfernt den Standardabsatz
txtFrm.getParagraphs().removeAt(0);
// Erstellt einen Absatz
Paragraph para = new Paragraph();
// Legt den Aufzählungsstil und das Symbol des Absatzes fest
para.getParagraphFormat().getBullet().setType(BulletType.Symbol);
para.getParagraphFormat().getBullet().setChar((char)8226);
// Setzt den Text des Absatzes
para.setText("Welcome to Aspose.Slides");
// Legt die Aufzählungs-Einrückung fest
para.getParagraphFormat().setIndent(25);
// Legt die Aufzählungsfarbe fest
para.getParagraphFormat().getBullet().getColor().setColorType(ColorType.RGB);
para.getParagraphFormat().getBullet().getColor().setColor(Color.BLACK);
para.getParagraphFormat().getBullet().setBulletHardColor(NullableBool.True); // set IsBulletHardColor auf true, um eine eigene Aufzählungsfarbe zu verwenden
// Legt die Aufzählungshöhe fest
para.getParagraphFormat().getBullet().setHeight(100);
// Fügt den Absatz zum Textframe hinzu
txtFrm.getParagraphs().add(para);
// Erstellt einen zweiten Absatz
Paragraph para2 = new Paragraph();
// Legt den Aufzählungstyp und -stil des Absatzes fest
para2.getParagraphFormat().getBullet().setType(BulletType.Numbered);
para2.getParagraphFormat().getBullet().setNumberedBulletStyle(NumberedBulletStyle.BulletCircleNumWDBlackPlain);
// Fügt den Absatztext hinzu
para2.setText("This is numbered bullet");
// Legt die Aufzählungs-Einrückung fest
para2.getParagraphFormat().setIndent(25);
para2.getParagraphFormat().getBullet().getColor().setColorType(ColorType.RGB);
para2.getParagraphFormat().getBullet().getColor().setColor(Color.BLACK);
para2.getParagraphFormat().getBullet().setBulletHardColor(NullableBool.True); // set IsBulletHardColor auf true, um eine eigene Aufzählungsfarbe zu verwenden
// Legt die Aufzählungshöhe fest
para2.getParagraphFormat().getBullet().setHeight(100);
// Fügt den Absatz zum Textframe hinzu
txtFrm.getParagraphs().add(para2);
// Speichert die geänderte Präsentation
pres.save("Bullet_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Bildaufzählungen verwalten
Aufzählungslisten helfen Ihnen, Informationen schnell und effizient zu organisieren und zu präsentieren. Bildabsätze sind leicht zu lesen und zu verstehen.
- Erstellen Sie eine Instanz der Presentation Klasse.
- Greifen Sie über dessen Index auf die Referenz der entsprechenden Folie zu.
- Fügen Sie der Folie ein autoshape hinzu.
- Greifen Sie auf das TextFrame des Autoshapes zu.
- Entfernen Sie den Standardabsatz im
TextFrame. - Erstellen Sie die erste Absatzinstanz mit der Paragraph Klasse.
- Laden Sie das Bild in IPPImage.
- Setzen Sie den Aufzählungstyp auf Picture und legen Sie das Bild fest.
- Setzen Sie den Paragraph‑
Text. - Setzen Sie den Paragraph‑
Indentfür die Aufzählung. - Legen Sie eine Farbe für die Aufzählung fest.
- Legen Sie die Höhe der Aufzählung fest.
- Fügen Sie den neuen Absatz zur Absatzsammlung des
TextFramehinzu. - Fügen Sie den zweiten Absatz hinzu und wiederholen Sie den Vorgang basierend auf den vorherigen Schritten.
- Speichern Sie die geänderte Präsentation.
// Instanziert eine Presentation-Klasse, die eine PPTX-Datei darstellt
Presentation presentation = new Presentation();
try {
// Greift auf die erste Folie zu
ISlide slide = presentation.getSlides().get_Item(0);
// Instanziert das Bild für Aufzählungen
IPPImage picture;
IImage image = Images.fromFile("bullets.png");
try {
picture = presentation.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Fügt eine Autoshape hinzu und greift darauf zu
IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
// Greift auf den Textframe der Autoshape zu
ITextFrame textFrame = autoShape.getTextFrame();
// Entfernt den Standardabsatz
textFrame.getParagraphs().removeAt(0);
// Erstellt einen neuen Absatz
Paragraph paragraph = new Paragraph();
paragraph.setText("Welcome to Aspose.Slides");
// Legt den Aufzählungsstil und das Bild des Absatzes fest
paragraph.getParagraphFormat().getBullet().setType(BulletType.Picture);
paragraph.getParagraphFormat().getBullet().getPicture().setImage(picture);
// Legt die Aufzählungshöhe fest
paragraph.getParagraphFormat().getBullet().setHeight(100);
// Fügt den Absatz zum Textframe hinzu
textFrame.getParagraphs().add(paragraph);
// Schreibt die Präsentation als PPTX-Datei
presentation.save("ParagraphPictureBulletsPPTX_out.pptx", SaveFormat.Pptx);
// Schreibt die Präsentation als PPT-Datei
presentation.save("ParagraphPictureBulletsPPT_out.ppt", SaveFormat.Ppt);
} catch (IOException e) {
} finally {
if (presentation != null) presentation.dispose();
}
Mehrstufige Aufzählungen verwalten
Aufzählungslisten helfen Ihnen, Informationen schnell und effizient zu organisieren und zu präsentieren. Mehrstufige Aufzählungen sind leicht zu lesen und zu verstehen.
- Erstellen Sie eine Instanz der Presentation Klasse.
- Greifen Sie über dessen Index auf die Referenz der entsprechenden Folie zu.
- Fügen Sie in der neuen Folie ein autoshape hinzu.
- Greifen Sie auf das TextFrame des Autoshapes zu.
- Entfernen Sie den Standardabsatz im
TextFrame. - Erstellen Sie die erste Absatzinstanz über die Paragraph Klasse und setzen Sie die Tiefe auf 0.
- Erstellen Sie die zweite Absatzinstanz über die
Paragraph‑Klasse und setzen Sie die Tiefe auf 1. - Erstellen Sie die dritte Absatzinstanz über die
Paragraph‑Klasse und setzen Sie die Tiefe auf 2. - Erstellen Sie die vierte Absatzinstanz über die
Paragraph‑Klasse und setzen Sie die Tiefe auf 3. - Fügen Sie die neuen Absätze zur Absatzsammlung des
TextFramehinzu. - Speichern Sie die geänderte Präsentation.
// Instanziert eine Presentation-Klasse, die eine PPTX-Datei darstellt
Presentation pres = new Presentation();
try {
// Greift auf die erste Folie zu
ISlide slide = pres.getSlides().get_Item(0);
// Fügt eine Autoshape hinzu und greift darauf zu
IAutoShape aShp = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
// Greift auf den Textframe der erstellten Autoshape zu
ITextFrame text = aShp.addTextFrame("");
// Löscht den Standardabsatz
text.getParagraphs().clear();
// Fügt den ersten Absatz hinzu
IParagraph para1 = new Paragraph();
para1.setText("Content");
para1.getParagraphFormat().getBullet().setType(BulletType.Symbol);
para1.getParagraphFormat().getBullet().setChar((char)8226);
para1.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
para1.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
// Legt die Aufzählungsebene fest
para1.getParagraphFormat().setDepth((short)0);
// Fügt den zweiten Absatz hinzu
IParagraph 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(Color.BLACK);
// Legt die Aufzählungsebene fest
para2.getParagraphFormat().setDepth((short)1);
// Fügt den dritten Absatz hinzu
IParagraph para3 = new Paragraph();
para3.setText("Third Level");
para3.getParagraphFormat().getBullet().setType(BulletType.Symbol);
para3.getParagraphFormat().getBullet().setChar((char)8226);
para3.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
para3.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
// Legt die Aufzählungsebene fest
para3.getParagraphFormat().setDepth((short)2);
// Fügt den vierten Absatz hinzu
IParagraph 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(Color.BLACK);
// Legt die Aufzählungsebene fest
para4.getParagraphFormat().setDepth((short)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);
// Schreibt die Präsentation als PPTX-Datei
pres.save("MultilevelBullet.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Einen Absatz mit einer benutzerdefinierten nummerierten Liste verwalten
Die IBulletFormat Schnittstelle stellt die Eigenschaft NumberedBulletStartWith und weitere bereit, mit denen Sie Absätze mit benutzerdefinierter Nummerierung oder Formatierung verwalten können.
- Erstellen Sie eine Instanz der Presentation Klasse.
- Greifen Sie auf die Folie zu, die den Absatz enthält.
- Fügen Sie der Folie ein autoshape hinzu.
- Greifen Sie auf das TextFrame des Autoshapes zu.
- Entfernen Sie den Standardabsatz im
TextFrame. - Erstellen Sie die erste Absatzinstanz über die Paragraph Klasse und setzen Sie NumberedBulletStartWith auf 2.
- Erstellen Sie die zweite Absatzinstanz über die
Paragraph‑Klasse und setzen SieNumberedBulletStartWithauf 3. - Erstellen Sie die dritte Absatzinstanz über die
Paragraph‑Klasse und setzen SieNumberedBulletStartWithauf 7. - Fügen Sie die neuen Absätze zur Absatzsammlung des
TextFramehinzu. - Speichern Sie die geänderte Präsentation.
Presentation presentation = new Presentation();
try {
IAutoShape shape = presentation.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
// Greift auf den Textframe der erstellten Autoshape zu
ITextFrame textFrame = shape.getTextFrame();
// Entfernt den vorhandenen Standardabsatz
textFrame.getParagraphs().removeAt(0);
// Erste Liste
Paragraph paragraph1 = new Paragraph();
paragraph1.setText("bullet 2");
paragraph1.getParagraphFormat().setDepth((short)4);
paragraph1.getParagraphFormat().getBullet().setNumberedBulletStartWith((short)2);
paragraph1.getParagraphFormat().getBullet().setType(BulletType.Numbered);
textFrame.getParagraphs().add(paragraph1);
Paragraph paragraph2 = new Paragraph();
paragraph2.setText("bullet 3");
paragraph2.getParagraphFormat().setDepth((short)4);
paragraph2.getParagraphFormat().getBullet().setNumberedBulletStartWith((short)3);
paragraph2.getParagraphFormat().getBullet().setType(BulletType.Numbered);
textFrame.getParagraphs().add(paragraph2);
Paragraph paragraph5 = new Paragraph();
paragraph5.setText("bullet 7");
paragraph5.getParagraphFormat().setDepth((short)4);
paragraph5.getParagraphFormat().getBullet().setNumberedBulletStartWith((short)7);
paragraph5.getParagraphFormat().getBullet().setType(BulletType.Numbered);
textFrame.getParagraphs().add(paragraph5);
presentation.save("SetCustomBulletsNumber-slides.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
Einrückung der ersten Zeile für einen Absatz festlegen
Verwenden Sie die Methode IParagraphFormat.setIndent, um die Einrückung der ersten Zeile eines Absatzes zu steuern. Diese Methode verschiebt nur die erste Zeile relativ zum linken Rand des Absatzes. Ein positiver Wert verschiebt die erste Zeile nach rechts, während die übrigen Zeilen am Absatzkörper ausgerichtet bleiben.
Verwenden Sie IParagraphFormat.setMarginLeft, wenn Sie den gesamten Absatz verschieben müssen. Verwenden Sie IParagraphFormat.setIndent, wenn Sie nur die erste Zeile verschieben müssen.
Das untenstehende Beispiel erzeugt mehrere Absätze und wendet verschiedene Einrückungswerte an, um zu zeigen, wie sich die Einrückung der ersten Zeile auf das Absatzlayout auswirkt.
- Erstellen Sie eine Instanz der Presentation Klasse.
- Greifen Sie auf die Ziel‑Folie zu.
- Fügen Sie der Folie ein rechteckiges AutoShape hinzu.
- Fügen Sie der Form ein leeres TextFrame hinzu und entfernen Sie den Standardabsatz.
- Erstellen Sie mehrere Absätze und setzen Sie für sie unterschiedliche Indent Werte.
- Fügen Sie die Absätze zum Textrahmen hinzu.
- Speichern Sie die geänderte Präsentation.
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape rectangleShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 420, 220);
rectangleShape.getFillFormat().setFillType(FillType.NoFill);
rectangleShape.getLineFormat().getFillFormat().setFillType(FillType.Solid);
rectangleShape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY);
ITextFrame textFrame = rectangleShape.addTextFrame("");
textFrame.getTextFrameFormat().setAutofitType(TextAutofitType.Shape);
textFrame.getParagraphs().removeAt(0);
Paragraph firstParagraph = new Paragraph();
firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
firstParagraph.setText("No first-line indent. Wrapped lines start at the same position as the first line.");
firstParagraph.getParagraphFormat().setMarginLeft(20f);
firstParagraph.getParagraphFormat().setIndent(0f);
Paragraph secondParagraph = new Paragraph();
secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
secondParagraph.setText("First-line indent of 20 points. The first line moves to the right, while wrapped lines remain aligned to the paragraph body.");
secondParagraph.getParagraphFormat().setMarginLeft(20f);
secondParagraph.getParagraphFormat().setIndent(20f);
Paragraph thirdParagraph = new Paragraph();
thirdParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
thirdParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
thirdParagraph.setText("First-line indent of 40 points. This paragraph shows a larger first-line offset to make the effect easier to see.");
thirdParagraph.getParagraphFormat().setMarginLeft(20f);
thirdParagraph.getParagraphFormat().setIndent(40f);
textFrame.getParagraphs().add(firstParagraph);
textFrame.getParagraphs().add(secondParagraph);
textFrame.getParagraphs().add(thirdParagraph);
presentation.save("paragraph_indent.pptx", SaveFormat.Pptx);
}
finally {
presentation.dispose();
}
Das Ergebnis:

Hängende Einrückung für einen Absatz festlegen
Eine hängende Einrückung ist ein Absatzlayout, bei dem die erste Zeile links von den übrigen Zeilen beginnt. In Aspose.Slides erzeugen Sie diesen Effekt mit der Methode IParagraphFormat.setIndent. Setzen Sie die Einrückung auf einen negativen Wert, um die erste Zeile relativ zum Absatzkörper nach links zu verschieben.
In der Praxis definiert IParagraphFormat.setMarginLeft die linke Position des Absatzkörpers, und IParagraphFormat.setIndent definiert die Position der ersten Zeile relativ zu diesem Rand. Um eine hängende Einrückung zu erzeugen, setzen Sie einen positiven MarginLeft‑Wert und einen negativen Indent‑Wert.
Diese Formatierung ist nützlich für Bibliografien, Referenzen, Glossareinträge und andere Absätze, bei denen umbrochene Zeilen unter dem Absatzkörper und nicht unter dem ersten Zeichen der ersten Zeile ausgerichtet werden müssen.
- Erstellen Sie eine Instanz der Presentation Klasse.
- Greifen Sie auf die Ziel‑Folie zu.
- Fügen Sie der Folie ein rechteckiges AutoShape hinzu.
- Fügen Sie der Form ein leeres TextFrame hinzu und entfernen Sie den Standardabsatz.
- Erstellen Sie Absätze und setzen Sie für jeden Absatz einen positiven MarginLeft‑Wert.
- Setzen Sie einen negativen Indent‑Wert, um den hängenden Einrückungseffekt zu erzeugen.
- Fügen Sie die Absätze zum Textrahmen hinzu.
- Speichern Sie die geänderte Präsentation.
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape rectangleShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 420, 220);
rectangleShape.getFillFormat().setFillType(FillType.NoFill);
rectangleShape.getLineFormat().getFillFormat().setFillType(FillType.Solid);
rectangleShape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY);
ITextFrame textFrame = rectangleShape.addTextFrame("");
textFrame.getTextFrameFormat().setAutofitType(TextAutofitType.Shape);
textFrame.getParagraphs().removeAt(0);
Paragraph firstParagraph = new Paragraph();
firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
firstParagraph.setText("A hanging indent is created by combining a positive left margin with a negative indent. The first line starts to the left, while wrapped lines align with the paragraph body.");
firstParagraph.getParagraphFormat().setMarginLeft(40f);
firstParagraph.getParagraphFormat().setIndent(-20f);
Paragraph secondParagraph = new Paragraph();
secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
secondParagraph.setText("This second example uses a deeper hanging indent so the difference between the first line and the wrapped lines is easier to compare.");
secondParagraph.getParagraphFormat().setMarginLeft(60f);
secondParagraph.getParagraphFormat().setIndent(-30f);
textFrame.getParagraphs().add(firstParagraph);
textFrame.getParagraphs().add(secondParagraph);
presentation.save("hanging_indent.pptx", SaveFormat.Pptx);
}
finally {
presentation.dispose();
}
Das Ergebnis:

Endabsatzlauf‑Eigenschaften verwalten
- Erstellen Sie eine Instanz der Presentation Klasse.
- Rufen Sie über dessen Position die Referenz der Folie ab, die den Absatz enthält.
- Fügen Sie der Folie ein rechteckiges 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.
Presentation pres = new Presentation();
try {
IAutoShape shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 200, 250);
Paragraph para1 = new Paragraph();
para1.getPortions().add(new Portion("Sample text"));
Paragraph para2 = new Paragraph();
para2.getPortions().add(new Portion("Sample text 2"));
PortionFormat 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 (pres != null) pres.dispose();
}
HTML‑Text in Absätze importieren
Aspose.Slides bietet erweiterte Unterstützung zum Importieren von HTML‑Text in Absätze.
- Erstellen Sie eine Instanz der Presentation Klasse.
- Greifen Sie über dessen Index auf die Referenz der entsprechenden Folie zu.
- Fügen Sie der 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 Paragraph Klasse.
- Fügen Sie den im gelesenen TextReader enthaltenen HTML‑Dateiinhalt zur ParagraphCollection des TextFrames hinzu.
- Speichern Sie die geänderte Präsentation.
// Leere Präsentationsinstanz erstellen
Presentation pres = new Presentation();
try {
// Zugriff auf die standardmäßige erste Folie der Präsentation
ISlide slide = pres.getSlides().get_Item(0);
// Hinzugefügt wird die AutoShape, um den HTML-Inhalt unterzubringen
IAutoShape ashape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 10,
(float)pres.getSlideSize().getSize().getWidth() - 20, (float)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
TextReader 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 (pres != null) pres.dispose();
}
Absatz‑Text nach HTML exportieren
Aspose.Slides bietet erweiterte Unterstützung zum Exportieren von Texten (die in Absätzen enthalten sind) nach HTML.
- Erstellen Sie eine Instanz der Presentation Klasse und laden Sie die gewünschte Präsentation.
- Greifen Sie über dessen Index auf die Referenz der entsprechenden Folie zu.
- Greifen Sie auf die Form zu, die den zu HTML zu exportierenden Text enthält.
- Greifen Sie auf das TextFrame der Form zu.
- Erstellen Sie eine Instanz von
StreamWriterund fügen Sie die neue HTML‑Datei hinzu. - Geben Sie einen Start‑Index an den StreamWriter weiter und exportieren Sie die gewünschten Absätze.
// Lade die Präsentationsdatei
Presentation pres = new Presentation("ExportingHTMLText.pptx");
try {
// Greift auf die standardmäßige erste Folie der Präsentation zu
ISlide slide = pres.getSlides().get_Item(0);
// Gewünschter Index
int index = 0;
// Zugriff auf die hinzugefügte Form
IAutoShape ashape = (IAutoShape) slide.getShapes().get_Item(index);
// Erstelle Ausgabedatei HTML
OutputStream os = new FileOutputStream("output.html");
Writer writer = new OutputStreamWriter(os, "UTF-8");
//Extrahiere den ersten Absatz als HTML
// Schreibe Absatzdaten nach HTML, indem der Startindex des Absatzes und die Gesamtzahl zu kopierender Absätze angegeben werden
writer.write(ashape.getTextFrame().getParagraphs().exportToHtml(0, ashape.getTextFrame().getParagraphs().getCount(), null));
writer.close();
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Einen Absatz als Bild speichern
In diesem Abschnitt untersuchen wir zwei Beispiele, die zeigen, wie ein Textabsatz, dargestellt durch die IParagraph Schnittstelle, als Bild gespeichert werden kann. Beide Beispiele umfassen das Abrufen des Bildes einer Form, die den Absatz enthält, mithilfe der getImage‑Methoden der IShape Schnittstelle, die Berechnung der Begrenzungen des Absatzes innerhalb der Form und das Exportieren als Bitmap‑Bild. Diese Vorgehensweisen ermöglichen es, bestimmte Textteile aus PowerPoint‑Präsentationen zu extrahieren und als separate Bilder zu speichern, was in verschiedenen Szenarien nützlich sein kann.
Angenommen, 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 Begrenzungen des zweiten Absatzes im Textrahmen 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 Sie einen bestimmten Absatz als separates Bild speichern möchten, während die genauen Abmessungen und die Formatierung des Textes erhalten bleiben.
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape firstShape = (IAutoShape) presentation.getSlides().get_Item(0).getShapes().get_Item(0);
// Form im Speicher als Bitmap speichern.
IImage shapeImage = firstShape.getImage();
ByteArrayOutputStream shapeImageStream = new ByteArrayOutputStream();
shapeImage.save(shapeImageStream, ImageFormat.Png);
shapeImage.dispose();
// Bitmap der Form aus dem Speicher erstellen.
InputStream shapeImageInputStream = new ByteArrayInputStream(shapeImageStream.toByteArray());
BufferedImage shapeBitmap = ImageIO.read(shapeImageInputStream);
// Grenzen des zweiten Absatzes berechnen.
IParagraph secondParagraph = firstShape.getTextFrame().getParagraphs().get_Item(1);
RectF paragraphRectangle = secondParagraph.getRect();
// Koordinaten und Größe für das Ausgabebild berechnen (Mindestgröße - 1x1 Pixel).
int imageX = (int) Math.floor(paragraphRectangle.left);
int imageY = (int) Math.floor(paragraphRectangle.top);
int imageWidth = Math.max(1, (int) Math.ceil(paragraphRectangle.width()));
int imageHeight = Math.max(1, (int) Math.ceil(paragraphRectangle.height()));
// Das Form-Bitmap zuschneiden, um nur das Absatz-Bitmap zu erhalten.
BufferedImage paragraphBitmap = shapeBitmap.getSubimage(imageX, imageY, imageWidth, imageHeight);
ImageIO.write(paragraphBitmap, "png", new File("paragraph.png"));
} catch (IOException e) {
} finally {
if (presentation != null) 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 entsteht ein hochauflösendes Ergebnis beim Export des Absatzes. Die Absatzgrenzen werden anschließend unter Berücksichtigung der Skalierung berechnet. Skalierung kann besonders nützlich sein, wenn ein detaillierteres Bild benötigt wird, beispielsweise für den Einsatz in hochwertigem Druckmaterial.
float imageScaleX = 2f;
float imageScaleY = imageScaleX;
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape firstShape = (IAutoShape) presentation.getSlides().get_Item(0).getShapes().get_Item(0);
// Speichere die Form im Speicher als Bitmap mit Skalierung.
IImage shapeImage = firstShape.getImage(ShapeThumbnailBounds.Shape, imageScaleX, imageScaleY);
ByteArrayOutputStream shapeImageStream = new ByteArrayOutputStream();
shapeImage.save(shapeImageStream, ImageFormat.Png);
shapeImage.dispose();
// Bitmap der Form aus dem Speicher erstellen.
InputStream shapeImageInputStream = new ByteArrayInputStream(shapeImageStream.toByteArray());
BufferedImage shapeBitmap = ImageIO.read(shapeImageInputStream);
// Berechne die Grenzen des zweiten Absatzes.
IParagraph secondParagraph = firstShape.getTextFrame().getParagraphs().get_Item(1);
RectF paragraphRectangle = secondParagraph.getRect();
paragraphRectangle.set(
paragraphRectangle.left * imageScaleX,
paragraphRectangle.top * imageScaleY,
paragraphRectangle.right * imageScaleX,
paragraphRectangle.bottom * imageScaleY
);
// Berechne die Koordinaten und Größe für das Ausgabebild (Mindestgröße - 1x1 Pixel).
int imageX = (int) Math.floor(paragraphRectangle.left);
int imageY = (int) Math.floor(paragraphRectangle.top);
int imageWidth = Math.max(1, (int) Math.ceil(paragraphRectangle.width()));
int imageHeight = Math.max(1, (int) Math.ceil(paragraphRectangle.height()));
// Zuschneiden des Form-Bitmap, um nur das Absatz-Bitmap zu erhalten.
BufferedImage paragraphBitmap = shapeBitmap.getSubimage(imageX, imageY, imageWidth, imageHeight);
ImageIO.write(paragraphBitmap, "png", new File("paragraph.png"));
} catch (IOException e) {
} finally {
if (presentation != null) presentation.dispose();
}
FAQ
Kann ich den Zeilenumbruch in einem Textrahmen vollständig deaktivieren?
Ja. Verwenden Sie die Umbruch‑Einstellung des Textrahmens (setWrapText), um den Umbruch auszuschalten, sodass Zeilen nicht am Rand des Rahmens umbrochen werden.
Wie kann ich die genauen on‑Slide‑Begrenzungen eines bestimmten Absatzes erhalten?
Sie können das Begrenzungsrechteck des Absatzes (und sogar einer einzelnen Portion) 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‑Ebene‑Einstellung in ParagraphFormat; sie gilt für den gesamten Absatz, unabhängig von der Formatierung einzelner Portionen.
Kann ich eine Rechtschreibprüfungssprache 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 koexistieren können.