PHP'de Düşük Kodlu Sunum İşlemleri

Genel Bakış

aspose.slides ad alanı, ortak sunum işlemleri için statik yardımcı sınıflar sağlar. Bu yardımcılar, sık kullanılan nesne‑model iş akışlarını odaklanmış yöntemlerle sarmalar; böylece dosyaları dönüştürebilir veya birleştirebilir, sunum öğelerini işleyebilir, şekilleri toplayabilir ve kullanılmayan içeriği daha az kodla kaldırabilirsiniz.

Low-code yardımcılar, işlem tüm bir dosya veya sunum üzerine uygulandığında ve varsayılan iş akışı gereksinimlerinizi karşıladığında en yararlıdır. Bireysel slaytlar, master’lar, düzenler, şekiller, dışa aktarma ayarları veya sunum öğeleri arasındaki ilişkiler üzerinde ayrıntılı kontrol gerektiğinde tam Aspose.Slides nesne modelini kullanın.

Aşağıdaki tablo mevcut yardımcıların özetini sunar:

Yardımcı Kullanım Amacı
Convert Bir sunumu doğrudan dosyadan dosyaya çağrı ile başka bir biçime dönüştürme.
Merger Aynı formatta tam sunum dosyalarını birleştirme.
ForEach_ Her slayt, şekil, paragraf veya metin parçası için geri arama çalıştırma.
Collect Tekrar işleme veya analiz için tüm sunumdan şekilleri alma.
Compress Kullanılmayan master ve düzenleri kaldırma ve gömülü yazı tipi verilerini azaltma.

Bir Sunumu Dönüştürme

Convert::autoByExtension çıktının dosya uzantısının dışa aktarım biçimini seçmek için yeterli olduğu durumlarda kullanın. Yöntem kaynak sunumu açar, çıkış yolundan gerekli biçimi belirler ve sonucu yazar.

use aspose\slides\Convert;

Convert::autoByExtension("input.pptx", "output.pdf");

Convert sınıfı ayrıca PDF, SVG, JPEG, PNG ve TIFF çıktısı için özel yöntemler sağlar. Dışa aktarmadan önce sunumu incelemeniz veya değiştirmeniz gerektiğinde ya da seçili yardımcı tarafından sunulmamış bir dışa aktarım seçeneği yapılandırmanız gerektiğinde tam nesne modelini kullanın. Biçime özgü iş akışları ve seçenekler için Convert Presentation sayfasına bakın.

Sunumları Birleştirme

Merger::process tam sunum dosyalarını tek bir çağrıyla birleştirmek için kullanılır. Girdi sunumlarının aynı dosya biçimine sahip olması gerekir.

use aspose\slides\Merger;

$inputFiles = ["part-1.pptx", "part-2.pptx"];
Merger::process($inputFiles, "merged.pptx");

Tüm slaytların tek bir sonuca eklenmesi gerektiğinde ve bireysel olarak seçilip yeniden eşleştirilmesi gerekmediğinde bu yardımcı uygundur. Seçili slaytları birleştirmeniz, hedef bir master veya düzen uygulamanız, bölümleri açıkça korumanız veya farklı slayt boyutlarını uzlaştırmanız gerektiğinde tam nesne modelini kullanın. Bu senaryolar için Merge Presentations sayfasına bakın.

Sunum Öğeleri Üzerinde Dönme

ForEach_ sınıfı, istenen sunum öğesi türü için bir geri arama çağırır. İç içe koleksiyon döngülerini önler ve sunum geneli denetim veya biçimlendirme değişiklikleri için kullanışlıdır.

Aşağıdaki örnek, ilgili öğeleri incelemek için ForEach_::slide, ForEach_::shape, ForEach_::paragraph ve ForEach_::portion kullanır:

use aspose\slides\ForEach_;
use aspose\slides\Presentation;

class SlideCallback {
    public function invoke($slide, $index): void {
        $slideIndex = java_values($index);
        $shapeCount = java_values($slide->getShapes()->size());
        echo sprintf("Slide %d: %d shapes", $slideIndex, $shapeCount) . PHP_EOL;
    }
}

class ShapeCallback {
    public function invoke($shape, $slide, $index): void {
        $shapeIndex = java_values($index);
        $slideType = java_values($slide->getClass()->getSimpleName());
        $shapeName = java_values($shape->getName());
        echo sprintf("Shape %d on %s: %s", $shapeIndex, $slideType, $shapeName) . PHP_EOL;
    }
}

class ParagraphCallback {
    public function invoke($paragraph, $slide, $index): void {
        $paragraphIndex = java_values($index);
        $slideType = java_values($slide->getClass()->getSimpleName());
        $text = java_values($paragraph->getText());
        echo sprintf("Paragraph %d on %s: %s", $paragraphIndex, $slideType, $text) . PHP_EOL;
    }
}

class PortionCallback {
    public function invoke($portion, $paragraph, $slide, $index): void {
        $portionIndex = java_values($index);
        $slideType = java_values($slide->getClass()->getSimpleName());
        $text = java_values($portion->getText());
        echo sprintf("Portion %d on %s: %s", $portionIndex, $slideType, $text) . PHP_EOL;
    }
}

