PowerPoint-Textabsätze in Java verwalten
Übersicht
Aspose.Slides für Java stellt Text als eine Hierarchie von Textrahmen, Absätzen und Portionen dar:
- ITextFrame stellt den Textcontainer in einer Form dar und bietet Zugriff auf ihre Absatzsammlung.
- IParagraph stellt einen Absatz in einem Textrahmen dar und bietet Zugriff auf seine Portionen sowie auf Absatz‑bezogene Formatierungen.
- IPortion stellt einen Textlauf innerhalb eines Absatzes dar. Jede Portion kann eigenen Text und Zeichen‑bezogene Formatierungen besitzen.
Ein Absatz kann daher Text mit unterschiedlichen Schriften, Farben, Größen und anderen Formatierungen enthalten, indem mehrere Portionen verwendet werden.
Absätze erstellen und formatieren
Absätze mit mehreren Portionen erstellen
Die folgenden Schritte erstellen ein Textfeld mit drei Absätzen, die jeweils drei Portionen enthalten:
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie über den Index auf die gewünschte Folie zu.
- Fügen Sie der Folie ein rechteckiges IAutoShape hinzu.
- Greifen Sie auf das ITextFrame der Form zu.
- Verwenden Sie den Standardabsatz und fügen Sie dem Textrahmen zwei weitere IParagraph‑Objekte hinzu.
- Fügen Sie ausreichend IPortion‑Objekte hinzu, sodass jeder Absatz drei Portionen enthält. Der Standardabsatz enthält bereits eine leere Portion.
- Setzen Sie den Text jeder Portion.
- Wenden Sie Zeichen‑bezogene Formatierungen über IPortion.getPortionFormat an.
- Speichern Sie die modifizierte Präsentation.
Dieses Java‑Beispiel implementiert die Schritte:
import com.aspose.slides.*;
import java.awt.Color;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 150, 300, 150);
ITextFrame textFrame = shape.getTextFrame();
IParagraph firstParagraph = textFrame.getParagraphs().get_Item(0);
firstParagraph.getPortions().add(new Portion());
firstParagraph.getPortions().add(new Portion());
IParagraph secondParagraph = new Paragraph();
secondParagraph.getPortions().add(new Portion());
secondParagraph.getPortions().add(new Portion());
secondParagraph.getPortions().add(new Portion());
textFrame.getParagraphs().add(secondParagraph);
IParagraph thirdParagraph = new Paragraph();
thirdParagraph.getPortions().add(new Portion());
thirdParagraph.getPortions().add(new Portion());
thirdParagraph.getPortions().add(new Portion());
textFrame.getParagraphs().add(thirdParagraph);
int paragraphCount = textFrame.getParagraphs().getCount();
for (int paragraphIndex = 0; paragraphIndex < paragraphCount; paragraphIndex++) {
IParagraph paragraph = textFrame.getParagraphs().get_Item(paragraphIndex);
int portionCount = paragraph.getPortions().getCount();
for (int portionIndex = 0; portionIndex < portionCount; portionIndex++) {
IPortion portion = paragraph.getPortions().get_Item(portionIndex);
portion.setText("Portion " + (paragraphIndex + 1) + "." + (portionIndex + 1));
if (portionIndex == 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 (portionIndex == 1) {
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLUE);
portion.getPortionFormat().setFontItalic(NullableBool.True);
portion.getPortionFormat().setFontHeight(18);
}
}
}
presentation.save("paragraphs_with_portions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Aufzählungs‑ und Nummerierungslisten erstellen
Eine Aufzählungs‑ oder Nummerierungsliste erstellen
Aufzählungszeichen und Nummerierungen erleichtern das Scannen zusammengehöriger Elemente. In Aspose.Slides werden Listeneinstellungen über IBulletFormat definiert.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie über den Index auf die gewünschte Folie zu.
- Fügen Sie der ausgewählten Folie ein IAutoShape hinzu.
- Greifen Sie auf das ITextFrame der Form zu.
- Entfernen Sie den Standardabsatz aus dem Textrahmen.
- Erstellen Sie ein Paragraph für ein Symbol‑Aufzählungszeichen.
- Setzen Sie IBulletFormat.setType auf BulletType.Symbol und geben Sie das Aufzählungszeichen‑Symbol an.
- Setzen Sie den Absatztext, den Einzug, die Aufzählungsfarbe und die Aufzählungsgröße.
- Fügen Sie den Absatz dem Textrahmen hinzu.
- Erstellen Sie einen zweiten Absatz und setzen Sie IBulletFormat.setType auf BulletType.Numbered.
- Konfigurieren Sie den nummerierten Aufzählungsstil und fügen Sie den Absatz dem Textrahmen hinzu.
- Speichern Sie die Präsentation.
Dieses Java‑Beispiel erstellt ein Symbol‑Aufzählungszeichen und ein nummeriertes Aufzählungszeichen:
import com.aspose.slides.*;
import java.awt.Color;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
ITextFrame textFrame = shape.getTextFrame();
textFrame.getParagraphs().clear();
Paragraph symbolParagraph = new Paragraph();
symbolParagraph.setText("Welcome to Aspose.Slides");
symbolParagraph.getParagraphFormat().getBullet().setType(BulletType.Symbol);
symbolParagraph.getParagraphFormat().getBullet().setChar((char) 0x2022);
symbolParagraph.getParagraphFormat().setIndent(25);
symbolParagraph.getParagraphFormat().getBullet().getColor().setColorType(ColorType.RGB);
symbolParagraph.getParagraphFormat().getBullet().getColor().setColor(Color.BLACK);
symbolParagraph.getParagraphFormat().getBullet().setBulletHardColor(NullableBool.True);
symbolParagraph.getParagraphFormat().getBullet().setHeight(100);
textFrame.getParagraphs().add(symbolParagraph);
Paragraph numberedParagraph = new Paragraph();
numberedParagraph.setText("This is a numbered item");
numberedParagraph.getParagraphFormat().getBullet().setType(BulletType.Numbered);
numberedParagraph.getParagraphFormat().getBullet().setNumberedBulletStyle(NumberedBulletStyle.BulletCircleNumWDBlackPlain);
numberedParagraph.getParagraphFormat().setIndent(25);
numberedParagraph.getParagraphFormat().getBullet().getColor().setColorType(ColorType.RGB);
numberedParagraph.getParagraphFormat().getBullet().getColor().setColor(Color.BLACK);
numberedParagraph.getParagraphFormat().getBullet().setBulletHardColor(NullableBool.True);
numberedParagraph.getParagraphFormat().getBullet().setHeight(100);
textFrame.getParagraphs().add(numberedParagraph);
presentation.save("bulleted_and_numbered_list.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Bild‑Aufzählungszeichen verwenden
Bild‑Aufzählungszeichen ermöglichen die Verwendung eines benutzerdefinierten Bildes anstelle eines Symbols oder einer Zahl.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie über den Index auf die gewünschte Folie zu.
- Fügen Sie ein IAutoShape hinzu und greifen Sie auf dessen ITextFrame zu.
- Entfernen Sie den Standardabsatz aus dem Textrahmen.
- Laden Sie das Aufzählungs‑Bild und fügen Sie es der Bildsammlung der Präsentation als IPPImage hinzu.
- Erstellen Sie ein Paragraph und setzen Sie dessen Text.
- Setzen Sie IBulletFormat.setType auf BulletType.Picture.
- Weisen Sie das Bild über IBulletFormat.getPicture zu und setzen Sie die Aufzählungs‑höhe.
- Fügen Sie den Absatz dem Textrahmen hinzu.
- Speichern Sie die modifizierte Präsentation.
Dieses Java‑Beispiel erstellt ein Bild‑Aufzählungszeichen:
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage bulletImage = Images.fromFile("bullets.png");
IPPImage presentationImage;
try {
presentationImage = presentation.getImages().addImage(bulletImage);
} finally {
bulletImage.dispose();
}
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
ITextFrame textFrame = shape.getTextFrame();
textFrame.getParagraphs().clear();
Paragraph paragraph = new Paragraph();
paragraph.setText("Welcome to Aspose.Slides");
paragraph.getParagraphFormat().getBullet().setType(BulletType.Picture);
paragraph.getParagraphFormat().getBullet().getPicture().setImage(presentationImage);
paragraph.getParagraphFormat().getBullet().setHeight(100);
textFrame.getParagraphs().add(paragraph);
presentation.save("picture_bullet.pptx", SaveFormat.Pptx);
presentation.save("picture_bullet.ppt", SaveFormat.Ppt);
} finally {
presentation.dispose();
}
Mehrstufige Liste erstellen
Setzen Sie IParagraphFormat.setDepth, um Absätze auf verschiedenen Ebenen einer Liste zu platzieren. Die oberste Ebene hat die Tiefe 0.
- Erstellen Sie eine Presentation und greifen Sie auf eine Folie zu.
- Fügen Sie ein IAutoShape hinzu und entfernen Sie den Standardabsatz aus dessen Textrahmen.
- Erstellen Sie vier Absätze und konfigurieren Sie deren Aufzählungs‑Symbole.
- Setzen Sie deren IParagraphFormat.setDepth Werte auf
0,1,2bzw.3. - Fügen Sie die Absätze dem Textrahmen hinzu und speichern Sie die Präsentation.
Dieses Java‑Beispiel erstellt eine vierstufige Aufzählungsliste:
import com.aspose.slides.*;
import java.awt.Color;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
ITextFrame textFrame = shape.getTextFrame();
textFrame.getParagraphs().clear();
IParagraph firstParagraph = new Paragraph();
firstParagraph.setText("Content");
firstParagraph.getParagraphFormat().getBullet().setType(BulletType.Symbol);
firstParagraph.getParagraphFormat().getBullet().setChar((char) 0x2022);
firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
firstParagraph.getParagraphFormat().setDepth((short) 0);
IParagraph secondParagraph = new Paragraph();
secondParagraph.setText("Second level");
secondParagraph.getParagraphFormat().getBullet().setType(BulletType.Symbol);
secondParagraph.getParagraphFormat().getBullet().setChar('-');
secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
secondParagraph.getParagraphFormat().setDepth((short) 1);
IParagraph thirdParagraph = new Paragraph();
thirdParagraph.setText("Third level");
thirdParagraph.getParagraphFormat().getBullet().setType(BulletType.Symbol);
thirdParagraph.getParagraphFormat().getBullet().setChar((char) 0x2022);
thirdParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
thirdParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
thirdParagraph.getParagraphFormat().setDepth((short) 2);
IParagraph fourthParagraph = new Paragraph();
fourthParagraph.setText("Fourth level");
fourthParagraph.getParagraphFormat().getBullet().setType(BulletType.Symbol);
fourthParagraph.getParagraphFormat().getBullet().setChar('-');
fourthParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
fourthParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
fourthParagraph.getParagraphFormat().setDepth((short) 3);
textFrame.getParagraphs().add(firstParagraph);
textFrame.getParagraphs().add(secondParagraph);
textFrame.getParagraphs().add(thirdParagraph);
textFrame.getParagraphs().add(fourthParagraph);
presentation.save("multilevel_list.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Nummerierte Listenelemente mit benutzerdefinierten Startwerten beginnen
Verwenden Sie IBulletFormat.setNumberedBulletStartWith, um die Anfangszahl eines nummerierten Absatzes festzulegen.
- Erstellen Sie eine Presentation und fügen Sie einer Folie ein IAutoShape hinzu.
- Entfernen Sie den Standardabsatz aus dem Textrahmen der Form.
- Erstellen Sie drei nummerierte Absätze.
- Setzen Sie IBulletFormat.setNumberedBulletStartWith für die jeweiligen Absätze auf
2,3bzw.7. - Fügen Sie die Absätze dem Textrahmen hinzu und speichern Sie die Präsentation.
Dieses Java‑Beispiel weist jedem Absatz einen eigenen Startwert zu:
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
ITextFrame textFrame = shape.getTextFrame();
textFrame.getParagraphs().clear();
Paragraph firstParagraph = new Paragraph();
firstParagraph.setText("Start at 2");
firstParagraph.getParagraphFormat().getBullet().setType(BulletType.Numbered);
firstParagraph.getParagraphFormat().getBullet().setNumberedBulletStartWith((short) 2);
textFrame.getParagraphs().add(firstParagraph);
Paragraph secondParagraph = new Paragraph();
secondParagraph.setText("Start at 3");
secondParagraph.getParagraphFormat().getBullet().setType(BulletType.Numbered);
secondParagraph.getParagraphFormat().getBullet().setNumberedBulletStartWith((short) 3);
textFrame.getParagraphs().add(secondParagraph);
Paragraph thirdParagraph = new Paragraph();
thirdParagraph.setText("Start at 7");
thirdParagraph.getParagraphFormat().getBullet().setType(BulletType.Numbered);
thirdParagraph.getParagraphFormat().getBullet().setNumberedBulletStartWith((short) 7);
textFrame.getParagraphs().add(thirdParagraph);
presentation.save("custom_numbered_list.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Absatz‑Layout und End‑Eigenschaften steuern
Ersten Zeileneinzug festlegen
Verwenden Sie IParagraphFormat.setIndent, um den Erstzeileneinzug eines Absatzes zu steuern. Diese Methode verschiebt nur die erste Zeile relativ zum linken Absatzrand. 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 wollen. Verwenden Sie IParagraphFormat.setIndent, wenn Sie nur die erste Zeile verschieben möchten.
Das nachstehende Beispiel erstellt mehrere Absätze und wendet unterschiedliche IParagraphFormat.setIndent Werte an, um zu zeigen, wie der Erstzeileneinzug das Absatzlayout beeinflusst.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie auf die Ziel‑Folie zu.
- Fügen Sie der Folie ein rechteckiges IAutoShape hinzu.
- Greifen Sie auf das ITextFrame der Form zu und entfernen Sie den Standardabsatz.
- Erstellen Sie mehrere Absätze und setzen Sie für sie unterschiedliche IParagraphFormat.setIndent Werte.
- Fügen Sie die Absätze dem Textrahmen hinzu.
- Speichern Sie die modifizierte Präsentation.
Dieser Code zeigt, wie ein Absatz‑Einzug gesetzt wird:
import com.aspose.slides.*;
import java.awt.Color;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 420, 220);
shape.getFillFormat().setFillType(FillType.NoFill);
shape.getLineFormat().getFillFormat().setFillType(FillType.Solid);
shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY);
ITextFrame textFrame = shape.getTextFrame();
textFrame.getTextFrameFormat().setAutofitType(TextAutofitType.Shape);
textFrame.getParagraphs().clear();
Paragraph firstParagraph = new Paragraph();
firstParagraph.setText("No first-line indent. Wrapped lines start at the same position as the first line.");
firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
firstParagraph.getParagraphFormat().setMarginLeft(20f);
firstParagraph.getParagraphFormat().setIndent(0f);
Paragraph secondParagraph = new Paragraph();
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().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
secondParagraph.getParagraphFormat().setMarginLeft(20f);
secondParagraph.getParagraphFormat().setIndent(20f);
Paragraph thirdParagraph = new Paragraph();
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().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
thirdParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
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ängenden Einzug festlegen
Ein hängender Einzug ist ein Absatzlayout, bei dem die erste Zeile links von den übrigen Zeilen beginnt. In Aspose.Slides erzeugen Sie diesen Effekt mit IParagraphFormat.setIndent. Übergeben Sie einen negativen Wert, um die erste Zeile nach links zu verschieben.
In der Praxis definiert IParagraphFormat.setMarginLeft die linke Position des Absatzkörpers, während IParagraphFormat.setIndent die Position der ersten Zeile relativ zu diesem Rand festlegt. Um einen hängenden Einzug zu erzeugen, übergeben Sie einen positiven Wert an setMarginLeft und einen negativen Wert an setIndent.
Diese Formatierung ist nützlich für Bibliografien, Verweise, Glossareinträge und andere Absätze, bei denen umgebrochene Zeilen unter dem Absatzkörper und nicht unter dem ersten Zeichen der ersten Zeile ausgerichtet sein müssen.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie auf die Ziel‑Folie zu.
- Fügen Sie der Folie ein rechteckiges IAutoShape hinzu.
- Greifen Sie auf das ITextFrame der Form zu und entfernen Sie den Standardabsatz.
- Erstellen Sie Absätze und übergeben Sie für jeden Absatz einen positiven Wert an IParagraphFormat.setMarginLeft.
- Übergeben Sie einen negativen Wert an IParagraphFormat.setIndent, um den hängenden Einzug zu erzeugen.
- Fügen Sie die Absätze dem Textrahmen hinzu.
- Speichern Sie die modifizierte Präsentation.
Dieser Code zeigt, wie ein hängender Einzug für einen Absatz gesetzt wird:
import com.aspose.slides.*;
import java.awt.Color;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 420, 220);
shape.getFillFormat().setFillType(FillType.NoFill);
shape.getLineFormat().getFillFormat().setFillType(FillType.Solid);
shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY);
ITextFrame textFrame = shape.getTextFrame();
textFrame.getTextFrameFormat().setAutofitType(TextAutofitType.Shape);
textFrame.getParagraphs().clear();
Paragraph firstParagraph = new Paragraph();
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().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
firstParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
firstParagraph.getParagraphFormat().setMarginLeft(40f);
firstParagraph.getParagraphFormat().setIndent(-20f);
Paragraph secondParagraph = new Paragraph();
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().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
secondParagraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
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:

