PowerPoint-Textabsätze in Java verwalten

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 bietet die ITextFrame-Schnittstelle, mit der Sie Objekte hinzufügen können, die einen Absatz darstellen. Ein ITextFame‑Objekt kann einen oder mehrere Absätze haben (jeder Absatz wird durch einen Wagenrücklauf erzeugt).
  • Aspose.Slides bietet die IParagraph-Schnittstelle, mit der Sie Objekte hinzufügen können, die Portionen darstellen. Ein IParagraph‑Objekt kann eine oder mehrere Portionen haben (Sammlung von iPortions‑Objekten).
  • Aspose.Slides bietet die IPortion-Schnittstelle, 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 Portionen hinzufügen

Diese Schritte zeigen, wie Sie einen Textrahmen hinzufügen, der 3 Absätze enthält, und jeder Absatz enthält 3 Portionen:

  1. Erstellen Sie eine Instanz der Presentation-Klasse.
  2. Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
  3. Fügen Sie der Folie ein Rechteck‑IAutoShape hinzu.
  4. Holen Sie das mit dem IAutoShape verbundene ITextFrame.
  5. Erstellen Sie zwei IParagraph-Objekte und fügen Sie sie zur IParagraphs‑Sammlung des ITextFrame hinzu.
  6. Erstellen Sie für jedes neue IParagraph drei IPortion-Objekte (zwei Portionen‑Objekte für den Standardabsatz) und fügen Sie jedes IPortion‑Objekt zur IPortion‑Sammlung des jeweiligen IParagraph hinzu.
  7. Setzen Sie einen Text für jede Portion.
  8. Wenden Sie die gewünschten Formatierungsfunktionen auf jede Portion über die vom IPortion‑Objekt bereitgestellten Formatierungseigenschaften an.
  9. Speichern Sie die geänderte Präsentation.

Dieser Java‑Code implementiert die Schritte zum Hinzufügen von Absätzen mit Portionen:

// Instanziieren einer Presentation-Klasse, die eine PPTX-Datei repräsentiert
Presentation pres = new Presentation();
try {
    // Zugriff auf die erste Folie
    ISlide slide = pres.getSlides().get_Item(0);

    // Ein AutoShape vom Typ Rechteck hinzufügen
    IAutoShape ashp = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 150, 300, 150);

    // Zugriff auf das TextFrame des AutoShape
    ITextFrame tf = ashp.getTextFrame();

    // Absätze und Portionen mit unterschiedlichen Textformaten erstellen
    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ählungszeichen verwalten

Aufzählungslisten helfen Ihnen, Informationen schnell und effizient zu organisieren und zu präsentieren. Aufzählungs‑Absätze sind stets leichter zu lesen und zu verstehen.

  1. Erstellen Sie eine Instanz der Presentation-Klasse.
  2. Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
  3. Fügen Sie der ausgewählten Folie ein autoshape hinzu.
  4. Greifen Sie auf das TextFrame des Autoshapes zu.
  5. Entfernen Sie den Standardabsatz im TextFrame.
  6. Erstellen Sie die erste Absatz‑Instanz mit der Paragraph-Klasse.
  7. Setzen Sie den Aufzählungs‑Type des Absatzes auf Symbol und legen Sie das Aufzählungszeichen fest.
  8. Setzen Sie den Absatz‑Text.
  9. Setzen Sie den Absatz‑Indent für das Aufzählungszeichen.
  10. Legen Sie eine Farbe für das Aufzählungszeichen fest.
  11. Legen Sie eine Höhe für das Aufzählungszeichen fest.
  12. Fügen Sie den neuen Absatz zur TextFrame‑Absatzsammlung hinzu.
  13. Fügen Sie den zweiten Absatz hinzu und wiederholen Sie die Schritte 7 bis 13.
  14. Speichern Sie die Präsentation.

Dieser Java‑Code zeigt, wie Sie ein Aufzählungszeichen zu einem Absatz hinzufügen:

