Extração avançada de texto de apresentações em Java

Visão geral

Extrair texto de apresentações é uma tarefa comum, porém essencial para desenvolvedores que trabalham com conteúdo de slides. Seja lidando com arquivos Microsoft PowerPoint nos formatos PPT ou PPTX, ou apresentações OpenDocument (ODP), acessar e recuperar dados textuais pode ser crítico para análise, automação, indexação ou migração de conteúdo.

Este artigo fornece um guia abrangente sobre como extrair texto de forma eficiente de vários formatos de apresentação, incluindo PPT, PPTX e ODP, usando Aspose.Slides for Java. Você aprenderá como iterar sistematicamente pelos elementos da apresentação para recuperar com precisão o conteúdo de texto que você precisa.

Extrair texto de um slide

Aspose.Slides for Java fornece a classe SlideUtil. Esta classe expõe vários métodos estáticos sobrecarregados para extrair todo o texto de uma apresentação ou slide. Para extrair texto de um slide em uma apresentação, use o método SlideUtil.getAllTextBoxes. Este método aceita um objeto do tipo IBaseSlide como parâmetro. Quando executado, o método varre todo o slide em busca de texto e devolve um array de objetos do tipo ITextFrame, preservando toda a formatação do texto.

O trecho de código a seguir extrai todo o texto do primeiro slide da apresentação:

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();
}

Extrair texto de uma apresentação

Para analisar o texto de toda a apresentação, use o método estático SlideUtil.getAllTextFrames exposto pela classe SlideUtil. Ele aceita dois parâmetros:

  1. Primeiro, um objeto IPresentation que representa uma apresentação PowerPoint ou OpenDocument da qual o texto será extraído.
  2. Segundo, um valor boolean indicando se os slides mestres devem ser incluídos ao analisar o texto da apresentação.

O método retorna um array de objetos do tipo ITextFrame, incluindo informações de formatação de texto. O código abaixo analisa o texto e os detalhes de formatação de uma apresentação, incluindo os slides mestres.

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();
}

Extração de texto categorizada e rápida

A classe PresentationFactory também fornece métodos para extrair todo o texto de apresentações:

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

O argumento enum TextExtractionArrangingMode indica o modo de organização do resultado da extração de texto e pode ser definido com os valores a seguir:

  • Unarranged - O texto bruto sem considerar sua posição no slide.
  • Arranged - O texto é organizado na mesma ordem que no slide.

O modo não organizado (Unarranged) pode ser usado quando a velocidade é crítica; ele é mais rápido que o modo organizado.

IPresentationText representa o texto bruto extraído da apresentação. Seu método getSlidesText devolve um array de objetos do tipo ISlideText. Cada objeto representa o texto no slide correspondente. O objeto do tipo ISlideText possui os seguintes métodos:

  • getText - O texto dentro das formas do slide.
  • getMasterText - O texto dentro das formas do slide mestre associado a este slide.
  • getLayoutText - O texto dentro das formas do slide de layout associado a este slide.
  • getNotesText - O texto dentro das formas do slide de notas associado a este slide.
  • getCommentsText - O texto dentro dos comentários associados a este slide.
String presentationPath = "presentation.ppt";
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());

Perguntas frequentes

Quão rápido o Aspose.Slides processa apresentações grandes durante a extração de texto?

Aspose.Slides está otimizado para alto desempenho e pode processar até apresentações grandes, tornando-o adequado para cenários de processamento em tempo real ou em massa.

O Aspose.Slides pode extrair texto de tabelas e gráficos dentro de apresentações?

Sim. Aspose.Slides pode extrair texto de muitos elementos de slide, incluindo tabelas e objetos relacionados a gráficos, de modo que você possa acessar e analisar o conteúdo textual em estruturas de apresentação comuns.

Preciso de uma licença especial do Aspose.Slides para extrair texto de apresentações?

Você pode extrair texto usando a versão de avaliação gratuita do Aspose.Slides, embora ela tenha certas limitações, como processar apenas um número limitado de slides. Para uso ilimitado e para lidar com apresentações maiores, recomenda-se adquirir uma licença completa.