C++'ta Sunum Açma

Giriş

Aspose.Slides for C++ PowerPoint ve OpenDocument sunumlarını dosyalardan ve akışlardan 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 belleğin dışında tutabilir, harici kaynakları kontrol edebilir ya da gömülü ikili verileri dışlayabilirsiniz.

Sunumları Açma

Bir dosya veya akış yüklendikten sonra, uygulamanızın nasıl işleyeceğini seçmek için orijinal sunum formatını belirleyebilirsiniz.

Mevcut bir sunumu açmak için, dosya yolunu Presentation oluşturucusuna geçirin. Kullanım sonrası sunumu dispose edin, böylece dosya tanıtıcıları, geçici veriler ve diğer kaynaklar hızla serbest bırakılır.

Aşağıdaki C++ örneği, bir sunumu nasıl açıp slayt sayısını 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. Tam sunumu yüklemek için doğru parolayı LoadOptions::set_Password metoduna geçirin ve seçenekleri Presentation oluşturucusuna iletin. Parola eksik veya hatalı 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 bölümüne bakın. Şifrelenmiş 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 resimler, ses ve video gibi büyük ikili nesneleri nasıl yönettiğini denetler. Kaynak dosyayı kilitli tutabilir, geçici dosyalara izin verebilir ve bellekte tutulacak BLOB verisi miktarını sınırlayabilirsiniz.

Aşağıdaki C++ kodu, büyük bir sunumu (örneğin 2 GB) yüklemeyi 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ğı yeniden 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örseller içerdiği durumlarda yararlı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 ihtiyacı olmayan veya tutmak istemediği gömülü ikili veri içerebilir. Örnekler:

Bu ikili verileri yükleme sırasında kaldırmak için LoadOptions::set_DeleteEmbeddedBinaryObjects metoduna true geçirin. Temizlenmiş sonucu kalıcı kılmak için yüklenen sunumu kaydedin.

Bu seçenek, istenmeyen gömülü yüklemelere maruziyeti azaltır, ancak tam bir kötü amaçlı yazılım tespit 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. Uygulamanın nedeni doğru şekilde raporlayabilmesi için bu hatayı yanlış parola hatasından ayrı şekilde ele alın.

Gerekli yazı tipleri eksikse ne olur?
Sunum yine de yüklenebilir, ancak renderleme ve dışa aktarma sırasında yazı tipleri değiştirilebilir. Çıktıyı daha öngörülebilir hâle getirmek için font ikamesini yapılandırabilir veya özel yazı tipleri sağlayabilirsiniz.

Bir sunumu yüklemek 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ılabilir olmayabilir.