End‑Paragraph‑Run‑Eigenschaften festlegen
IParagraph.setEndParagraphPortionFormat steuert die Formatierung des Absatzendzeichens. Das folgende Beispiel weist dem Endzeichen des zweiten Absatzes eine Schriftgröße und eine lateinische Schriftart zu:
- Laden Sie eine Presentation und greifen Sie auf eine Folie zu.
- Fügen Sie ein IAutoShape hinzu und entfernen Sie dessen Standardabsatz.
- Erstellen Sie zwei Absätze und fügen Sie ihnen Textportionen hinzu.
- Erstellen Sie ein PortionFormat für das Endzeichen des zweiten Absatzes.
- Setzen Sie IBasePortionFormat.setFontHeight und IBasePortionFormat.setLatinFont.
- Weisen Sie das Format mit IParagraph.setEndParagraphPortionFormat zu und speichern Sie die Präsentation.
import com.aspose.slides.*;
Presentation presentation = new Presentation("Test.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 200, 250);
ITextFrame textFrame = shape.getTextFrame();
textFrame.getParagraphs().clear();
Paragraph firstParagraph = new Paragraph();
firstParagraph.getPortions().add(new Portion("Sample text"));
Paragraph secondParagraph = new Paragraph();
secondParagraph.getPortions().add(new Portion("Sample text 2"));
PortionFormat endParagraphFormat = new PortionFormat();
endParagraphFormat.setFontHeight(48);
endParagraphFormat.setLatinFont(new FontData("Times New Roman"));
secondParagraph.setEndParagraphPortionFormat(endParagraphFormat);
textFrame.getParagraphs().add(firstParagraph);
textFrame.getParagraphs().add(secondParagraph);
presentation.save("end_paragraph_format.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Absatzinhalt importieren und exportieren
HTML‑Text in Absätze importieren
Verwenden Sie ParagraphCollection.addFromHtml, um HTML‑Markup in Absätze und Portionen eines Textrahmens zu konvertieren.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Greifen Sie auf eine Folie zu und fügen Sie ein IAutoShape hinzu.
- Greifen Sie auf das ITextFrame der Form zu und entfernen Sie den Standardabsatz.
- Lesen Sie die Quell‑HTML‑Datei ein.
- Übergeben Sie die HTML‑Zeichenkette an ParagraphCollection.addFromHtml.
- Speichern Sie die modifizierte Präsentation.
Dieses Java‑Beispiel importiert HTML in ein Textfeld:
import com.aspose.slides.*;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
float shapeWidth = (float) presentation.getSlideSize().getSize().getWidth() - 20;
float shapeHeight = (float) presentation.getSlideSize().getSize().getHeight() - 20;
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, shapeWidth, shapeHeight);
shape.getFillFormat().setFillType(FillType.NoFill);
shape.getTextFrame().getParagraphs().clear();
try {
byte[] htmlBytes = Files.readAllBytes(Paths.get("file.html"));
String html = new String(htmlBytes, StandardCharsets.UTF_8);
shape.getTextFrame().getParagraphs().addFromHtml(html);
presentation.save("html_text.pptx", SaveFormat.Pptx);
} catch (IOException exception) {
System.out.println("The HTML file could not be read: " + exception.getMessage());
}
} finally {
presentation.dispose();
}
Absatztext nach HTML exportieren
Verwenden Sie ParagraphCollection.exportToHtml, um einen ausgewählten Absatzbereich als HTML zu exportieren.
- Erstellen Sie eine Instanz der Klasse Presentation und laden Sie die gewünschte Präsentation.
- Greifen Sie auf die Folie zu und finden Sie das IAutoShape, das den Text enthält.
- Greifen Sie auf das ITextFrame der Form zu.
- Rufen Sie ParagraphCollection.exportToHtml mit dem Start‑Absatzindex und der Anzahl der zu exportierenden Absätze auf.
- Schreiben Sie die zurückgegebene HTML‑Zeichenkette in eine Datei.
Dieses Java‑Beispiel exportiert alle Absätze aus der ersten Textform:
import com.aspose.slides.*;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
Presentation presentation = new Presentation("ExportingHTMLText.pptx");
try {
IShape shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0);
if (shape instanceof IAutoShape) {
IAutoShape textShape = (IAutoShape) shape;
ITextFrame textFrame = textShape.getTextFrame();
if (textFrame != null) {
IParagraphCollection paragraphs = textFrame.getParagraphs();
String html = paragraphs.exportToHtml(0, paragraphs.getCount(), null);
try {
Files.write(Paths.get("paragraphs.html"), html.getBytes(StandardCharsets.UTF_8));
} catch (IOException exception) {
System.out.println("The HTML file could not be written: " + exception.getMessage());
}
} else {
System.out.println("The first shape does not contain a text frame.");
}
} else {
System.out.println("The first shape is not a text shape.");
}
} finally {
presentation.dispose();
}
Einen Absatz als Bild rendern
IParagraph.getImage rendert einen einzelnen Absatz direkt und gibt ein IImage zurück. Speichern Sie das Ergebnis mit IImage.save in einer Datei oder einem Stream. Sie müssen nicht die gesamte Form rendern oder ein Bitmap manuell zuschneiden.
IParagraph.getImage kann null zurückgeben, wenn der Absatz nicht in der übergeordneten Sammlung gefunden wird, keine gültigen Render‑Grenzen hat oder nicht gerendert werden kann. Überprüfen Sie das Ergebnis, bevor Sie es speichern, und geben Sie das zurückgegebene Bild nach der Verwendung frei.
Ein Absatz mit Standardskala rendern
Angenommen, wir haben eine Präsentationsdatei namens sample.pptx mit einer Folie, auf der die erste Form ein Textfeld mit drei Absätzen ist.

