Text aus Präsentation extrahieren
Text aus Folie extrahieren
Aspose.Slides für Android über Java bietet die SlideUtil Klasse. Diese Klasse stellt eine Reihe von überladenen statischen Methoden zum Extrahieren des gesamten Texts aus einer Präsentation oder Folie zur Verfügung. Um den Text aus einer Folie in einer PPTX-Präsentation zu extrahieren, verwenden Sie die überladene statische Methode getAllTextBoxes der SlideUtil Klasse. Diese Methode akzeptiert das Slide-Objekt als Parameter. Bei der Ausführung scannt die Slide-Methode den gesamten Text von der als Parameter übergebenen Folie und gibt ein Array von TextFrame Objekten zurück. Dies bedeutet, dass alle mit dem Text verbundenen Textformatierungen verfügbar sind. Der folgende Codeextrakt extrahiert den gesamten Text von der ersten Folie der Präsentation:
//Instatiere die Präsentationsklasse, die eine PPTX-Datei darstellt
Presentation pres = new Presentation("demo.pptx");
try {
for (ISlide slide : pres.getSlides())
{
//Erhalte ein Array von ITextFrame-Objekten aus allen Folien in der PPTX
ITextFrame[] textFramesPPTX = SlideUtil.getAllTextBoxes(slide);
//Durchlaufe das Array von TextFrames
for (int i = 0; i < textFramesPPTX.length; i++) {
//Durchlaufe die Absätze im aktuellen ITextFrame
for (IParagraph para : textFramesPPTX[i].getParagraphs()) {
//Durchlaufe die Teile im aktuellen IParagraph
for (IPortion port : para.getPortions()) {
//Zeige den Text im aktuellen Teil an
System.out.println(port.getText());
//Zeige die Schriftgröße des Textes an
System.out.println(port.getPortionFormat().getFontHeight());
//Zeige den Schriftartnamen des Textes an
if (port.getPortionFormat().getLatinFont() != null)
System.out.println(port.getPortionFormat().getLatinFont().getFontName());
}
}
}
}
} finally {
pres.dispose();
}
Text aus Präsentation extrahieren
Um den Text aus der gesamten Präsentation zu scannen, verwenden Sie die statische Methode getAllTextFrames der SlideUtil-Klasse. Es nimmt zwei Parameter:
- Erstens ein Presentation Objekt, das die Präsentation darstellt, aus der der Text extrahiert wird.
- Zweitens ein boolescher Wert, der bestimmt, ob die Master-Folie bei der Texterfassung aus der Präsentation einbezogen werden soll. Die Methode gibt ein Array von TextFrame Objekten zurück, das vollständige Informationen zur Textformatierung enthält. Der folgende Code scannt den Text und die Formatierungsinformationen aus einer Präsentation, einschließlich der Master-Folien.
//Instatiere die Präsentationsklasse, die eine PPTX-Datei darstellt
Presentation pres = new Presentation("demo.pptx");
try {
//Erhalte ein Array von ITextFrame-Objekten aus allen Folien in der PPTX
ITextFrame[] textFramesPPTX = SlideUtil.getAllTextFrames(pres, true);
//Durchlaufe das Array von TextFrames
for (int i = 0; i < textFramesPPTX.length; i++)
{
//Durchlaufe die Absätze im aktuellen ITextFrame
for (IParagraph para : textFramesPPTX[i].getParagraphs())
{
//Durchlaufe die Teile im aktuellen IParagraph
for (IPortion port : para.getPortions())
{
//Zeige den Text im aktuellen Teil an
System.out.println(port.getText());
//Zeige die Schriftgröße des Textes an
System.out.println(port.getPortionFormat().getFontHeight());
//Zeige den Schriftartnamen des Textes an
if (port.getPortionFormat().getLatinFont() != null)
System.out.println(port.getPortionFormat().getLatinFont().getFontName());
}
}
}
} finally {
pres.dispose();
}
Kategorisierte und schnelle Textextraktion
Die neue statische Methode getPresentationText wurde zur Präsentationsklasse hinzugefügt. Es gibt drei Überladungen für diese Methode:
public IPresentationText getPresentationText(String file, int mode);
public IPresentationText getPresentationText(InputStream stream, int mode);
public IPresentationText getPresentationText(InputStream stream, int mode, ILoadOptions options);
Das TextExtractionArrangingMode Enum-Argument gibt den Modus an, um das Ausgabeergebnis des Textes zu organisieren und kann auf die folgenden Werte gesetzt werden:
- Unarranged - Der rohe Text ohne Rücksicht auf die Position auf der Folie
- Arranged - Der Text ist in der gleichen Reihenfolge angeordnet wie auf der Folie
Unarranged Modus kann verwendet werden, wenn die Geschwindigkeit entscheidend ist, er ist schneller als der Arranged Modus.
IPresentationText repräsentiert den rohen Text, der aus der Präsentation extrahiert wurde. Es enthält eine getSlidesText Methode, die ein Array von ISlideText Objekten zurückgibt. Jedes Objekt repräsentiert den Text auf der entsprechenden Folie. ISlideText Objekt hat die folgenden Methoden:
- ISlideText.getText - Der Text auf den Formen der Folie
- ISlideText.getMasterText - Der Text auf den Formen der Masterfolie für diese Folie
- ISlideText.getLayoutText - Der Text auf den Formen der Layoutfolie für diese Folie
- ISlideText.getNotesText - Der Text auf den Formen der Notizfolie für diese Folie
Es gibt auch eine SlideText Klasse, die das ISlideText Interface implementiert.
Die neue API kann wie folgt verwendet werden:
IPresentationText text1 = PresentationFactory.getInstance().getPresentationText("presentation.pptx", TextExtractionArrangingMode.Unarranged);
System.out.println(text1.getSlidesText()[0].getText());
System.out.println(text1.getSlidesText()[0].getLayoutText());
System.out.println(text1.getSlidesText()[0].getMasterText());
System.out.println(text1.getSlidesText()[0].getNotesText());