Zaawansowane wyodrębnianie tekstu z prezentacji na Androidzie

Przegląd

Wyodrębnianie tekstu z prezentacji jest powszechnym, a jednocześnie kluczowym zadaniem dla programistów pracujących z zawartością slajdów. Niezależnie od tego, czy masz do czynienia z plikami Microsoft PowerPoint w formacie PPT lub PPTX, czy z prezentacjami OpenDocument (ODP), dostęp i pobieranie danych tekstowych może być istotny dla analizy, automatyzacji, indeksowania lub migracji treści.

W tym artykule znajdziesz kompleksowy przewodnik, jak efektywnie wyodrębniać tekst z różnych formatów prezentacji, w tym PPT, PPTX i ODP, przy użyciu Aspose.Slides for Android via Java. Dowiesz się, jak systematycznie iterować po elementach prezentacji, aby dokładnie pobrać potrzebną treść tekstową.

Wyodrębnianie tekstu ze slajdu

Aspose.Slides for Android via Java udostępnia klasę SlideUtil. Klasa ta udostępnia kilka przeciążonych metod statycznych służących do wyodrębniania całego tekstu z prezentacji lub slajdu. Aby wyodrębnić tekst ze slajdu w prezentacji, użyj metody getAllTextBoxes . Metoda ta przyjmuje jako parametr obiekt typu IBaseSlide. Po uruchomieniu metoda przeszukuje cały slajd pod kątem tekstu i zwraca tablicę obiektów typu ITextFrame, zachowując formatowanie tekstu.

Poniższy fragment kodu wyodrębnia cały tekst z pierwszego slajdu prezentacji:

int slideIndex = 0;

Presentation presentation = new Presentation("demo.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(slideIndex);

    ITextFrame[] textFrames = SlideUtil.getAllTextBoxes(slide);

    for (ITextFrame textFrame : textFrames) {
        for (IParagraph paragraph : textFrame.getParagraphs()) {
            for (IPortion portion : paragraph.getPortions()) {
                String portionText = portion.getText();
                System.out.println(portionText);

                IPortionFormat portionFormat = portion.getPortionFormat();
                float fontHeight = portionFormat.getFontHeight();
                System.out.println(fontHeight);

                IFontData latinFont = portionFormat.getLatinFont();
                if (latinFont != null) {
                    String fontName = latinFont.getFontName();
                    System.out.println(fontName);
                }
            }
        }
    }
} finally {
    presentation.dispose();
}

Wyodrębnianie tekstu z prezentacji

Aby zeskanować tekst z całej prezentacji, użyj statycznej metody getAllTextFrames udostępnionej przez klasę SlideUtil. Przyjmuje ona dwa parametry:

  1. Obiekt IPresentation reprezentujący prezentację PowerPoint lub OpenDocument, z której ma zostać wyodrębniony tekst.
  2. Wartość boolean określająca, czy slajdy wzorcowe mają być uwzględnione podczas skanowania tekstu z prezentacji.

Metoda zwraca tablicę obiektów typu ITextFrame, zawierającą informacje o formatowaniu tekstu. Poniższy kod skanuje tekst i szczegóły formatowania z prezentacji, w tym ze slajdów wzorcowych.

Presentation presentation = new Presentation("demo.pptx");
try {
    boolean includeMasterSlides = true;
    ITextFrame[] textFrames = SlideUtil.getAllTextFrames(presentation, includeMasterSlides);

    for (ITextFrame textFrame : textFrames) {
        for (IParagraph paragraph : textFrame.getParagraphs()) {
            for (IPortion portion : paragraph.getPortions()) {
                String portionText = portion.getText();
                System.out.println(portionText);

                IPortionFormat portionFormat = portion.getPortionFormat();
                float fontHeight = portionFormat.getFontHeight();
                System.out.println(fontHeight);

                IFontData latinFont = portionFormat.getLatinFont();
                if (latinFont != null) {
                    String fontName = latinFont.getFontName();
                    System.out.println(fontName);
                }
            }
        }
    }
} finally {
    presentation.dispose();
}

Kategoryzowane i szybkie wyodrębnianie tekstu

Klasa PresentationFactory również udostępnia metody do wyodrębniania całego tekstu z prezentacji:

IPresentationText getPresentationText(String file, int mode);
IPresentationText getPresentationText(InputStream stream, int mode);
IPresentationText getPresentationText(InputStream stream, int mode, ILoadOptions options);

Argument wyliczenia TextExtractionArrangingMode określa tryb organizacji wyniku wyodrębniania tekstu i może przyjmować następujące wartości:

  • Unarranged – surowy tekst bez uwzględnienia jego położenia na slajdzie.
  • Arranged – tekst uporządkowany w takiej samej kolejności, jak na slajdzie.

Tryb nieuporządkowany może być używany, gdy liczy się prędkość; jest szybszy niż tryb uporządkowany.

IPresentationText reprezentuje surowy tekst wyodrębniony z prezentacji. Jego metoda getSlidesText zwraca tablicę obiektów typu ISlideText. Każdy obiekt reprezentuje tekst na odpowiadającym mu slajdzie. Obiekt typu ISlideText posiada następujące metody:

  • getText – tekst znajdujący się w kształtach slajdu.
  • getMasterText – tekst znajdujący się w kształtach slajdu wzorcowego powiązanego z tym slajdem.
  • getLayoutText – tekst znajdujący się w kształtach slajdu układu powiązanego z tym slajdem.
  • getNotesText – tekst znajdujący się w kształtach slajdu notatek powiązanego z tym slajdem.
  • getCommentsText – tekst znajdujący się w komentarzach powiązanych z tym slajdem.
String presentationPath = "presentation.pptx";
int arrangingMode = TextExtractionArrangingMode.Unarranged;
IPresentationText presentationText = PresentationFactory.getInstance().getPresentationText(presentationPath, arrangingMode);
ISlideText firstSlideText = presentationText.getSlidesText()[0];

System.out.println(firstSlideText.getText());
System.out.println(firstSlideText.getLayoutText());
System.out.println(firstSlideText.getMasterText());
System.out.println(firstSlideText.getNotesText());
System.out.println(firstSlideText.getCommentsText());

FAQ

Jak szybko Aspose.Slides przetwarza duże prezentacje podczas wyodrębniania tekstu?

Aspose.Slides jest zoptymalizowany pod kątem wysokiej wydajności i może przetwarzać nawet duże prezentacje, co czyni go odpowiednim do scenariuszy przetwarzania w czasie rzeczywistym lub hurtowego.

Czy Aspose.Slides może wyodrębniać tekst z tabel i wykresów w prezentacjach?

Tak. Aspose.Slides potrafi wyodrębniać tekst z wielu elementów slajdu, w tym z tabel i obiektów związanych z wykresami, dzięki czemu możesz uzyskać dostęp i analizować treść tekstową w typowych strukturach prezentacji.

Czy potrzebuję specjalnej licencji Aspose.Slides, aby wyodrębniać tekst z prezentacji?

Możesz wyodrębniać tekst przy użyciu darmowej wersji próbnej Aspose.Slides, choć będzie ona miała określone ograniczenia, takie jak przetwarzanie jedynie ograniczonej liczby slajdów. Dla nieograniczonego użycia i obsługi większych prezentacji zaleca się zakup pełnej licencji.