Extração Avançada de Texto de Apresentações em C++
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 C++. Você aprenderá como iterar sistematicamente pelos elementos da apresentação para recuperar com precisão o conteúdo textual de que precisa.
Extrair Texto de um Slide
Aspose.Slides for C++ fornece o namespace Aspose.Slides.Util que inclui a classe SlideUtil. Essa 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 GetAllTextBoxes. Esse 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 qualquer formatação de texto.
O trecho de código a seguir extrai todo o texto do primeiro slide da apresentação:
auto slideIndex = 0;
auto presentation = System::MakeObject<Presentation>(u"demo.pptx");
auto slide = presentation->get_Slide(slideIndex);
auto textFrames = Util::SlideUtil::GetAllTextBoxes(slide);
for (const auto& textFrame : textFrames)
{
for (const auto& paragraph : textFrame->get_Paragraphs())
{
for (const auto& portion : paragraph->get_Portions())
{
auto portionText = portion->get_Text();
Console::WriteLine(portionText);
auto portionFormat = portion->get_PortionFormat();
auto fontHeight = portionFormat->get_FontHeight();
Console::WriteLine(fontHeight);
auto latinFont = portionFormat->get_LatinFont();
if (latinFont != nullptr)
{
auto fontName = latinFont->get_FontName();
Console::WriteLine(fontName);
}
}
}
}
presentation->Dispose();
Extrair Texto de uma Apresentação
Para analisar texto de toda a apresentação, use o método estático GetAllTextFrames exposto pela classe SlideUtil. Ele aceita dois parâmetros:
- Primeiro, um objeto IPresentation que representa uma apresentação PowerPoint ou OpenDocument da qual o texto será extraído.
- Segundo, um valor
Booleanque indica se os slides mestre devem ser incluídos ao analisar o texto da apresentação.
O método devolve 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.
auto presentation = System::MakeObject<Presentation>(u"demo.pptx");
auto includeMasterSlides = true;
auto textFrames = Util::SlideUtil::GetAllTextFrames(presentation, includeMasterSlides);
for (const auto& textFrame : textFrames)
{
for (const auto& paragraph : textFrame->get_Paragraphs())
{
for (const auto& portion : paragraph->get_Portions())
{
auto portionText = portion->get_Text();
Console::WriteLine(portionText);
auto portionFormat = portion->get_PortionFormat();
auto fontHeight = portionFormat->get_FontHeight();
Console::WriteLine(fontHeight);
auto latinFont = portionFormat->get_LatinFont();
if (latinFont != nullptr)
{
auto fontName = latinFont->get_FontName();
Console::WriteLine(fontName);
}
}
}
}
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:
System::SharedPtr<IPresentationText> GetPresentationText(System::String file, TextExtractionArrangingMode mode);
System::SharedPtr<IPresentationText> GetPresentationText(System::SharedPtr<System::IO::Stream> stream, TextExtractionArrangingMode mode);
System::SharedPtr<IPresentationText> GetPresentationText(System::SharedPtr<System::IO::Stream> stream, TextExtractionArrangingMode mode, System::SharedPtr<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 seguintes valores:
Unarranged- O texto bruto sem considerar sua posição no slide.Arranged- O texto é organizado na mesma ordem do slide.
O modo não organizado 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 get_SlidesText() 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:
get_Text()- O texto dentro das formas do slide.get_MasterText()- O texto dentro das formas do slide mestre associadas a este slide.get_LayoutText()- O texto dentro das formas do slide de layout associadas a este slide.get_NotesText()- O texto dentro das formas do slide de notas associadas a este slide.get_CommentsText()- O texto dentro dos comentários associados a este slide.
auto presentationPath = u"presentation.ppt";
auto arrangingMode = TextExtractionArrangingMode::Unarranged;
auto presentationText = PresentationFactory::get_Instance()->GetPresentationText(presentationPath, arrangingMode);
auto firstSlideText = presentationText->get_SlidesText()[0];
Console::WriteLine(firstSlideText->get_Text());
Console::WriteLine(firstSlideText->get_LayoutText());
Console::WriteLine(firstSlideText->get_MasterText());
Console::WriteLine(firstSlideText->get_NotesText());
Console::WriteLine(firstSlideText->get_CommentsText());
FAQ
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é grandes apresentações, tornando‑se adequado para cenários de processamento em tempo real ou em lote.
O Aspose.Slides pode extrair texto de tabelas e gráficos dentro das apresentações?
Sim. Aspose.Slides pode extrair texto de muitos elementos de slide, incluindo tabelas e objetos relacionados a gráficos, permitindo que você acesse e analise o conteúdo textual em estruturas comuns de apresentação.
Preciso de uma licença especial do Aspose.Slides para extrair texto de apresentações?
É possível extrair texto usando a versão de avaliação gratuita do Aspose.Slides, embora ela tenha certas limitações, como processar um número limitado de slides. Para uso irrestrito e para manipular apresentações maiores, recomenda‑se adquirir uma licença completa.