C++ ile Sunumlardan Gelişmiş Metin Çıkarma
Genel Bakış
Sunumlardan metin çıkarmak, slayt içeriğiyle çalışan geliştiriciler için yaygın ancak önemli bir görevdir. Microsoft PowerPoint dosyaları PPT veya PPTX formatında ya da OpenDocument sunumları (ODP) ile çalışıyor olun, metinsel verilere erişmek ve bunları almak analiz, otomasyon, indeksleme veya içerik taşıma amaçları için kritik olabilir.
Bu makale, Aspose.Slides for C++ kullanarak PPT, PPTX ve ODP dahil çeşitli sunum formatlarından metni verimli bir şekilde nasıl çıkaracağınızı kapsamlı bir rehber sunar. Sunum öğeleri üzerinden sistematik olarak nasıl yineleme yaparak ihtiyacınız olan metin içeriğini doğru bir şekilde alabileceğinizi öğreneceksiniz.
Bir Slayttan Metin Çıkarma
Aspose.Slides for C++ , Aspose.Slides.Util ad alanını sağlar; bu ad alanda SlideUtil sınıfı bulunur. Bu sınıf, bir sunum veya slayttan tüm metni çıkarmak için birkaç aşırı yüklenmiş statik yöntem sunar. Bir sunumdaki slayttan metin çıkarmak için GetAllTextBoxes yöntemini kullanın. Bu yöntem, parametre olarak IBaseSlide türünde bir nesne alır. Çalıştırıldığında, yöntem tüm slaytı metin için tarar ve metin biçimlendirmesini koruyan ITextFrame türünde nesneler dizisi döndürür.
Aşağıdaki kod parçacığı, sunumun ilk slaydındaki tüm metni çıkarır:
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();
Bir Sunumdan Metin Çıkarma
Sunumun tamamındaki metni taramak için SlideUtil sınıfı tarafından sunulan GetAllTextFrames statik yöntemini kullanın. Bu yöntem iki parametre alır:
- İlk parametre, metnin çıkarılacağı bir PowerPoint veya OpenDocument sunumunu temsil eden bir IPresentation nesnesidir.
- İkinci parametre, sunumdan metin taranırken ana slaytların (master slides) dahil edilip edilmeyeceğini belirten bir
Booleandeğeridir.
Yöntem, metin biçimlendirme bilgilerini içeren ITextFrame türünde nesneler dizisi döndürür. Aşağıdaki kod, ana slaytlar dahil olmak üzere bir sunumdan metin ve biçimlendirme ayrıntılarını tarar.
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();
Kategorize Edilmiş ve Hızlı Metin Çıkarma
PresentationFactory sınıfı da sunumlardan tüm metni çıkarmak için yöntemler sunar:
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);
TextExtractionArrangingMode enum argümanı, metin çıkarma sonucunun düzenleme modunu gösterir ve aşağıdaki değerlerden biri olarak ayarlanabilir:
Unarranged- Slayttaki konumuna bakılmaksızın ham metin.Arranged- Metin, slayttaki aynı sırada düzenlenir.
Hızın kritik olduğu durumlarda düzenlenmemiş (unarranged) mod kullanılabilir; bu mod, düzenlenmiş (arranged) moddan daha hızlıdır.
IPresentationText sunumdan çıkarılan ham metni temsil eder. get_SlidesText() yöntemi, ISlideText türünde nesneler dizisi döndürür. Her nesne, ilgili slaydın metnini temsil eder. ISlideText türündeki nesnenin aşağıdaki yöntemleri vardır:
get_Text()- Slayt şekilleri içindeki metin.get_MasterText()- Bu slaytla ilişkili ana slayd (master slide) şekilleri içindeki metin.get_LayoutText()- Bu slaytla ilişkili düzen slaydının (layout slide) şekilleri içindeki metin.get_NotesText()- Bu slaytla ilişkili not slaydının şekilleri içindeki metin.get_CommentsText()- Bu slaytla ilişkili yorumlardaki metin.
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());
SSS
Aspose.Slides büyük sunumları metin çıkarma sırasında ne kadar hızlı işler?
Aspose.Slides yüksek performans için optimize edilmiştir ve hatta büyük sunumları işleyebilir; bu da gerçek zamanlı veya toplu işleme senaryoları için uygundur.
Aspose.Slides sunumlardaki tablolar ve grafiklerden metin çıkarabilir mi?
Evet. Aspose.Slides, tablolar ve grafikle ilgili nesneler dahil birçok slayt öğesinden metin çıkarabilir; böylece yaygın sunum yapılarındaki metin içeriğine erişebilir ve analiz edebilirsiniz.
Sunumlardan metin çıkarmak için özel bir Aspose.Slides lisansına ihtiyacım var mı?
Aspose.Slides’in ücretsiz deneme sürümünü kullanarak metin çıkarabilirsiniz, ancak bu sürümün belirli kısıtlamaları vardır; örneğin sadece sınırlı sayıda slaytı işleyebilir. Sınırsız kullanım ve daha büyük sunumları işleyebilmek için tam bir lisans satın almanız önerilir.