.NET'te Sunumlardan Gelişmiş Metin Çıkarma
Genel Bakış
Sunumlardan metin çıkarma, slayt içeriğiyle çalışan geliştiriciler için yaygın ancak hayati bir görevdir. Microsoft PowerPoint dosyaları PPT ya da 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 .NET kullanarak PPT, PPTX ve ODP gibi çeşitli sunum formatlarından metni verimli bir şekilde çıkarmak için kapsamlı bir rehber sunar. Sunum öğeleri üzerinde sistematik olarak nasıl iterasyon yapılacağını ve ihtiyacınız olan metin içeriğini doğru bir şekilde nasıl elde edeceğinizi öğreneceksiniz.
Slayttan Metin Çıkarma
Aspose.Slides for .NET, Aspose.Slides.Util ad alanını sağlar; bu ad alanı SlideUtil sınıfını içerir. Bu sınıf, bir sunum veya slayttan tüm metni çıkarmak için bir dizi aşırı yüklenmiş static yöntemi sunar. Bir sunumdaki slayttan metin çıkarmak için GetAllTextBoxes yöntemini kullanın. Bu yöntem, parametre olarak IBaseSlide tipinde bir nesne alır. Çalıştırıldığında, yöntem tüm slaytı metin için tarar ve metin biçimlendirmesini koruyarak ITextFrame tipinde nesneler dizisi döndürür.
Aşağıdaki kod parçacığı, sunumun ilk slaytındaki tüm metni çıkarır:
int slideIndex = 0;
using var presentation = new Presentation("demo.pptx");
var slide = presentation.Slides[slideIndex];
var textFrames = Aspose.Slides.Util.SlideUtil.GetAllTextBoxes(slide);
foreach (var textFrame in textFrames)
{
foreach (var paragraph in textFrame.Paragraphs)
{
foreach (var portion in paragraph.Portions)
{
var portionText = portion.Text;
Console.WriteLine(portionText);
var portionFormat = portion.PortionFormat;
var fontHeight = portionFormat.FontHeight;
Console.WriteLine(fontHeight);
var latinFont = portionFormat.LatinFont;
if (latinFont != null)
{
var fontName = latinFont.FontName;
Console.WriteLine(fontName);
}
}
}
}
Sunumdan Metin Çıkarma
Tüm sunumdaki metni taramak için SlideUtil sınıfı tarafından sunulan GetAllTextFrames static yöntemini kullanın. Bu yöntem iki parametre alır:
- İlk olarak, metnin çıkarılacağı PowerPoint veya OpenDocument sunumunu temsil eden bir IPresentation nesnesi.
- İkinci olarak, ana slaytların tarama sırasında dahil edilip edilmeyeceğini belirten bir
Booleandeğeri.
Yöntem, metin biçimlendirme bilgilerini içeren ITextFrame tipinde nesneler dizisi döndürür. Aşağıdaki kod, ana slaytlar dahil olmak üzere bir sunumun metin ve biçimlendirme ayrıntılarını tarar.
using var presentation = new Presentation("demo.pptx");
var includeMasterSlides = true;
var textFrames = Aspose.Slides.Util.SlideUtil.GetAllTextFrames(presentation, includeMasterSlides);
foreach (var textFrame in textFrames)
{
foreach (var paragraph in textFrame.Paragraphs)
{
foreach (var portion in paragraph.Portions)
{
var portionText = portion.Text;
Console.WriteLine(portionText);
var portionFormat = portion.PortionFormat;
var fontHeight = portionFormat.FontHeight;
Console.WriteLine(fontHeight);
var latinFont = portionFormat.LatinFont;
if (latinFont != null)
{
var fontName = latinFont.FontName;
Console.WriteLine(fontName);
}
}
}
}
Kategorize ve Hızlı Metin Çıkarma
PresentationFactory sınıfı da sunumlardan tüm metni çıkarmak için yöntemler sunar:
IPresentationText GetPresentationText(string file, TextExtractionArrangingMode mode);
IPresentationText GetPresentationText(Stream stream, TextExtractionArrangingMode mode);
IPresentationText GetPresentationText(Stream stream, TextExtractionArrangingMode mode, ILoadOptions options);
TextExtractionArrangingMode enum bağımsız değişkeni, metin çıkarma sonucunun düzenlenme biçimini belirtir ve aşağıdaki değerlerden birine ayarlanabilir:
Unarranged- Slayttaki konumuna bakılmaksızın ham metin.Arranged- Metin slayttaki sırayla düzenlenir.
Düzenlenmemiş (unarranged) mod, hız kritik olduğunda kullanılabilir; düzenli (arranged) moddan daha hızlıdır.
IPresentationText sunumdan çıkarılan ham metni temsil eder. SlidesText özelliği, ISlideText tipinde nesneler dizisi döndürür. Her nesne ilgili slayttaki metni temsil eder. ISlideText tipindeki nesnenin aşağıdaki özellikleri vardır:
Text- Slayt şekillerindeki metin.MasterText- Bu slaytla ilişkili ana slayt şekillerindeki metin.LayoutText- Bu slaytla ilişkili yerleşim slaytı şekillerindeki metin.NotesText- Bu slaytla ilişkili not slaytı şekillerindeki metin.CommentsText- Bu slaytla ilişkili yorumlardaki metin.
var presentationPath = "presentation.ppt";
var arrangingMode = TextExtractionArrangingMode.Unarranged;
var presentationText = PresentationFactory.Instance.GetPresentationText(presentationPath, arrangingMode);
var firstSlideText = presentationText.SlidesText[0];
Console.WriteLine(firstSlideText.Text);
Console.WriteLine(firstSlideText.LayoutText);
Console.WriteLine(firstSlideText.MasterText);
Console.WriteLine(firstSlideText.NotesText);
Console.WriteLine(firstSlideText.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 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 olmak üzere birçok slayt öğesinden metin çıkarabilir; böylece yaygın sunum yapılarındaki metinsel içeriğe erişebilir ve analiz edebilirsiniz.
Sunumlardan metin çıkarmak için özel bir Aspose.Slides lisansına ihtiyacım var mı?
Metni ücretsiz deneme sürümünü kullanarak çıkarabilirsiniz, ancak bu sürüm belirli sınırlamalara sahiptir; örneğin yalnızca sınırlı sayıda slayt işlenebilir. Sınırsız kullanım ve daha büyük sunumları işlemek için tam bir lisans satın almanız önerilir.