PHP'de Sunum Temalarını Yönet

Giriş

Bir sunum teması, tasarım öğelerinin özelliklerini tanımlar. Bir sunum teması seçtiğinizde, temelde belirli bir görsel öğe kümesini ve bunların özelliklerini seçmiş olursunuz.

PowerPoint’te bir tema renkler, fontlar, arkaplan stilleri ve efektlerden oluşur.

theme-constituents

Tema Rengini Değiştir

PowerPoint teması, slayttaki farklı öğeler için belirli bir renk kümesi kullanır. Renkleri beğenmezseniz, tema için yeni renkler uygulayarak değiştirebilirsiniz. Yeni bir tema rengi seçebilmeniz için Aspose.Slides, SchemeColor enum’unda değerler sağlar.

Bu PHP kodu, bir tema için vurgu rengini nasıl değiştireceğinizi gösterir:

  $pres = new Presentation();
  try {
    $shape = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 10, 100, 100);
    $shape->getFillFormat()->setFillType(FillType::Solid);
    $shape->getFillFormat()->getSolidFillColor()->setSchemeColor(SchemeColor->Accent4);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Bu şekilde ortaya çıkan rengin etkili değerini belirleyebilirsiniz:

  $fillEffective = $shape->getFillFormat()->getEffective();
  $effectiveColor = $fillEffective->getSolidFillColor();
  echo(sprintf("Color [A=%d, R=%d, G=%d, B=%d]", $effectiveColor->getAlpha(), $effectiveColor->getRed(), $effectiveColor->getGreen(), $effectiveColor->getBlue()));

Renk değişikliği işlemini daha da göstermek için başka bir öğe oluşturup ona (ilk işlemden gelen) vurgu rengini atarız. Ardından temadaki rengi değiştiririz:

  $otherShape = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 120, 100, 100);
  $otherShape->getFillFormat()->setFillType(FillType::Solid);
  $otherShape->getFillFormat()->getSolidFillColor()->setSchemeColor(SchemeColor->Accent4);
  $pres->getMasterTheme()->getColorScheme()->getAccent4()->setColor(java("java.awt.Color")->RED);

Yeni renk her iki öğeye de otomatik olarak uygulanır.

Ek Paletten Tema Rengini Ayarla

Ana tema rengine (1) parlaklık dönüşümleri uyguladığınızda, ek paletten (2) renkler oluşur. Bu tema renklerini daha sonra ayarlayabilir ve alabilirsiniz.

additional-palette-colors

1 - Ana tema renkleri

2 - Ek paletten renkler.

