Apache POI PPT - Vertikales Alignment von Text im XSLFAutoShape

mace

Mitglied
Hallo zusammen,

mit ersten Schritten mit Apache POI möchte ich Shapes in einer Powerpoint-Datei erstellen. Das funktioniert auch bereits. Jedoch habe ich das Problem, dass ich den Text in den Shapes vertikal nicht positioniert bekomme.

Per Suche im Internet finde ich quasi nix zum VerticalAlignment innerhalb von PPT-Shapes, da es meist nur um Excel geht.

Java:
            XSLFAutoShape rect = s1.createAutoShape();
            rect.setShapeType(ShapeType.RECT);
            rect.setAnchor(new Rectangle2D.Double(startH, calc.getShapeY(0, timeline.getLineHeight(), timeline.getLineHeight(), timeline.getLineSpace(), timeline.getStartY()), shapeWidth, timeline.getLineHeight()));
            rect.setFillColor(parseStringtoColor(timeline.getTlMonthColor()));
            rect.setLineWidth(0.5);
            rect.setLineColor(java.awt.Color.BLACK);
            rect.setHorizontalCentered(true);

            rect.setText(monthNames[currentDate.plusMonths(i - 1).getMonthOfYear() - 1]);
            XSLFTextRun tr = rect.getTextParagraphs().get(0).getTextRuns().get(0);
            tr.setFontSize(timeline.getTlFontSize());
            tr.setFontFamily(timeline.getTlFont());
            
            rect.setVerticalAlignment(org.apache.poi.sl.usermodel.VerticalAlignment.MIDDLE);

Die letzte Zeile scheint keinerlei Effekt zu haben.
Kann mich jemand in die richtige Richtung stoßen?

Danke!!
mace
 
Zuletzt bearbeitet von einem Moderator:

mihe7

Top Contributor
Funktioniert einwandfrei:
Java:
import org.apache.poi.xslf.usermodel.*;
import org.apache.poi.sl.usermodel.*;
import java.io.FileOutputStream;
import java.awt.Color; 
import java.awt.geom.*;

public class Test {
    public static void main(String[] args) throws Exception {
        XMLSlideShow ppt = new XMLSlideShow();
        XSLFSlide slide = ppt.createSlide();
        XSLFAutoShape shape = slide.createAutoShape();
        shape.setShapeType(ShapeType.RECT);
        shape.setAnchor(new Rectangle2D.Double(10, 10, 200, 200));
        shape.setFillColor(Color.YELLOW);
        shape.setVerticalAlignment(VerticalAlignment.MIDDLE);
        shape.setHorizontalCentered(true);
        XSLFTextParagraph p = shape.addNewTextParagraph();
        XSLFTextRun r1 = p.addNewTextRun();
        r1.setText("The");
        r1.setFontColor(Color.blue);
        r1.setFontSize(24.);

        try(FileOutputStream fos = new FileOutputStream("out.ppt")) {
            ppt.write(fos);
        }
    }
}
 

mace

Mitglied
Vielen Dank für deine Antwort.
Ich habe deinen Code fast unverändert ausprobiert: Funktionierte.
Dann habe ich deinen Code für meinen übernommen: Funktionierte nicht.
Die Ursache habe ich jetzt gefunden, auch wenn ich sie immer noch nicht verstehe. Das Shape verfügte scheinbar bereits über einen Paragraphen, noch bevor ich Text zugewiesen habe. Dieser hat eine Zeile eingenommen und damit meinen Text nach unten geschoben. Das rect.clearText() hat das Problem behoben. Wo jetzt der Unterschied zwischen deinem und meinem Code liegt, hab ich noch nicht gesehen... Trotzdem danke.