// Instanziiert 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 ein Autoshape hinzu und greift darauf zu
    IAutoShape aShp = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);

    // Greift auf den TextFrame des Autoshapes zu
    ITextFrame txtFrm = aShp.getTextFrame();

    // Entfernt den Standardabsatz
    txtFrm.getParagraphs().removeAt(0);

    // Erstellt einen Absatz
    Paragraph para = new Paragraph();

    // Setzt den Aufzählungsstil und das Symbol für den Absatz
    para.getParagraphFormat().getBullet().setType(BulletType.Symbol);
    para.getParagraphFormat().getBullet().setChar((char)8226);

    // Setzt den Text des Absatzes
    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(Color.BLACK);
    para.getParagraphFormat().getBullet().setBulletHardColor(NullableBool.True); // setzt IsBulletHardColor auf true, um eine eigene Aufzählungszeichenfarbe zu verwenden

    // Setzt die Höhe des Aufzählungszeichens
    para.getParagraphFormat().getBullet().setHeight(100);

    // Fügt den Absatz zum TextFrame hinzu
    txtFrm.getParagraphs().add(para);

    // Erstellt den zweiten Absatz
    Paragraph 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 den Absatztext 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(Color.BLACK);
    para2.getParagraphFormat().getBullet().setBulletHardColor(NullableBool.True); // setzt IsBulletHardColor auf true, um eine eigene Aufzählungszeichenfarbe zu verwenden

    // Setzt die Höhe des Aufzählungszeichens
    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();
}

Bild‑Aufzählungszeichen verwalten

Aufzählungslisten helfen Ihnen, Informationen schnell und effizient zu organisieren und zu präsentieren. Bild‑Absätze sind leicht zu lesen und zu verstehen.

  1. Erstellen Sie eine Instanz der Presentation-Klasse.
  2. Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
  3. Fügen Sie der Folie ein autoshape hinzu.
  4. Greifen Sie auf das TextFrame des Autoshapes zu.
  5. Entfernen Sie den Standardabsatz im TextFrame.
  6. Erstellen Sie die erste Absatz‑Instanz mit der Paragraph-Klasse.
  7. Laden Sie das Bild in IPPImage.
  8. Setzen Sie den Aufzählungs‑Typ auf Picture und legen Sie das Bild fest.
  9. Setzen Sie den Absatz‑Text.
  10. Setzen Sie den Absatz‑Indent für das Aufzählungszeichen.
  11. Legen Sie eine Farbe für das Aufzählungszeichen fest.
  12. Legen Sie eine Höhe für das Aufzählungszeichen fest.
  13. Fügen Sie den neuen Absatz zur TextFrame‑Absatzsammlung hinzu.
  14. Fügen Sie den zweiten Absatz hinzu und wiederholen Sie den Prozess anhand der vorherigen Schritte.
  15. Speichern Sie die geänderte Präsentation.

Dieser Java‑Code zeigt, wie Sie Bild‑Aufzählungszeichen hinzufügen und verwalten:

// Instanziiert 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);

    // Instanziiert das Bild für Aufzählungszeichen
    IPPImage picture;
    IImage image = Images.fromFile("bullets.png");
    try {
        picture = presentation.getImages().addImage(image);
    } finally {
        if (image != null) image.dispose();
    }
    // Fügt ein Autoshape hinzu und greift darauf zu
    IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);

    // Greift auf den Textframe des Autoshapes 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");

    // 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 (IOException e) {
} finally {
    if (presentation != null) presentation.dispose();
}

Mehrstufige Aufzählungszeichen verwalten

Aufzählungslisten helfen Ihnen, Informationen schnell und effizient zu organisieren und zu präsentieren. Mehrstufige Aufzählungszeichen sind leicht zu lesen und zu verstehen.

  1. Erstellen Sie eine Instanz der Presentation-Klasse.
  2. Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
  3. Fügen Sie in der neuen Folie ein autoshape hinzu.
  4. Greifen Sie auf das TextFrame des Autoshapes zu.
  5. Entfernen Sie den Standardabsatz im TextFrame.
  6. Erstellen Sie die erste Absatz‑Instanz über die Paragraph-Klasse und setzen Sie die Tiefe auf 0.
  7. Erstellen Sie die zweite Absatz‑Instanz über die Paragraph‑Klasse und setzen Sie die Tiefe auf 1.
  8. Erstellen Sie die dritte Absatz‑Instanz über die Paragraph‑Klasse und setzen Sie die Tiefe auf 2.
  9. Erstellen Sie die vierte Absatz‑Instanz über die Paragraph‑Klasse und setzen Sie die Tiefe auf 3.
  10. Fügen Sie die neuen Absätze zur TextFrame‑Absatzsammlung hinzu.
  11. Speichern Sie die geänderte Präsentation.