Bu PHP kodu, ek palet renklerinin ana tema renginden elde edilip şekillerde kullanılmasını gösterir:

  $presentation = new Presentation();
  try {
    $slide = $presentation->getSlides()->get_Item(0);
    # Vurgu 4
    $shape1 = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 10, 50, 50);
    $shape1->getFillFormat()->setFillType(FillType::Solid);
    $shape1->getFillFormat()->getSolidFillColor()->setSchemeColor(SchemeColor->Accent4);
    # Vurgu 4, %80 daha açık
    $shape2 = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 70, 50, 50);
    $shape2->getFillFormat()->setFillType(FillType::Solid);
    $shape2->getFillFormat()->getSolidFillColor()->setSchemeColor(SchemeColor->Accent4);
    $shape2->getFillFormat()->getSolidFillColor()->getColorTransform()->add(ColorTransformOperation->MultiplyLuminance, 0.2);
    $shape2->getFillFormat()->getSolidFillColor()->getColorTransform()->add(ColorTransformOperation->AddLuminance, 0.8);
    # Vurgu 4, %60 daha açık
    $shape3 = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 130, 50, 50);
    $shape3->getFillFormat()->setFillType(FillType::Solid);
    $shape3->getFillFormat()->getSolidFillColor()->setSchemeColor(SchemeColor->Accent4);
    $shape3->getFillFormat()->getSolidFillColor()->getColorTransform()->add(ColorTransformOperation->MultiplyLuminance, 0.4);
    $shape3->getFillFormat()->getSolidFillColor()->getColorTransform()->add(ColorTransformOperation->AddLuminance, 0.6);
    # Vurgu 4, %40 daha açık
    $shape4 = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 190, 50, 50);
    $shape4->getFillFormat()->setFillType(FillType::Solid);
    $shape4->getFillFormat()->getSolidFillColor()->setSchemeColor(SchemeColor->Accent4);
    $shape4->getFillFormat()->getSolidFillColor()->getColorTransform()->add(ColorTransformOperation->MultiplyLuminance, 0.6);
    $shape4->getFillFormat()->getSolidFillColor()->getColorTransform()->add(ColorTransformOperation->AddLuminance, 0.4);
    # Vurgu 4, %25 daha koyu
    $shape5 = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 250, 50, 50);
    $shape5->getFillFormat()->setFillType(FillType::Solid);
    $shape5->getFillFormat()->getSolidFillColor()->setSchemeColor(SchemeColor->Accent4);
    $shape5->getFillFormat()->getSolidFillColor()->getColorTransform()->add(ColorTransformOperation->MultiplyLuminance, 0.75);
    # Vurgu 4, %50 daha koyu
    $shape6 = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 310, 50, 50);
    $shape6->getFillFormat()->setFillType(FillType::Solid);
    $shape6->getFillFormat()->getSolidFillColor()->setSchemeColor(SchemeColor->Accent4);
    $shape6->getFillFormat()->getSolidFillColor()->getColorTransform()->add(ColorTransformOperation->MultiplyLuminance, 0.5);
    $presentation->save($path . "example_accent4.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($presentation)) {
      $presentation->dispose();
    }
  }

SchemeColor‘ı ColorScheme Renklerine Eşleştir

SchemeColor ile çalışırken, aşağıdaki tema renk değerlerini içerdiğini fark edebilirsiniz:

Background1, Background2, Text1 ve Text2.

Ancak, Presentation::getMasterTheme()::getColorScheme() ColorScheme döndürür ve ilgili renkleri şu şekilde sunar:

Dark1, Dark2, Light1 ve Light2.

Bu fark yalnızca isimlendirmededir. Bu değerler aynı tema renk yuvalarına işaret eder ve eşleme sabittir:

  • Text1 = Dark1
  • Background1 = Light1
  • Text2 = Dark2
  • Background2 = Light2

Text/Background ile Dark/Light arasında dinamik bir dönüşüm yoktur. Bunlar aynı tema renklerinin sadece alternatif adlarıdır.

Bu adlandırma farkı Microsoft Office terminolojisinden gelir. Eski Office sürümleri Dark 1, Light 1, Dark 2 ve Light 2 kullanırken, yeni UI sürümleri aynı yuvaları Text 1, Background 1, Text 2 ve Background 2 olarak gösterir.

Tema Yazı Tipini Değiştir

Tema ve diğer amaçlar için yazı tiplerini seçebilmeniz için Aspose.Slides bu özel tanımlayıcıları (PowerPoint’te kullanılanlara benzer) kullanır:

  • +mn-lt - Gövde Yazı Tipi Latin (Küçük Latin Yazı Tipi)
  • +mj-lt - Başlık Yazı Tipi Latin (Büyük Latin Yazı Tipi)
  • +mn-ea - Gövde Yazı Tipi Doğu Asya (Küçük Doğu Asya Yazı Tipi)
  • +mj-ea - Başlık Yazı Tipi Doğu Asya (Büyük Doğu Asya Yazı Tipi)

Bu PHP kodu, Latin yazı tipini bir tema öğesine nasıl atayacağınızı gösterir:

  $shape = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, 10, 10, 100, 100);
  $paragraph = new Paragraph();
  $portion = new Portion("Theme text format");
  $paragraph->getPortions()->add($portion);
  $shape->getTextFrame()->getParagraphs()->add($paragraph);
  $portion->getPortionFormat()->setLatinFont(new FontData("+mn-lt"));

