استخراج النص من العرض التقديمي

استخراج النص من الشريحة

توفر Aspose.Slides لـ .NET مساحة الأسماء Aspose.Slides.Util والتي تشمل فئة SlideUtil. تعرض هذه الفئة عددًا من الطرق الثابتة المزدوجة لاستخراج النص الكامل من عرض تقديمي أو شريحة. لاستخراج النص من شريحة في عرض PPTX، استخدم طريقة GetAllTextBoxes الثابتة المزدوجة التي تعرضها فئة SlideUtil. تقبل هذه الطريقة كائن الشريحة كمعامل. عند التنفيذ، تقوم طريقة الشريحة بمسح النص الكامل من الشريحة الممررة كمعامل وتُرجع مصفوفة من كائنات TextFrame. هذا يعني أن أي تنسيق نص مرتبط بالنص متاح. يقوم النص البرمجي التالي باستخراج جميع النصوص على الشريحة الأولى من العرض التقديمي:

//إنشاء كائن فئة Presentation الذي يمثل ملف PPTX
Presentation pptxPresentation = new Presentation("demo.pptx");

//الحصول على مصفوفة من كائنات ITextFrame من جميع الشرائح في PPTX
ITextFrame[] textFramesPPTX = Aspose.Slides.Util.SlideUtil.GetAllTextFrames(pptxPresentation, true);

//التكرار عبر مصفوفة TextFrames
for (int i = 0; i < textFramesPPTX.Length; i++)
{
	//التكرار عبر الفقرات في ITextFrame الحالي
	foreach (IParagraph para in textFramesPPTX[i].Paragraphs)
	{
		//التكرار عبر الأجزاء في IParagraph الحالي
		foreach (IPortion port in para.Portions)
		{
			//عرض النص في الجزء الحالي
			Console.WriteLine(port.Text);

			//عرض ارتفاع الخط للنص
			Console.WriteLine(port.PortionFormat.FontHeight);

			//عرض اسم الخط للنص
			if (port.PortionFormat.LatinFont != null)
				Console.WriteLine(port.PortionFormat.LatinFont.FontName);
		}
	}
}

استخراج النص من العرض التقديمي

لمسح النص من العرض التقديمي الكامل، استخدم GetAllTextFrames الطريقة الثابتة التي تعلنها فئة SlideUtil. تأخذ هذه الطريقة معاملين:

  1. أولاً، كائن Presentation يمثل عرض PPTX الذي يتم استخراج النص منه.
  2. ثانياً، قيمة Boolean تحدد ما إذا كان يجب تضمين الشريحة الرئيسية عند مسح النص من العرض التقديمي. تُرجع الطريقة مصفوفة من كائنات TextFrame، مكتملة بمعلومات تنسيق النص. يقوم الكود أدناه بمسح النص ومعلومات التنسيق من عرض تقديمي، بما في ذلك الشرائح الرئيسية.
//إنشاء كائن فئة Presentation الذي يمثل ملف PPTX
Presentation pptxPresentation = new Presentation("demo.pptx");

//الحصول على مصفوفة من كائنات ITextFrame من جميع الشرائح في PPTX
ITextFrame[] textFramesPPTX = Aspose.Slides.Util.SlideUtil.GetAllTextFrames(pptxPresentation, true);

//التكرار عبر مصفوفة TextFrames
for (int i = 0; i < textFramesPPTX.Length; i++)

	//التكرار عبر الفقرات في ITextFrame الحالي
	foreach (IParagraph para in textFramesPPTX[i].Paragraphs)

		//التكرار عبر الأجزاء في IParagraph الحالي
		foreach (IPortion port in para.Portions)
		{
			//عرض النص في الجزء الحالي
			Console.WriteLine(port.Text);

			//عرض ارتفاع الخط للنص
			Console.WriteLine(port.PortionFormat.FontHeight);

			//عرض اسم الخط للنص
			if (port.PortionFormat.LatinFont != null)
				Console.WriteLine(port.PortionFormat.LatinFont.FontName);
		}

استخراج النص بشكل منظم وسريع

تمت إضافة الطريقة الثابتة الجديدة GetPresentationText إلى كائن Presentation. هناك نوعان من التحميل الزائد لهذه الطريقة:

PresentationText GetPresentationText(Stream stream)
PresentationText GetPresentationText(Stream stream, ExtractionMode mode)

تشير قيمة إدخال نوع ExtractionMode إلى الوضع لتنظيم ناتج النص ويمكن تعيينها إلى القيم التالية: غير منظم - النص الخام دون أن يؤخذ في الاعتبار موضعه في الشريحة منظم - يتم وضع النص بالترتيب نفسه كما هو على الشريحة

يمكن استخدام الوضع غير المنظم عندما تكون السرعة حاسمة، فهو أسرع من الوضع المنظم.

يمثل PresentationText النص الخام المستخرج من العرض التقديمي. يحتوي على خاصية SlidesText من مساحة أسماء Aspose.Slides.Util التي تُرجع مصفوفة من كائنات ISlideText. يمثل كل كائن النص على الشريحة المقابلة. تحتوي كائنات ISlideText على الخصائص التالية:

ISlideText.Text - النص على أشكال الشريحة ISlideText.MasterText - النص على أشكال الصفحة الرئيسية لهذه الشريحة ISlideText.LayoutText - النص على أشكال صفحة التخطيط لهذه الشريحة ISlideText.NotesText - النص على أشكال صفحة الملاحظات لهذه الشريحة

هناك أيضًا فئة SlideText التي تنفذ واجهة ISlideText.

يمكن استخدام واجهة برمجة التطبيقات الجديدة هكذا:

IPresentationText text1 = new PresentationFactory().GetPresentationText("presentation.ppt", TextExtractionArrangingMode.Unarranged);
Console.WriteLine(text1.SlidesText[0].Text);
Console.WriteLine(text1.SlidesText[0].LayoutText);
Console.WriteLine(text1.SlidesText[0].MasterText);
Console.WriteLine(text1.SlidesText[0].NotesText);