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

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

تقدم Aspose.Slides لـ PHP عبر Java الفئة SlideUtil. تعرض هذه الفئة عددًا من الطرق الثابتة المحملة لاستخراج النص الكامل من عرض تقديمي أو شريحة. لاستخراج النص من شريحة في عرض PPTX، استخدم الطريقة الثابتة المحملة getAllTextBoxes التي تعرضها فئة SlideUtil. تقبل هذه الطريقة كائن الشريحة كمعامل. عند التنفيذ، تقوم طريقة Slide بفحص النص الكامل من الشريحة الممررة كمعامل وتعيد مصفوفة من كائنات TextFrame. وهذا يعني أن أي تنسيق نص مرتبط بالنص متوفر. يخرج قطعة الكود التالية جميع النصوص على الشريحة الأولى من العرض التقديمي:

  # إنشاء كائن من فئة Presentation التي تمثل ملف PPTX
  $pres = new Presentation("demo.pptx");
  $Array = new java_class("java.lang.reflect.Array");
  try {
    foreach($pres->getSlides() as $slide) {
      # الحصول على مصفوفة من كائنات ITextFrame من جميع الشرائح في PPTX
      $textFramesPPTX = SlideUtil->getAllTextBoxes($slide);
      # التكرار عبر مصفوفة TextFrames
      for($i = 0; $i < java_values($Array->getLength($textFramesPPTX)) ; $i++) {
        # التكرار عبر الفقرات في ITextFrame الحالي
        foreach($textFramesPPTX[$i]->getParagraphs() as $para) {
          # التكرار عبر الأجزاء في IParagraph الحالي
          foreach($para->getPortions() as $port) {
            # عرض النص في الجزء الحالي
            echo($port->getText());
            # عرض ارتفاع الخط للنص
            echo($port->getPortionFormat()->getFontHeight());
            # عرض اسم الخط للنص
            if (!java_is_null($port->getPortionFormat()->getLatinFont())) {
              echo($port->getPortionFormat()->getLatinFont()->getFontName());
            }
          }
        }
      }
    }
  } finally {
    $pres->dispose();
  }

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

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

  1. أولاً، كائن Presentation يمثل العرض التقديمي الذي يتم استخراج النص منه.
  2. ثانياً، قيمة بوليانية تحدد ما إذا كان يجب تضمين الشريحة الرئيسية عند فحص النص من العرض التقديمي. تعيد الطريقة مصفوفة من كائنات TextFrame مكتملة بمعلومات تنسيق النص. الكود أدناه يفحص النص ومعلومات التنسيق من عرض تقديمي، بما في ذلك الشرائح الرئيسية.
  # إنشاء كائن من فئة Presentation التي تمثل ملف PPTX
  $pres = new Presentation("demo.pptx");
  $Array = new java_class("java.lang.reflect.Array");
  try {
    # الحصول على مصفوفة من كائنات ITextFrame من جميع الشرائح في PPTX
    $textFramesPPTX = SlideUtil->getAllTextFrames($pres, true);
    # التكرار عبر مصفوفة TextFrames
    for($i = 0; $i < java_values($Array->getLength($textFramesPPTX)) ; $i++) {
      # التكرار عبر الفقرات في ITextFrame الحالي
      foreach($textFramesPPTX[$i]->getParagraphs() as $para) {
        # التكرار عبر الأجزاء في IParagraph الحالي
        foreach($para->getPortions() as $port) {
          # عرض النص في الجزء الحالي
          echo($port->getText());
          # عرض ارتفاع الخط للنص
          echo($port->getPortionFormat()->getFontHeight());
          # عرض اسم الخط للنص
          if (!java_is_null($port->getPortionFormat()->getLatinFont())) {
            echo($port->getPortionFormat()->getLatinFont()->getFontName());
          }
        }
      }
    }
  } finally {
    $pres->dispose();
  }

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

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


يعكس حجة TextExtractionArrangingMode وضع تنظيم نتيجة النص ويمكن ضبطها على القيم التالية:

  • Unarranged - النص الخام دون مراعاة الموقف على الشريحة
  • Arranged - النص موضعه بنفس ترتيب وجوده على الشريحة

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

يمثل IPresentationText النص الخام المستخرج من العرض التقديمي. يحتوي على طريقة getSlidesText والتي تعيد مصفوفة من كائنات ISlideText. يمثل كل كائن النص على الشريحة المقابلة. تحتوي كائنات ISlideText على الطرق التالية:

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

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

  $text1 = PresentationFactory->getInstance()->getPresentationText("presentation.pptx", TextExtractionArrangingMode->Unarranged);
  echo($text1->getSlidesText()[0]->getText());
  echo($text1->getSlidesText()[0]->getLayoutText());
  echo($text1->getSlidesText()[0]->getMasterText());
  echo($text1->getSlidesText()[0]->getNotesText());