Bu PHP kodu, sunum teması yazı tipini nasıl değiştireceğinizi gösterir:

  $pres->getMasterTheme()->getFontScheme()->getMinor()->setLatinFont(new FontData("Arial"));

Tüm metin kutularındaki yazı tipi güncellenecek.

Tema Arkaplan Stilini Değiştir

Varsayılan olarak, PowerPoint uygulaması 12 önceden tanımlı arka plan sunar ancak tipik bir sunumda bu 12 arka plandan yalnızca 3 tanesi kaydedilir.

todo:image_alt_text

Örneğin, PowerPoint uygulamasında bir sunumu kaydettikten sonra, bu PHP kodunu çalıştırarak sunumdaki önceden tanımlı arka plan sayısını öğrenebilirsiniz:

  $pres = new Presentation("pres.pptx");
  try {
    $numberOfBackgroundFills = $pres->getMasterTheme()->getFormatScheme()->getBackgroundFillStyles()->size();
    echo("Number of background fill styles for theme is " . $numberOfBackgroundFills);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Bu PHP kodu, bir sunumun arka planını nasıl ayarlayacağınızı gösterir:

  $pres->getMasters()->get_Item(0)->getBackground()->setStyleIndex(2);

Dizin rehberi: 0 dolgu yok anlamında kullanılır. Dizin 1’den başlar.

Tema Efektini Değiştir

PowerPoint teması genellikle her stil dizisi için 3 değer içerir. Bu diziler, üç etkiyle birleştirilir: hafif, orta ve yoğun. Örneğin, efektler belirli bir şekle uygulandığında ortaya çıkan sonuç şu şekildedir:

todo:image_alt_text

FormatScheme sınıfının 3 özelliğini (FillStyles, LineStyles, EffectStyles) kullanarak bir temadaki öğeleri değiştirebilirsiniz (PowerPoint seçeneklerinden daha esnek bir şekilde).

Bu PHP kodu, öğelerin bölümlerini değiştirerek bir tema efektini nasıl değiştireceğinizi gösterir:

  $pres = new Presentation("Subtle_Moderate_Intense.pptx");
  try {
    $pres->getMasterTheme()->getFormatScheme()->getLineStyles()->get_Item(0)->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    $pres->getMasterTheme()->getFormatScheme()->getFillStyles()->get_Item(2)->setFillType(FillType::Solid);
    $pres->getMasterTheme()->getFormatScheme()->getFillStyles()->get_Item(2)->getSolidFillColor()->setColor(java("java.awt.Color")->GREEN);
    $pres->getMasterTheme()->getFormatScheme()->getEffectStyles()->get_Item(2)->getEffectFormat()->getOuterShadowEffect()->setDistance(10.0);
    $pres->save("Design_04_Subtle_Moderate_Intense-out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Dolgu rengi, dolgu türü, gölge etkisi vb. üzerindeki sonuçtaki değişiklikler:

todo:image_alt_text

SSS

Bir temayı, ustayı (master) değiştirmeden tek bir slayta uygulayabilir miyim?
Evet. Aspose.Slides, slayt düzeyinde tema geçersiz kılmalarını destekler, böylece master temayı bozmadan yalnızca o slayta yerel bir tema uygulayabilirsiniz (SlideThemeManager aracılığıyla).

Bir temayı bir sunumdan diğerine taşımanın en güvenli yolu nedir?
Slide’ları klonla hedef sunuma masterlarıyla birlikte kopyalayın. Bu, orijinal master, yerleşim düzenlerini ve ilişkili temayı korur, böylece görünüm tutarlı kalır.

Tüm kalıtım ve geçersiz kılmalar sonrasında “etkili” değerleri nasıl görebilirim?
API’nin tema/renk/yazı tipi/efekt için “effective” görünümlerini kullanın. Bunlar, master ve yerel geçersiz kılmaların uygulanmasından sonra çözümlenmiş, son özellikleri döndürür.