Code:
            XSLFAutoShape rect = s1.createAutoShape();
            rect.setShapeType(ShapeType.RECT);
            rect.setAnchor(new Rectangle2D.Double(startH, calc.getShapeY(0, timeline.getLineHeight(), timeline.getLineHeight(), timeline.getLineSpace(), timeline.getStartY()), shapeWidth, timeline.getLineHeight()));
            rect.setFillColor(parseStringtoColor(timeline.getTlMonthColor()));
            rect.setLineWidth(0.5);
            rect.setLineColor(java.awt.Color.BLACK);
            rect.setVerticalAlignment(VerticalAlignment.MIDDLE);
            rect.setHorizontalCentered(true);
            rect.clearText();

            
            XSLFTextParagraph p = rect.addNewTextParagraph();
            XSLFTextRun r1 = p.addNewTextRun();
            r1.setText(monthNames[currentDate.plusMonths(i - 1).getMonthOfYear() - 1]);
            r1.setFontSize(timeline.getTlFontSize());
            r1.setFontFamily(timeline.getTlFont());
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M FTP-Verbindung mit Apache Commons Net Java Basics - Anfänger-Themen 5
P apache.poi Java Basics - Anfänger-Themen 9
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
P Apache Derby wird in Eclipse trotz Anbindung nicht gefunden Java Basics - Anfänger-Themen 6
P NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap trotz vorhandener Klasse? Java Basics - Anfänger-Themen 10
P Maven-Dependencies (package org.apache.http.nio does not exist) Java Basics - Anfänger-Themen 6
M Java Einstellung von Apache POI für MS Word Erstellung mit Eclipse Java Basics - Anfänger-Themen 6
J Apache Poi - createCell() Methode akzeptiert keinen Index aus for-schleife als Parameter Java Basics - Anfänger-Themen 4
Bluedaishi Apache Tomcat 9 Java Basics - Anfänger-Themen 7
O Apache POI Zeilenfarbe Java Basics - Anfänger-Themen 2
O Apache: Log-Settings werden nicht gezogen Java Basics - Anfänger-Themen 0
D Apache POI Tabelle wechseln Java Basics - Anfänger-Themen 2
E Apache Derby mit Eclipse Java Basics - Anfänger-Themen 2
K Apache POI Excel Letzte Reihe einer bestimmten Spalte Java Basics - Anfänger-Themen 1
O Problem mit optionalen Argumenten - Apache CLI - Java Basics - Anfänger-Themen 2
S Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI) Java Basics - Anfänger-Themen 18
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
O POI Apache sheet scanner Java Basics - Anfänger-Themen 1
Joew0815 Error org.apache.xmlrpc.client.XmlRpcClientConfigImpl.setUserAgent Java Basics - Anfänger-Themen 2
S Wie bestehende Excel-Einträge mit neuen Vergleichen (mit Apache POI)? Java Basics - Anfänger-Themen 0
D Apache POI - XWPF - MS Word Java Basics - Anfänger-Themen 0
T Apache POI (Excel) - Probleme mit Zahlenformat Java Basics - Anfänger-Themen 2
U Apache Ant Java Basics - Anfänger-Themen 4
B Apache: jar-Datei Download als jar und nicht als zip Java Basics - Anfänger-Themen 4
D Import von import org.apache.commons.math3...... Java Basics - Anfänger-Themen 2
E apache-commons-net einbinden. Java Basics - Anfänger-Themen 18
Gossi Datentypen Probleme mit Apache Poi Java Basics - Anfänger-Themen 2
B org.apache.commons.... Folder in Projekt einfügen Java Basics - Anfänger-Themen 6
S org.apache.commons.net.* Java Basics - Anfänger-Themen 3
J Classpath Apache POI Java Basics - Anfänger-Themen 14
N Apache POI pptSlide erzeugen Java Basics - Anfänger-Themen 2
K apache poi - Spalten zählen Java Basics - Anfänger-Themen 4
G Apache POI Filter erstellen Java Basics - Anfänger-Themen 14
G Mit Apache POI Kopfzeilen definieren Java Basics - Anfänger-Themen 11
Strahlungsleck Datentypen Apache Poi & Excel Datumsformat Java Basics - Anfänger-Themen 4
D Apache Commons Telnet Java Basics - Anfänger-Themen 2
A Apache POI - HSSF vs. XSSF Problem Java Basics - Anfänger-Themen 4
K Apache Deby installieren? Java Basics - Anfänger-Themen 3
P "import" org.apache.xxxxxxx Java Basics - Anfänger-Themen 18
J Problem bei Apache ANT Java Basics - Anfänger-Themen 2
G http-Port beim Apache Tomcat ändern Java Basics - Anfänger-Themen 1
G org.apache.commons.httpclient Java Basics - Anfänger-Themen 3
G Apache Tomcat startet nicht da JAVA_HOME nicht definiert Java Basics - Anfänger-Themen 3
G Context Listener des Apache Tomcat verwenden Java Basics - Anfänger-Themen 4
alexpetri installation einer WAR datei auf apache Java Basics - Anfänger-Themen 3
G http-Request auf Apache Tomcat Java Basics - Anfänger-Themen 13
Y Problem mit org.apache.commons.httpclient Java Basics - Anfänger-Themen 3
E Apache jakarta fehler Java Basics - Anfänger-Themen 5
K MySQL-Connector auf Apache Java Basics - Anfänger-Themen 4
S HttpClient von apache benutzen? Java Basics - Anfänger-Themen 2
G StringUtils von jakarta.apache.org/commons/lang/api einbauen Java Basics - Anfänger-Themen 3
D Apache.Xerces unter Eclispe? import/plugin/package? Java Basics - Anfänger-Themen 2
T Vertikales Histogramm mit Arrays Java Basics - Anfänger-Themen 3
C Methoden Vertikales spiegeln eines Bildes (zweidimensionale Arrays) Java Basics - Anfänger-Themen 5
C JList Alignment Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben