Erweiterte Textextraktion aus Präsentationen in Java
Text aus Folien extrahieren
Aspose.Slides for Java stellt die SlideUtil‑Klasse zur Verfügung. Diese Klasse bietet mehrere überladene statische Methoden zum Extrahieren des gesamten Textes aus einer Präsentation oder Folie. 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 der übergebenen Folie und gibt ein Array von TextFrame‑Objekten zurück. Das bedeutet, dass sämtliche Textformatierung verfügbar ist. Der folgende Codeausschnitt extrahiert den gesamten Text der ersten Folie der Präsentation:
//Instanziieren Sie die Presentation-Klasse, die eine PPTX-Datei darstellt
Presentation pres = new Presentation("demo.pptx");
try {
for (ISlide slide : pres.getSlides())
{
//Ein Array von ITextFrame-Objekten aus allen Folien in der PPTX erhalten
ITextFrame[] textFramesPPTX = SlideUtil.getAllTextBoxes(slide);
//Durchlaufen Sie das Array von TextFrames
for (int i = 0; i < textFramesPPTX.length; i++) {
//Durchlaufen Sie die Absätze im aktuellen ITextFrame
for (IParagraph para : textFramesPPTX[i].getParagraphs()) {
//Durchlaufen Sie die Portionen im aktuellen IParagraph
for (IPortion port : para.getPortions()) {
//Text im aktuellen Portion anzeigen
System.out.println(port.getText());
//Schriftgröße des Textes anzeigen
System.out.println(port.getPortionFormat().getFontHeight());
//Schriftname des Textes anzeigen
if (port.getPortionFormat().getLatinFont() != null)
System.out.println(port.getPortionFormat().getLatinFont().getFontName());
}
}
}
}
} finally {
pres.dispose();
}
Text aus Präsentationen extrahieren
Um den Text der gesamten Präsentation zu scannen, verwenden Sie die statische Methode getAllTextFrames der SlideUtil‑Klasse. Sie akzeptiert zwei Parameter:
- Zuerst ein Presentation‑Objekt, das die Präsentation darstellt, aus der der Text extrahiert werden soll.
- Zweitens ein boolescher Wert, der festlegt, ob die Master‑Folie einbezogen werden soll, wenn der Text aus der Präsentation gescannt wird.
Die Methode gibt ein Array von TextFrame‑Objekten zurück, einschließlich aller Textformatierungsinformationen. Der untenstehende Code scannt den Text und die Formatierungsinformationen einer Präsentation, einschließlich der Master‑Folien.
//Instanziieren Sie die Presentation-Klasse, die eine PPTX-Datei darstellt
Presentation pres = new Presentation("demo.pptx");
try {
//Ein Array von ITextFrame-Objekten aus allen Folien in der PPTX abrufen
ITextFrame[] textFramesPPTX = SlideUtil.getAllTextFrames(pres, true);
//Durchlaufen Sie das Array von TextFrames
for (int i = 0; i < textFramesPPTX.length; i++)
{
//Durchlaufen Sie die Absätze im aktuellen ITextFrame
for (IParagraph para : textFramesPPTX[i].getParagraphs())
{
//Durchlaufen Sie die Portionen im aktuellen IParagraph
for (IPortion port : para.getPortions())
{
//Text im aktuellen Portion anzeigen
System.out.println(port.getText());
//Schriftgröße des Textes anzeigen
System.out.println(port.getPortionFormat().getFontHeight());
//Schriftart des Textes anzeigen
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 Presentation‑Klasse hinzugefügt. Für diese Methode gibt es drei Überladungen:
public IPresentationText getPresentationText(String file, int mode);
public IPresentationText getPresentationText(InputStream stream, int mode);
public IPresentationText getPresentationText(InputStream stream, int mode, ILoadOptions options);
The TextExtractionArrangingMode enum argument indicates the mode to organize the output of text result and can be set to the following values:
- Unarranged - The raw text with no respect to position on the slide
- Arranged - The text is positioned in the same order as on the slide
Unarranged mode can be used when speed is critical, it’s faster than Arranged mode.
IPresentationText represents the raw text extracted from the presentation. It contains a getSlidesText method which returns an array of ISlideText objects. Every object represent the text on the corresponding slide. ISlideText object have the following methods:
- ISlideText.getText - The text on the slide’s shapes
- ISlideText.getMasterText - The text on the master page’s shapes for this slide
- ISlideText.getLayoutText - The text on the layout page’s shapes for this slide
- ISlideText.getNotesText - The text on the notes page’s shapes for this slide
There is also a SlideText class which implements the ISlideText interface.
The new API can be used like this:
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());
FAQ
Wie schnell verarbeitet Aspose.Slides große Präsentationen bei der Textextraktion?
Aspose.Slides ist für hohe Leistung optimiert und verarbeitet selbst große Präsentationen effizient, sodass es für Echtzeit‑ oder Batch‑Szenarien geeignet ist.
Kann Aspose.Slides Text aus Tabellen und Diagrammen innerhalb von Präsentationen extrahieren?
Ja, Aspose.Slides unterstützt das Extrahieren von Text aus Tabellen, Diagrammen und anderen komplexen Folienelementen, sodass Sie den gesamten Textinhalt einfach zugreifen und analysieren können.
Benötige ich eine spezielle Aspose.Slides‑Lizenz, um Text aus Präsentationen zu extrahieren?
Sie können Text mit der kostenlosen Testversion von Aspose.Slides extrahieren, jedoch mit Einschränkungen, z. B. der Verarbeitung einer begrenzten Folienanzahl. Für uneingeschränkte Nutzung und zum Verarbeiten größerer Präsentationen wird der Erwerb einer Voll‑Lizenz empfohlen.