$presentation = new Presentation("input.pptx");
try {
    $slideCallback = java_closure(new SlideCallback(), null, java('com.aspose.slides.ForEach_$ForEachSlideCallback'));
    $shapeCallback = java_closure(new ShapeCallback(), null, java('com.aspose.slides.ForEach_$ForEachShapeCallback'));
    $paragraphCallback = java_closure(new ParagraphCallback(), null, java('com.aspose.slides.ForEach_$ForEachParagraphCallback'));
    $portionCallback = java_closure(new PortionCallback(), null, java('com.aspose.slides.ForEach_$ForEachPortionCallback'));

    ForEach_::slide($presentation, $slideCallback);
    ForEach_::shape($presentation, $shapeCallback);
    ForEach_::paragraph($presentation, $paragraphCallback);
    ForEach_::portion($presentation, $portionCallback);
} finally {
    $presentation->dispose();
}

Varsayılan olarak, sunum geneli şekil ve metin geçişi normal, master ve layout slaytlarını içerir. includeNotes parametresiyle aşırı yüklemeler not slaytlarını da işleyebilir. Geçiş sırası, erken çıkış, geri aramadan önce filtreleme veya ayrıntılı üst‑alt kontrolünün önemli olduğu durumlarda doğrudan koleksiyon döngüleri kullanın.

Şekilleri Toplama

Collect::shapes tüm sunumdaki şekillerin bir koleksiyonuna ihtiyacınız olduğunda ve her şekil için bir geri arama yerine bu koleksiyonu tekrar‑tekrar filtrelemek, saymak veya işlemek istediğinizde kullanın.

use aspose\slides\Collect;
use aspose\slides\Presentation;

$presentation = new Presentation("input.pptx");
try {
    $shapes = Collect::shapes($presentation);

    foreach ($shapes as $shape) {
        $shapeName = java_values($shape->getName());
        $shapeType = java_values($shape->getClass()->getSimpleName());
        echo sprintf("%s: %s", $shapeName, $shapeType) . PHP_EOL;
    }
} finally {
    $presentation->dispose();
}

Her şekil anında işlenebiliyorsa ve toplanan sonucu tutmanız gerekmiyorsa bunun yerine ForEach_::shape kullanın.

Sunum İçeriğini Sıkıştırma

Compress sınıfı kullanılmayan yapısal öğeleri kaldırabilir ve gömülü yazı tipi verilerini azaltabilir:

use aspose\slides\Compress;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("input.pptx");
try {
    Compress::removeUnusedLayoutSlides($presentation);
    Compress::removeUnusedMasterSlides($presentation);
    Compress::compressEmbeddedFonts($presentation);

    $presentation->save("compressed.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Kullanılmayan masterları da kaldırmak için önce kullanılmayan düzenleri kaldırın; böylece düzen temizliğinden sonra referanssız kalan bir master da silinebilir. Orijinal master, layout veya tam gömülü yazı tipi verilerine daha sonra ihtiyaç duyulabilecekse, optimize edilmiş sunumu yeni bir dosyaya kaydedin. Daha fazla ayrıntı için Slide Master ve Embedded Font sayfalarına bakın.

SSS

Low-code API’yi tam nesne modeline ne zaman kullanmalıyım?

Standart bir işlem tüm bir dosya veya sunum üzerine uygulandığında ve bireysel öğeler üzerinde ayrıntılı kontrol gerektirmediğinde low-code yardımcıları kullanın. Belirli slaytları seçmeniz, master‑layout ilişkilerini kontrol etmeniz, ara durumu incelemeniz veya yardımcı tarafından sunulmayan bir davranışı yapılandırmanız gerektiğinde tam nesne modelini tercih edin.

Merger farklı dosya biçimlerindeki sunumları birleştirebilir mi?

Hayır. Merger::process giriş sunumlarının aynı biçimde olmasını şart koşar. Önce giriş dosyalarını ortak bir biçime dönüştürün; örneğin Convert::autoByExtension kullanarak, ardından dönüştürülen dosyaları birleştirin.

**ForEach_ master, layout ve not slaytlarını işliyor mu?**

ForEach_::slide normal sunum slaytları üzerinde döner. Sunum geneli ForEach_::shape, ForEach_::paragraph ve ForEach_::portion işlemleri varsayılan olarak normal, master ve layout slaytlarını içerir. Not slaytlarını dahil etmek için includeNotes parametresini true olarak ayarlayan aşırı yüklemelerini kullanın.

**ForEach_::shape ile Collect::shapes arasındaki fark nedir?**

Her şekli anında bir geri arama ile işlemek istiyorsanız ForEach_::shape kullanın. Şekilleri daha sonra tutup filtreleyebileceğiniz, sayabileceğiniz veya birden çok kez dolaşabileceğiniz bir iterable sonuç gerektiğinde ise Collect::shapes tercih edin.

Compress sunum dosyasını her zaman küçültür mü?

Mutlaka değil. Sonuç, sunumda kullanılmayan layout’lar, kullanılmayan master’lar veya kullanılmayan karakterlere sahip gömülü yazı tiplerinin bulunup bulunmadığına bağlıdır. Bu öğeler yoksa ilgili Compress işlemleri dosya boyutunu azaltmayabilir.

**ForEach_ veya Compress tarafından yapılan değişiklikler otomatik olarak kaydedilir mi?**

Hayır. Bu yardımcılar bellekte yüklü Presentation nesnesi üzerinde çalışır. Bir ForEach_ geri aramasında ya da Compress çalıştırıldığında, sonucu yazmak için Presentation::save çağırmanız gerekir.

İlgili Makaleler