PHP'de 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 veya PPTX formatında olsun ya da OpenDocument sunumları (ODP) olsun, metinsel veriye erişmek ve geri almak, analiz, otomasyon, indeksleme veya içerik göçü amaçları için kritik olabilir.

Bu makale, Aspose.Slides for PHP via Java kullanarak PPT, PPTX ve ODP dahil olmak üzere çeşitli sunum biçimlerinden metni verimli bir şekilde çıkarmak için kapsamlı bir rehber sunar. Sunum öğeleri üzerinden sistematik olarak döngü yapmayı öğrenerek ihtiyacınız olan metin içeriğini doğru bir şekilde alacaksınız.

Bir Slayttan Metin Çıkarma

Aspose.Slides for PHP via Java, SlideUtil sınıfını sağlar. Bu sınıf, bir sunum veya slayttan tüm metni çıkarmak için birkaç aşırı yüklü statik metot sunar. Bir sunumdaki bir slayttan metin çıkarmak için getAllTextBoxes metodunu kullanın. Bu metot, parametre olarak BaseSlide tipinde bir nesne alır. Çalıştırıldığında, metod tüm slaytı metin için tarar ve metin biçimlendirmesini koruyarak TextFrame tipinde nesneler içeren bir dizi döndürür.

Aşağıdaki kod parçacığı, sunumun ilk slaytındaki tüm metni çıkarır:

$slideIndex = 0;

$presentation = new Presentation("demo.pptx");
$arrayClass = new java_class("java.lang.reflect.Array");

try {
    $slide = $presentation->getSlides()->get_Item($slideIndex);

    $textFrames = SlideUtil::getAllTextBoxes($slide);
    $textFrameCount = java_values($arrayClass->getLength($textFrames));

    for ($textFrameIndex = 0; $textFrameIndex < $textFrameCount; $textFrameIndex++) {
        foreach ($textFrames[$textFrameIndex]->getParagraphs() as $paragraph) {
            foreach ($paragraph->getPortions() as $portion) {
                $portionText = $portion->getText();
                echo($portionText);

                $portionFormat = $portion->getPortionFormat();
                $fontHeight = $portionFormat->getFontHeight();
                echo($fontHeight);

                $latinFont = $portionFormat->getLatinFont();
                if (!java_is_null($latinFont)) {
                    $fontName = $latinFont->getFontName();
                    echo($fontName);
                }
            }
        }
    }
} finally {
    $presentation->dispose();
}

Bir Sunumdan Metin Çıkarma

Sunumun tamamındaki metni taramak için, SlideUtil sınıfının sunduğu getAllTextFrames statik metodunu kullanın. Bu metot iki parametre alır:

  1. İlk olarak, metnin çıkarılacağı PowerPoint veya OpenDocument sunumunu temsil eden bir Presentation nesnesi.
  2. İkinci olarak, sunumdan metin taranırken ana slaytların (master slides) dahil edilip edilmeyeceğini belirten bir boolean değeri.

Metot, TextFrame tipinde nesneler içeren bir dizi döndürür ve metin biçimlendirme bilgilerini içerir. Aşağıdaki kod, ana slaytlar dahil olmak üzere bir sunumdan metin ve biçimlendirme ayrıntılarını tarar.

$presentation = new Presentation("demo.pptx");
$arrayClass = new java_class("java.lang.reflect.Array");

try {
    $includeMasterSlides = true;
    $textFrames = SlideUtil::getAllTextFrames($presentation, $includeMasterSlides);
    $textFrameCount = java_values($arrayClass->getLength($textFrames));

    for ($textFrameIndex = 0; $textFrameIndex < $textFrameCount; $textFrameIndex++) {
        foreach ($textFrames[$textFrameIndex]->getParagraphs() as $paragraph) {
            foreach ($paragraph->getPortions() as $portion) {
                $portionText = $portion->getText();
                echo($portionText);

                $portionFormat = $portion->getPortionFormat();
                $fontHeight = $portionFormat->getFontHeight();
                echo($fontHeight);

                $latinFont = $portionFormat->getLatinFont();
                if (!java_is_null($latinFont)) {
                    $fontName = $latinFont->getFontName();
                    echo($fontName);
                }
            }
        }
    }
} finally {
    $presentation->dispose();
}

Kategorize Edilmiş ve Hızlı Metin Çıkarma

PresentationFactory sınıfı da sunumlardan tüm metni çıkarmak için metodlar sağlar:

PresentationText getPresentationText(String, int);
PresentationText getPresentationText(InputStream, int);
PresentationText getPresentationText(InputStream, int, LoadOptions);

TextExtractionArrangingMode enum argümanı, metin çıkarma sonucunun düzenlenme modunu gösterir ve aşağıdaki değerlere 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.

PresentationText sunumdan çıkarılan ham metni temsil eder. getSlidesText metodu, her nesnenin ilgili slayttaki metni temsil ettiği bir nesne dizisi döndürür. Döndürülen her nesnenin aşağıdaki metodları vardır:

  • getText - Slayt şekilleri içindeki metin.
  • getMasterText - Bu slaytla ilişkili ana slayt (master slide) şekilleri içindeki metin.
  • getLayoutText - Bu slaytla ilişkili düzen slaytı (layout slide) şekilleri içindeki metin.
  • getNotesText - Bu slaytla ilişkili not slaytı (notes slide) şekilleri içindeki metin.
  • getCommentsText - Bu slaytla ilişkili yorumlar içindeki metin.
$presentationPath = "presentation.ppt";
$arrangingMode = TextExtractionArrangingMode::Unarranged;
$presentationText = PresentationFactory::getInstance()->getPresentationText($presentationPath, $arrangingMode);
$slidesText = $presentationText->getSlidesText();
$firstSlideText = $slidesText[0];

echo($firstSlideText->getText());
echo($firstSlideText->getLayoutText());
echo($firstSlideText->getMasterText());
echo($firstSlideText->getNotesText());
echo($firstSlideText->getCommentsText());

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 grafikler gibi birçok slayt öğesinden metin çıkarabilir mi?

Evet. Aspose.Slides, tablolar ve grafiklerle ilgili nesneler dahil 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ı?

Metin çıkarmak için Aspose.Slides’ın ücretsiz deneme sürümünü kullanabilirsiniz, ancak bu sürüm belirli sınırlamalara sahiptir; örneğin yalnızca sınırlı sayıda slaytı işleyebilir. Sınırsız kullanım ve daha büyük sunumları işlemek için tam bir lisans satın almanız önerilir.