C++'ta Sunumları Açma

Giriş

Sıfırdan PowerPoint sunumları oluşturmanın yanı sıra, Aspose.Slides mevcut sunumları da açmanıza olanak tanır. Bir sunumu yükledikten sonra, onun hakkında bilgi alabilir, slayt içeriğini düzenleyebilir, yeni slaytlar ekleyebilir, mevcut slaytları kaldırabilir ve daha fazlasını yapabilirsiniz.

Sunumları Açma

Mevcut bir sunumu açmak için, Presentation sınıfının bir örneğini oluşturun ve dosya yolunu yapıcıya geçirin.

Aşağıdaki C++ örneği, bir sunumu nasıl açıp slayt sayısını nasıl alacağınızı gösterir:

// Presentation sınıfının bir örneğini oluşturun ve dosya yolunu yapıcıya geçiriniz.
auto presentation = MakeObject<Presentation>(u"Sample.pptx");

// Sunumdaki toplam slayt sayısını yazdır.
Console::WriteLine(presentation->get_Slides()->get_Count());

presentation->Dispose();

Şifreli Sunumları Açma

Şifre korumalı bir sunumu açmanız gerektiğinde, şifreyi LoadOptions sınıfının set_Password yöntemiyle geçirerek çözebilir ve yükleyebilirsiniz. Aşağıdaki C++ kodu bu işlemi gösterir:

auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_Password(u"YOUR_PASSWORD");

auto presentation = MakeObject<Presentation>(u"Sample.pptx", loadOptions);
    
// Şifrelenmiş sunum üzerinde işlemler gerçekleştir.

presentation->Dispose();

Büyük Sunumları Açma

Aspose.Slides, büyük sunumları yüklemenize yardımcı olmak için seçenekler—özellikle LoadOptions sınıfındaki get_BlobManagementOptions yöntemi—sağlar.

Aşağıdaki C++ kodu, büyük bir sunumu (örneğin 2 GB) nasıl yükleyeceğinizi gösterir:

auto filePath = u"LargePresentation.pptx";

auto loadOptions = MakeObject<LoadOptions>();
// KeepLocked davranışını seçin—sunum dosyası yaşam süresi boyunca kilitli kalacaktır
// Presentation örneği için, ancak belleğe yüklenmesi veya geçici bir dosyaya kopyalanması gerekmez.
loadOptions->get_BlobManagementOptions()->set_PresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);
loadOptions->get_BlobManagementOptions()->set_IsTemporaryFilesAllowed(true);
loadOptions->get_BlobManagementOptions()->set_MaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB

auto presentation = MakeObject<Presentation>(filePath, loadOptions);

// Büyük sunum yüklendi ve kullanılabilir, bellek tüketimi düşük kalır.

// Sunumda değişiklikler yapın.
presentation->get_Slide(0)->set_Name(u"Large presentation");

// Sunumu başka bir dosyaya kaydedin. Bu işlem sırasında bellek tüketimi düşük kalır.
presentation->Save(u"LargePresentation-copy.pptx", SaveFormat::Pptx);

// Bunu yapmayın! Dosya, sunum nesnesi bertaraf edilene kadar kilitli olduğu için bir I/O istisnası fırlatılacak.
File::Delete(filePath);

presentation->Dispose();

// Burada yapmak uygundur. Kaynak dosya artık sunum nesnesi tarafından kilitli değil.
File::Delete(filePath);

Harici Kaynakları Kontrol Etme

Aspose.Slides, harici kaynakları yönetmenizi sağlayan IResourceLoadingCallback arabirimini sunar. Aşağıdaki C++ kodu, IResourceLoadingCallback arabirimini nasıl kullanacağınızı gösterir:

class ImageLoadingHandler : public IResourceLoadingCallback
{
public:
    ResourceLoadingAction ResourceLoading(SharedPtr<IResourceLoadingArgs> args) override
    {
        if (args->get_OriginalUri().EndsWith(u".jpg"))
        {
            try
            {
                // Yerine geçen bir resmi yükleyin.
                auto imageData = File::ReadAllBytes(u"aspose-logo.jpg");
                args->SetData(imageData);
                return ResourceLoadingAction::UserProvided;
            }
            catch (Exception&)
            {
                return ResourceLoadingAction::Skip;
            }
        }
        else if (args->get_OriginalUri().EndsWith(u".png"))
        {
            // Yerine geçen bir URL ayarlayın.
            args->set_Uri(u"http://www.google.com/images/logos/ps_logo2.png");
            return ResourceLoadingAction::Default;
        }

        // Diğer tüm resimleri atlayın.
        return ResourceLoadingAction::Skip;
    }
};
auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_ResourceLoadingCallback(MakeObject<ImageLoadingHandler>());

auto presentation = MakeObject<Presentation>(u"Sample.pptx", loadOptions);

Gömülü İkili Nesneler Olmadan Sunumları Yükleme

PowerPoint sunumu aşağıdaki türde gömülü ikili nesneler içerebilir:

ILoadOptions::set_DeleteEmbeddedBinaryObjects yöntemini kullanarak, gömülü ikili nesneler içermeyen bir sunumu yükleyebilirsiniz.

Bu yöntem, potansiyel olarak kötü amaçlı ikili içeriği kaldırmak için faydalıdır. Aşağıdaki C++ kodu, gömülü ikili içerik olmadan bir sunumu nasıl yükleyeceğinizi gösterir:

auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_DeleteEmbeddedBinaryObjects(true);

auto presentation = MakeObject<Presentation>(u"malware.ppt", loadOptions);

// Sunum üzerinde işlemler gerçekleştirin.

presentation->Dispose();

SSS

Bir dosyanın bozuk ve açılamaz olduğunu nasıl anlayabilirim?

Yükleme sırasında bir ayrıştırma/format doğrulama istisnası alırsınız. Bu tür hatalar genellikle geçersiz bir ZIP yapısı veya bozuk PowerPoint kayıtlarını belirtir.

Açarken gerekli yazı tipleri eksikse ne olur?

Dosya açılacaktır, ancak daha sonra rendering/export yazı tiplerini değiştirebilir. Çalışma zamanına yazı tipi ikamelerini yapılandırın veya gerekli yazı tiplerini ekleyin.

Açarken gömülü medya (video/ses) ne olur?

Bunlar sunum kaynakları olarak kullanılabilir hale gelir. Medya dış yollarla referanslanıyorsa, bu yolların ortamınızda erişilebilir olduğundan emin olun; aksi takdirde rendering/export medya dosyalarını atlayabilir.