Dieser Java‑Code zeigt, wie Sie mehrstufige Aufzählungszeichen hinzufügen und verwalten:

    // 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 ein Autoshape hinzu und greift darauf zu
        IAutoShape aShp = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);

        // Greift auf den Text-Frame des 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);
        // Setzt die Aufzählungsebene
        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);
        // Setzt die Aufzählungsebene
        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);
        // Setzt die Aufzählungsebene
        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);
        // Setzt die Aufzählungsebene
        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);

        // Speichert die Präsentation als PPTX-Datei
        pres.save("MultilevelBullet.pptx", SaveFormat.Pptx);
    } finally {
        if (pres != null) pres.dispose();
    }

Absatz mit benutzerdefinierter nummerierter 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.

  1. Erstellen Sie eine Instanz der Presentation-Klasse.
  2. Greifen Sie auf die Folie zu, die den Absatz enthält.
  3. Fügen Sie der Folie ein autoshape hinzu.
  4. Greifen Sie auf das TextFrame des Autoshapes zu.
  5. Entfernen Sie den Standardabsatz im TextFrame.
  6. Erstellen Sie die erste Absatz‑Instanz über die Paragraph-Klasse und setzen Sie NumberedBulletStartWith auf 2.
  7. Erstellen Sie die zweite Absatz‑Instanz über die Paragraph‑Klasse und setzen Sie NumberedBulletStartWith auf 3.
  8. Erstellen Sie die dritte Absatz‑Instanz über die Paragraph‑Klasse und setzen Sie NumberedBulletStartWith auf 7.
  9. Fügen Sie die neuen Absätze zur TextFrame‑Absatzsammlung hinzu.
  10. Speichern Sie die geänderte Präsentation.

Dieser Java‑Code zeigt, wie Sie Absätze mit benutzerdefinierter Nummerierung oder Formatierung hinzufügen und verwalten:

Presentation presentation = new Presentation();
try {
    IAutoShape shape = presentation.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);

    // Greift auf den Textframe des erstellten Autoshapes zu
    ITextFrame textFrame = shape.getTextFrame();

    // Entfernt den standardmäßig vorhandenen Absatz
    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();
}

Absatz‑Einzug setzen

  1. Erstellen Sie eine Instanz von Presentation‑Klasse.
  2. Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
  3. Fügen Sie der Folie ein Rechteck‑autoshape hinzu.
  4. Fügen Sie dem Rechteck‑autoshape ein TextFrame mit drei Absätzen hinzu.
  5. Blenden Sie die Rechteck‑Linien aus.
  6. Setzen Sie den Einzug für jeden Paragraph über dessen BulletOffset‑Eigenschaft.
  7. Schreiben Sie die geänderte Präsentation als PPT‑Datei.

Dieser Java‑Code zeigt, wie Sie einen Absatz‑Einzug setzen:

