C++'ta Sunumları Açma

Giriş

Aspose.Slides for C++ dosyalar ve akışlardan PowerPoint ve OpenDocument sunumlarını yükleyebilir. Bir sunum yüklendikten sonra, yapısını inceleyebilir, slaytları düzenleyebilir, kaynakları yönetebilir ve orijinal ya da başka desteklenen bir formatta kaydedebilirsiniz.

Yükleme davranışı, LoadOptions sınıfı aracılığıyla özelleştirilebilir. Örneğin, bir açma parolası sağlayabilir, büyük ikili nesneleri bellek dışına tutabilir, dış kaynakları kontrol edebilir veya gömülü ikili verileri atlayabilirsiniz.

Sunumları Açma

Mevcut bir sunumu açmak için, dosya yolunu Presentation yapıcısına geçirin. Sunumu kullandıktan sonra, dosya tutamaçları, geçici veriler ve diğer kaynakların hemen serbest bırakılması için dispose edin.

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

#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <system/console.h>

using namespace Aspose::Slides;
using namespace System;

auto presentation = MakeObject<Presentation>(u"sample.pptx");

Console::WriteLine(u"Slide count: {0}", presentation->get_Slides()->get_Count());

presentation->Dispose();

Parola Koruması Olan Sunumları Açma

Açma parolası, sunum içeriğini şifreler. Sunumu tamamen yüklemek için, doğru parolayı LoadOptions::set_Password metoduna geçirin ve seçenekleri Presentation yapıcısına gönderin. Parola eksik veya yanlış olduğunda yükleme başarısız olur.

#include <DOM/ISlideCollection.h>
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <system/console.h>

using namespace Aspose::Slides;
using namespace System;

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

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

Console::WriteLine(u"Slide count: {0}", presentation->get_Slides()->get_Count());

presentation->Dispose();

Parola algılama, doğrulama ve şifreleme iş akışları için, Password-Protect Presentations sayfasına bakın. Şifreli bir sunum, kasıtlı olarak genel belge özellikleriyle kaydedildiyse, bu özellikler parola olmadan okunabilir; Manage Presentation Properties bölümüne bakın.

Büyük Sunumları Açma

LoadOptions::get_BlobManagementOptions Aspose.Slides’in görüntüler, ses ve video gibi büyük ikili nesneleri nasıl yönettiğini kontrol eder. Kaynak dosyayı kilitli tutabilir, geçici dosyalara izin verebilir ve bellekte tutulan BLOB veri miktarını sınırlayabilirsiniz.

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

#include <DOM/ISlide.h>
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <IBlobManagementOptions.h>
#include <PresentationLockingBehavior.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;

const String filePath = u"large-presentation.pptx";

auto loadOptions = MakeObject<LoadOptions>();
auto blobOptions = loadOptions->get_BlobManagementOptions();
blobOptions->set_PresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);
blobOptions->set_IsTemporaryFilesAllowed(true);
blobOptions->set_MaxBlobsBytesInMemory(10 * 1024 * 1024);

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

presentation->get_Slide(0)->set_Name(u"Large presentation");
presentation->Save(u"large-presentation-copy.pptx", SaveFormat::Pptx);

presentation->Dispose();

Harici Kaynakları Kontrol Etme

LoadOptions::set_ResourceLoadingCallback bir IResourceLoadingCallback uygulamasını kabul eder. Geri arama, yerine geçecek veri sağlayabilir, bir kaynağı yönlendirebilir, varsayılan yükleyiciyi kullanabilir veya kaynağı atlayabilir. Bu, sunumların uygulamaya özgü güvenlik veya depolama kurallarına göre çözülmesi gereken harici görüntüler içermesi durumunda faydalıdır.

#include <DOM/ISlideCollection.h>
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <IResourceLoadingArgs.h>
#include <IResourceLoadingCallback.h>
#include <ResourceLoadingAction.h>
#include <system/console.h>
#include <system/io/file.h>
#include <system/string_comparison.h>

using namespace Aspose::Slides;
using namespace System;
using namespace System::IO;

class ImageLoadingHandler : public IResourceLoadingCallback
{
public:
    ResourceLoadingAction ResourceLoading(SharedPtr<IResourceLoadingArgs> args) override
    {
        auto isJpeg = args->get_OriginalUri().EndsWith(u".jpg", StringComparison::OrdinalIgnoreCase);
        if (!isJpeg || !File::Exists(u"approved-image.jpg"))
        {
            return ResourceLoadingAction::Skip;
        }

        auto imageData = File::ReadAllBytes(u"approved-image.jpg");
        args->SetData(imageData);
        return ResourceLoadingAction::UserProvided;
    }
};

auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_ResourceLoadingCallback(MakeObject<ImageLoadingHandler>());

auto presentation = MakeObject<Presentation>(u"presentation-with-external-images.pptx", loadOptions);
Console::WriteLine(u"Slide count: {0}", presentation->get_Slides()->get_Count());

presentation->Dispose();

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

Bir sunum, uygulamanın ihtiyaç duymadığı veya tutmak istemediği gömülü ikili veriler içerebilir. Örnekler:

Bu ikili verileri yükleme sırasında kaldırmak için LoadOptions::set_DeleteEmbeddedBinaryObjects metoduna true gönderin. Temizlenmiş sonucu korumak için yüklü sunumu kaydedin.

Bu seçenek, istenmeyen gömülü yüklemelere maruziyeti azaltır, ancak tam bir kötü amaçlı yazılım tespiti veya içerik temizleme sistemi değildir.

#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;

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

auto presentation = MakeObject<Presentation>(u"presentation-with-embedded-data.pptx", loadOptions);

presentation->Save(u"presentation-without-embedded-data.pptx", SaveFormat::Pptx);

presentation->Dispose();

SSS

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

Aspose.Slides, yükleme sırasında bir ayrıştırma veya format istisnası fırlatır. Bu hatayı yanlış parola hatasından ayrı ele alın, böylece uygulama nedeni doğru bir şekilde raporlayabilir.

Gerekli yazı tipleri eksikse ne olur?

Sunum yine de yüklenebilir, ancak renderleme ve dışa aktarma yazı tiplerini değiştirebilir. Çıktıyı daha öngörülebilir hâle getirmek için configure font substitution ya da provide custom fonts sayfalarını kullanabilirsiniz.

Bir sunumu yüklemek aynı zamanda gömülü medyasını da yükler mi?

Gömülü ses ve video, sunum nesne modeli üzerinden kullanılabilir hâle gelir. Harici kaynaklar, yapılandırılmış kaynak yükleme davranışına göre çözülür ve konumlarına erişilemezse kullanılamaz olabilir.