Das nachfolgende Beispiel rendert den zweiten Absatz in einer regulären Textform mit Standardskala und speichert das zurückgegebene Bild im PNG‑Format. Der finally‑Block sorgt dafür, dass das Bild korrekt freigegeben wird.
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
IShape shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0);
if (shape instanceof IAutoShape) {
IAutoShape textShape = (IAutoShape) shape;
ITextFrame textFrame = textShape.getTextFrame();
if (textFrame != null && textFrame.getParagraphs().getCount() > 1) {
IParagraph paragraph = textFrame.getParagraphs().get_Item(1);
IImage paragraphImage = paragraph.getImage();
if (paragraphImage != null) {
try {
paragraphImage.save("paragraph.png", ImageFormat.Png);
} finally {
paragraphImage.dispose();
}
} else {
System.out.println("The paragraph could not be rendered.");
}
} else {
System.out.println("The expected paragraph was not found.");
}
} else {
System.out.println("The first shape is not a text shape.");
}
} finally {
presentation.dispose();
}
Das Ergebnis:

Einen Absatz in einer Tabellenzelle mit Skalierung rendern
Verwenden Sie die Überladung von IParagraph.getImage, die die Parameter float scaleX und float scaleY akzeptiert, um die horizontalen und vertikalen Skalierungsfaktoren festzulegen. Das folgende Beispiel erstellt eine Tabelle, rendert den Absatz in der ersten Zelle mit dem doppelten Standard‑Breiten‑ und Höhenfaktor und speichert das Ergebnis als PNG‑Bild.
import com.aspose.slides.*;
float scaleX = 2f;
float scaleY = 2f;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ITable table = slide.getShapes().addTable(50, 50, new double[] { 300 }, new double[] { 80 });
IParagraph paragraph = table.get_Item(0, 0).getTextFrame().getParagraphs().get_Item(0);
paragraph.setText("Text in a table cell");
IImage paragraphImage = paragraph.getImage(scaleX, scaleY);
if (paragraphImage != null) {
try {
paragraphImage.save("table_paragraph.png", ImageFormat.Png);
} finally {
paragraphImage.dispose();
}
} else {
System.out.println("The paragraph could not be rendered.");
}
} finally {
presentation.dispose();
}
Ein Skalierungsfaktor von 1 behält die Standard‑Pixelgröße der jeweiligen Achse bei. Zum Beispiel erzeugt 2 für beide Faktoren ein Bild, dessen Breite und Höhe etwa doppelt so groß sind wie die Standard‑Abmessungen, wodurch die Pixelzahl um das Vierfache steigt. Größere Faktoren erzeugen im Allgemeinen schärferen Text für Zoom‑ oder Hochauflösungsausgaben, erhöhen jedoch Speicherverbrauch und Dateigröße. Faktoren unter 1 erzeugen kleinere Bilder mit weniger Details. Verwenden Sie gleiche Faktoren, um das Seitenverhältnis des Absatzes beizubehalten; unterschiedliche horizontale und vertikale Faktoren strecken die Ausgabe unabhängig voneinander.
Das Rendering einer ganzen Form mit IShape.getImage bleibt nützlich, wenn das Ergebnis die Füllung, den Rand oder andere visuelle Kontextinformationen der Form enthalten muss. Für ein Bild, das nur den Absatz enthält, verwenden Sie IParagraph.getImage.
FAQ
Kann ich das Zeilenumbruchverhalten innerhalb eines Textrahmens vollständig deaktivieren?
Ja. Setzen Sie ITextFrameFormat.setWrapText, um das Umbrechen zu deaktivieren, sodass Zeilen nicht an den Rändern des Textrahmens umgebrochen werden.
Wie kann ich die genauen on‑slide‑Grenzen eines bestimmten Absatzes ermitteln?
Verwenden Sie IParagraph.getRect, um das Begrenzungs‑Rechteck des Absatzes zu erhalten. IPortion.getRect liefert die Grenzen einer einzelnen Portion.
Wo wird die Absatz‑Ausrichtung (links, rechts, zentriert oder Blocksatz) gesteuert?
IParagraphFormat.setAlignment ist eine Absatz‑Ebene‑Einstellung und gilt für den gesamten Absatz, unabhängig von einzelnen Portion‑Formatierungen.
Kann ich die Korrektursprache für einen Teil eines Absatzes festlegen?
Ja. Setzen Sie IBasePortionFormat.setLanguageId für einzelne Portionen, sodass ein Absatz Text in mehreren Sprachen enthalten kann.