Расширенное извлечение текста из презентаций на Java

Извлечение текста со слайдов

Aspose.Slides для Java предоставляет класс SlideUtil. Этот класс предоставляет несколько перегруженных статических методов для извлечения всего текста из презентации или слайда. Чтобы извлечь текст со слайда в PPTX‑презентации, используйте перегруженный статический метод getAllTextBoxes класса SlideUtil. Этот метод принимает объект Slide в качестве параметра.
При выполнении метод Slide сканирует весь текст со слайда, переданного в качестве параметра, и возвращает массив объектов TextFrame. Это означает, что доступно любое форматирование текста. Ниже приведён фрагмент кода, который извлекает весь текст с первого слайда презентации:

//Создать экземпляр класса Presentation, представляющего файл PPTX
Presentation pres = new Presentation("demo.pptx");
try {
    for (ISlide slide : pres.getSlides()) 
    {
        //Получить массив объектов ITextFrame со всех слайдов PPTX
        ITextFrame[] textFramesPPTX = SlideUtil.getAllTextBoxes(slide);

        //Перебрать массив TextFrames
        for (int i = 0; i < textFramesPPTX.length; i++) {
            //Перебрать абзацы в текущем ITextFrame
            for (IParagraph para : textFramesPPTX[i].getParagraphs()) {
                //Перебрать части (portions) в текущем IParagraph
                for (IPortion port : para.getPortions()) {
                    //Отобразить текст текущей части
                    System.out.println(port.getText());

                    //Отобразить высоту шрифта текста
                    System.out.println(port.getPortionFormat().getFontHeight());

                    //Отобразить название шрифта текста
                    if (port.getPortionFormat().getLatinFont() != null)
                        System.out.println(port.getPortionFormat().getLatinFont().getFontName());
                }
            }
        }
    }
} finally {
    pres.dispose();
}

Извлечение текста из презентаций

Чтобы просканировать текст всей презентации, используйте статический метод getAllTextFrames класса SlideUtil. Он принимает два параметра:

  1. Во‑первых, объект Presentation, представляющий презентацию, из которой извлекается текст.
  2. Во‑вторых, логическое значение, определяющее, следует ли включать мастер‑слайд при сканировании текста презентации.
    Метод возвращает массив объектов TextFrame с полной информацией о форматировании текста. Ниже приведён код, который сканирует текст и информацию о форматировании из презентации, включая мастер‑слайды.
//Создать экземпляр класса Presentation, который представляет файл PPTX
Presentation pres = new Presentation("demo.pptx");
try {
    //Получить массив объектов ITextFrame со всех слайдов PPTX
    ITextFrame[] textFramesPPTX = SlideUtil.getAllTextFrames(pres, true);

    //Перебрать массив TextFrames
    for (int i = 0; i < textFramesPPTX.length; i++) 
    {
        //Перебрать абзацы в текущем ITextFrame
        for (IParagraph para : textFramesPPTX[i].getParagraphs())
        {
            //Перебрать части (portions) в текущем IParagraph
            for (IPortion port : para.getPortions())
            {
                //Отобразить текст текущей части
                System.out.println(port.getText());

                //Отобразить высоту шрифта текста
                System.out.println(port.getPortionFormat().getFontHeight());

                //Отобразить название шрифта текста
                if (port.getPortionFormat().getLatinFont() != null)
                    System.out.println(port.getPortionFormat().getLatinFont().getFontName());
            }
        }
    }
} finally {
    pres.dispose();
}

Категоризированное и быстрое извлечение текста

В класс Presentation добавлен новый статический метод getPresentationText. У этого метода три перегрузки:

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

FAQ

Насколько быстро Aspose.Slides обрабатывает большие презентации при извлечении текста?

Aspose.Slides оптимизирован для высокой производительности и эффективно обрабатывает даже large presentations, что делает его подходящим для сценариев обработки в реальном времени или пакетной обработки.

Может ли Aspose.Slides извлекать текст из таблиц и диаграмм в презентациях?

Да, Aspose.Slides полностью поддерживает извлечение текста из таблиц, диаграмм и других сложных элементов слайдов, позволяя легко получать и анализировать весь текстовый контент.

Нужна ли мне специальная лицензия Aspose.Slides для извлечения текста из презентаций?

Вы можете извлекать текст с помощью бесплатной пробной версии Aspose.Slides, хотя она имеет ограничения, например обработку только ограниченного количества слайдов. Для неограниченного использования и работы с более крупными презентациями рекомендуется приобрести полную лицензию.