C++'ta Sunumları Nasıl Yüklenir

C++'ta Sunumları Nasıl Yüklenir

Aspose.Slides FOSS for C++ herhangi bir .pptx dosyasını açmanıza, içeriğini incelemenize ve ya PPTX olarak geri kaydetmenize ya da verileri çıkarmanıza olanak tanır. Bu kılavuz bir dosya açmayı, slaytları yinelemeyi, şekil metnini okumayı ve kaydetmenin round‑tripping işlemini kapsar.

Adım Adım Kılavuz

Adım 1: Kütüphaneyi Derle ve Bağla

git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp && mkdir build && cd build
cmake .. && cmake --build .

Adım 2: Mevcut Bir Sunumu Aç

Dosya yolunu Presentation constructor’ına geçirin. Destructor temizlik işlemlerini gerçekleştirir.

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("input.pptx");
    std::cout << "Slide count: " << prs.slides().size() << "\n";
    prs.save("output.pptx", asf::SaveFormat::PPTX);
    return 0;
}

Kaynak dosyadaki bilinmeyen XML bölümleri olduğu gibi korunur: kütüphane henüz anlayamadığı içeriği asla kaldırmaz.


Adım 3: Slaytları İncele

Tüm slaytlar üzerinde yineleyin ve şekil sayısını yazdırın:

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("deck.pptx");
    for (size_t i = 0; i < prs.slides().size(); ++i) {
        auto& slide = prs.slides()[i];
        std::cout << "Slide " << i << ": "
                  << slide.shapes().size() << " shapes\n";
    }
    return 0;
}

Adım 4: Şekil Metnini Oku

Şekiller üzerinde yineleme yapın ve TextFrame içeren şekillerden metni okuyun:

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("deck.pptx");
    for (size_t i = 0; i < prs.slides().size(); ++i) {
        auto& slide = prs.slides()[i];
        for (size_t j = 0; j < slide.shapes().size(); ++j) {
            auto& shape = slide.shapes()[j];
            if (shape.has_text_frame()) {
                auto text = shape.text_frame()->text();
                if (!text.empty()) {
                    std::cout << "  Shape text: " << text << "\n";
                }
            }
        }
    }
    return 0;
}

Adım 5: Belge Özelliklerini Oku

prs.document_properties() üzerinden temel belge özelliklerine erişin:

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("deck.pptx");
    auto& props = prs.document_properties();
    std::cout << "Title:   " << props.title() << "\n";
    std::cout << "Author:  " << props.author() << "\n";
    std::cout << "Subject: " << props.subject() << "\n";
    return 0;
}

Adım 6: Gidiş-Dönüş Kaydet

Sunumu inceleyip veya değiştirdikten sonra, PPTX olarak kaydedin:

prs.save("output.pptx", asf::SaveFormat::PPTX);

Farklı bir yola kaydetmek yeni bir dosya oluşturur. Aynı yola kaydetmek ise orijinali üzerine yazar.


Yaygın Sorunlar ve Çözümler

Dosya bulunamadı veya açılamıyor

Çalışma dizinine göre .pptx dosyasının yolunun doğru olduğundan emin olun. Sağlam yol oluşturma için std::filesystem::path kullanın:

#include <filesystem>
auto path = std::filesystem::path(__FILE__).parent_path() / "assets" / "deck.pptx";
asf::Presentation prs(path.string());

İstisna: Dosya formatı desteklenmiyor

Kütüphane yalnızca .pptx (Office Open XML) destekler. Eski .ppt (ikili PowerPoint 97-2003) dosyaları desteklenmez.

Şeklin text_frame’i yok

Bazı şekiller (Connectors, PictureFrames, GroupShapes) bir metin çerçevesine sahip değildir. Metne erişmeden önce shape.has_text_frame() ile koruyun.


Sıkça Sorulan Sorular

Yükleme tüm orijinal içeriği korur mu?

Evet. Bilinmeyen XML bölümleri, çift yönlü kaydetme sırasında kelimesi kelimesine korunur. Kütüphane yalnızca anladığı belge modelinin bölümlerini serileştirir ve tanımadığı XML’i olduğu gibi geçirir.

Şifre korumalı bir PPTX dosyasını yükleyebilir miyim?

Şifre korumalı (şifrelenmiş) sunumlar bu sürümde desteklenmez.

Gömülü resimleri çıkarabilir miyim?

Görüntüler koleksiyonuna erişin: prs.images(), ImageCollection‘i döndürür. Her görüntünün ham görüntü verisini okumak için bir width(), height() ve binary_data() yöntemi vardır.

Bellek içi tampondan yükleme destekleniyor mu?

std::vector<uint8_t> veya std::istream üzerinden yükleme mevcut API’de sunulmamaktadır. Önce baytları geçici bir dosyaya yazın, ardından yolu Presentation yapıcısına geçirin.


Ayrıca Bakınız

 Türkçe