// Instanziiere Presentation-Klasse
Presentation pres = new Presentation();
try {
    // Erste Folie abrufen
    ISlide sld = pres.getSlides().get_Item(0);
    
    // Rechteck-Shape hinzufügen
    IAutoShape rect = sld.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 500, 150);
    
    // TextFrame zum Rechteck hinzufügen
    ITextFrame tf = rect.addTextFrame("This is first line \rThis is second line \rThis is third line");
    
    // Text an die Form anpassen
    tf.getTextFrameFormat().setAutofitType(TextAutofitType.Shape);
    
    // Linien des Rechtecks ausblenden
    rect.getLineFormat().getFillFormat().setFillType(FillType.Solid);
    
    // Ersten Paragraph im TextFrame abrufen und dessen Einzug setzen
    IParagraph para1 = tf.getParagraphs().get_Item(0);
    // Paragraph-Aufzählungsstil und Symbol setzen
    para1.getParagraphFormat().getBullet().setType(BulletType.Symbol);
    para1.getParagraphFormat().getBullet().setChar((char)8226);
    para1.getParagraphFormat().setAlignment(TextAlignment.Left);
    
    para1.getParagraphFormat().setDepth((short)2);
    para1.getParagraphFormat().setIndent(30);
    
    // Zweiten Paragraph im TextFrame abrufen und dessen Einzug setzen
    IParagraph para2 = tf.getParagraphs().get_Item(1);
    para2.getParagraphFormat().getBullet().setType(BulletType.Symbol);
    para2.getParagraphFormat().getBullet().setChar((char)8226);
    para2.getParagraphFormat().setAlignment(TextAlignment.Left);
    para2.getParagraphFormat().setDepth((short)2);
    para2.getParagraphFormat().setIndent(40);
    
    // Dritten Paragraph im TextFrame abrufen und dessen Einzug setzen
    IParagraph para3 = tf.getParagraphs().get_Item(2);
    para3.getParagraphFormat().getBullet().setType(BulletType.Symbol);
    para3.getParagraphFormat().getBullet().setChar((char)8226);
    para3.getParagraphFormat().setAlignment(TextAlignment.Left);
    para3.getParagraphFormat().setDepth((short)2);
    para3.getParagraphFormat().setIndent(50);
    
    //    Präsentation auf Festplatte schreiben
    pres.save("InOutDent_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Hängenden Einzug für einen Absatz setzen

Dieser Java‑Code zeigt, wie Sie den hängenden Einzug für einen Absatz setzen:

Presentation pres = new Presentation();
try {
    IAutoShape autoShape = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 50, 250, 550, 150);

    Paragraph para1 = new Paragraph();
    para1.setText("Example");

    Paragraph para2 = new Paragraph();
    para2.setText("Set Hanging Indent for Paragraph");

    Paragraph para3 = new Paragraph();
    para3.setText("This code shows you how to set the hanging indent for a paragraph: ");

    para2.getParagraphFormat().setMarginLeft(10f);
    para3.getParagraphFormat().setMarginLeft(20f);

    autoShape.getTextFrame().getParagraphs().add(para1);
    autoShape.getTextFrame().getParagraphs().add(para2);
    autoShape.getTextFrame().getParagraphs().add(para3);

    pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

End‑Absatz‑Lauf‑Eigenschaften verwalten

  1. Erstellen Sie eine Instanz von Presentation‑Klasse.
  2. Holen Sie die Referenz der Folie, die den Absatz enthält, über deren Position.
  3. Fügen Sie der Folie ein Rechteck‑autoshape hinzu.
  4. Fügen Sie dem Rechteck ein TextFrame mit zwei Absätzen hinzu.
  5. Setzen Sie FontHeight und Schriftart für die Absätze.
  6. Setzen Sie die End‑Eigenschaften für die Absätze.
  7. Schreiben Sie die geänderte Präsentation als PPTX‑Datei.

Dieser Java‑Code zeigt, wie Sie die End‑Eigenschaften für Absätze in PowerPoint setzen:

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 für das Importieren von HTML‑Text in Absätze.

  1. Erstellen Sie eine Instanz der Presentation‑Klasse.
  2. Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
  3. Fügen Sie der Folie ein autoshape hinzu.
  4. Fügen Sie dem autoshape ein ITextFrame hinzu und greifen Sie darauf zu.
  5. Entfernen Sie den Standardabsatz im ITextFrame.
  6. Lesen Sie die Quell‑HTML‑Datei mit einem TextReader.
  7. Erstellen Sie die erste Absatz‑Instanz über die Paragraph-Klasse.
  8. Fügen Sie den HTML‑Dateiinhalt aus dem gelesenen TextReader zur ParagraphCollection des TextFrames hinzu.
  9. Speichern Sie die geänderte Präsentation.

Dieser Java‑Code implementiert die Schritte zum Importieren von HTML‑Texten in Absätze:

// 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);

    // AutoShape hinzufügen, um den HTML-Inhalt aufzunehmen
    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 im TextFrame hinzufü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 für das Exportieren von Texten (enthalten in Absätzen) nach HTML.

  1. Erstellen Sie eine Instanz der Presentation-Klasse und laden Sie die gewünschte Präsentation.
  2. Greifen Sie über den Index auf die Referenz der entsprechenden Folie zu.
  3. Greifen Sie auf die Form zu, die den zu exportierenden Text enthält.
  4. Greifen Sie auf das TextFrame der Form zu.
  5. Erstellen Sie eine Instanz von StreamWriter und fügen Sie die neue HTML‑Datei hinzu.
  6. Geben Sie einen Start‑Index an StreamWriter an und exportieren Sie Ihre gewünschten Absätze.

Dieser Java‑Code zeigt, wie Sie PowerPoint‑Absatz‑Texte nach HTML exportieren:

// Präsentationsdatei laden
Presentation pres = new Presentation("ExportingHTMLText.pptx");
try {
    // Zugriff auf die standardmäßige erste Folie der Präsentation
    ISlide slide = pres.getSlides().get_Item(0);

    // Gewünschter Index
    int index = 0;

    // Zugriff auf das hinzugefügte Shape
    IAutoShape ashape = (IAutoShape) slide.getShapes().get_Item(index);

    // Ausgabedatei HTML erstellen
    OutputStream os = new FileOutputStream("output.html");
    Writer writer = new OutputStreamWriter(os, "UTF-8");

    //Extrahiere ersten Absatz als HTML
    // Schreiben von Absatzdaten nach HTML durch Angabe des Startindexes und der Anzahl zu kopierender Absätze
    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 wird. Beide Beispiele umfassen das Abrufen des Bildes einer Form, die den Absatz enthält, über die getImage‑Methoden der IShape-Schnittstelle, das Berechnen der Grenzen des Absatzes innerhalb der Form und das Exportieren als Bitmap‑Bild. Diese Vorgehensweisen ermöglichen das Extrahieren spezifischer Textteile aus PowerPoint‑Präsentationen und das Speichern als separate Bilder, 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.

Das Textfeld mit drei Absätzen

Beispiel 1

In diesem Beispiel erhalten wir den zweiten Absatz als Bild. Dazu extrahieren wir das Bild der Form von der ersten Folie der Präsentation und berechnen anschließend die Grenzen des zweiten Absatzes im Textfeld 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();

    // Erstelle ein Form-Bitmap aus dem Speicher.
    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);
    Rectangle2D paragraphRectangle = secondParagraph.getRect();

    // Berechne die Koordinaten und Größe für das Ausgabebild (Mindestgröße - 1x1 Pixel).
    int imageX = (int) Math.floor(paragraphRectangle.getX());
    int imageY = (int) Math.floor(paragraphRectangle.getY());
    int imageWidth = Math.max(1, (int) Math.ceil(paragraphRectangle.getWidth()));
    int imageHeight = Math.max(1, (int) Math.ceil(paragraphRectangle.getHeight()));

    // Schneide das Form-Bitmap zu, 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:

Das Absatz‑Bild

Beispiel 2

In diesem Beispiel erweitern wir den vorherigen Ansatz, indem wir Skalierungsfaktoren zum Absatz‑Bild hinzufügen. Die Form wird aus der Präsentation extrahiert und mit einem Skalierungsfaktor von 2 als Bild gespeichert. Dadurch wird beim Export des Absatzes eine höhere Auflösung erzielt. Die Absatz‑Grenzen werden anschließend unter Berücksichtigung der Skalierung berechnet. Skalierung kann besonders nützlich sein, wenn ein detailreicheres Bild benötigt wird, beispielsweise für hochwertige Druckmaterialien.

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);

    // Form im Speicher als Bitmap mit Skalierung speichern.
    IImage shapeImage = firstShape.getImage(ShapeThumbnailBounds.Shape, imageScaleX, imageScaleY);
    ByteArrayOutputStream shapeImageStream = new ByteArrayOutputStream();
    shapeImage.save(shapeImageStream, ImageFormat.Png);
    shapeImage.dispose();

    // Form-Bitmap 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);
    Rectangle2D paragraphRectangle = secondParagraph.getRect();
    paragraphRectangle.setRect(
            paragraphRectangle.getX() * imageScaleX,
            paragraphRectangle.getY() * imageScaleY,
            paragraphRectangle.getWidth() * imageScaleX,
            paragraphRectangle.getHeight() * imageScaleY
    );

    // Koordinaten und Größe für das Ausgabebild berechnen (Mindestgröße - 1x1 Pixel).
    int imageX = (int) Math.floor(paragraphRectangle.getX());
    int imageY = (int) Math.floor(paragraphRectangle.getY());
    int imageWidth = Math.max(1, (int) Math.ceil(paragraphRectangle.getWidth()));
    int imageHeight = Math.max(1, (int) Math.ceil(paragraphRectangle.getHeight()));

    // 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();
}

FAQ

Kann ich das Zeilenumbruchverhalten innerhalb eines Textrahmens vollständig deaktivieren?

Ja. Verwenden Sie die Umbruch‑Einstellung des Textrahmens (setWrapText), um das Umbrechen auszuschalten, sodass Zeilen nicht an den Rändern des Rahmens umbrochen werden.

Wie kann ich die genauen Folien‑Grenzen eines bestimmten Absatzes ermitteln?

Sie können das Begrenzungs‑Rechteck des Absatzes (und sogar eines einzelnen Portion) abrufen, um die exakte 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 Rechtschreib‑Sprache nur für einen Teil eines Absatzes (z. B. ein Wort) festlegen?

Ja. Die Sprache wird auf Portion‑Ebene festgelegt (PortionFormat.setLanguageId), sodass mehrere Sprachen innerhalb eines einzelnen Absatzes koexistieren können.