C++'ta Sunumları Nasıl Kaydedilir

C++'ta Sunumları Nasıl Kaydedilir

Aspose.Slides FOSS for C++ saves presentations exclusively to .pptx formatı kullanarak prs.save(path, SaveFormat::PPTX). Bu kılavuz doğru kaydetme desenini, farklı bir yola kaydetmeyi ve yaygın kaydetme ile ilgili hataları kapsar.

Adım Adım Kılavuz

Adım 1: Kütüphaneyi Derleyin ve Bağlayın

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: Bir Sunum Açın veya Oluşturun

Yıkıcı otomatik olarak temizleme yapması için yığın tahsisi kullanın. Çağırın save() nesne kapsam dışına çıkmadan önce.

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

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

    // Create new
    {
        asf::Presentation prs;
        prs.save("new.pptx", asf::SaveFormat::PPTX);
    }

    // Open existing
    {
        asf::Presentation prs("input.pptx");
        prs.save("output.pptx", asf::SaveFormat::PPTX);
    }

    return 0;
}

Adım 3: Tüm Değişikliklerden Sonra Kaydedin

Yerleştirin save() çağrıyı tüm değişiklikler tamamlandıktan sonra, ancak Presentation kapsam dışına çıkar.

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

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

    asf::Presentation prs;
    auto& slide = prs.slides()[0];
    auto& shape = slide.shapes().add_auto_shape(
        asf::ShapeType::RECTANGLE, 50, 50, 300, 100);
    shape.text_frame()->set_text("Hello, World!");
    prs.save("output.pptx", asf::SaveFormat::PPTX);
    return 0;
}

Adım 4: Farklı Bir Yola Kaydedin

Orijinali değiştirmeden yeni bir dosya oluşturmak için farklı bir çıktı yolu geçirin:

asf::Presentation prs("template.pptx");
// modify ...
prs.save("customized.pptx", asf::SaveFormat::PPTX);

Bu template.pptx dosya değiştirilmedi; customized.pptx oluşturulur (veya zaten mevcutsa üzerine yazılır).


Adım 5: Çıktıyı Doğrulayın

Kaydetmeden sonra dosyanın varlığını kontrol edin:

#include <filesystem>
#include <iostream>

auto output = std::filesystem::path("output.pptx");
std::cout << "Saved: " << std::filesystem::exists(output)
          << ", size: " << std::filesystem::file_size(output) << " bytes\n";

Desteklenen Kaydetme Formatı

BiçimEnum DeğeriDestekleniyor
PPTX (Office Open XML)SaveFormat::PPTXEvet
PDFN/AHayır
HTMLN/AHayır
SVGN/AHayır
PNG / JPEGN/AHayır
ODP (OpenDocument)N/AHayır

Yalnızca PPTX desteklenir. Başka bir formatta kaydetmeye çalışmak bir istisna fırlatır.


Yaygın Sorunlar ve Çözümler

Yazma sırasında izin reddedildi hatası

Çıktı dosyası başka bir uygulamada açık (ör. PowerPoint dosyayı açmış). Kaydetmeden önce dosyayı diğer uygulamalarda kapatın.

Dosya oluşturuldu ancak boş ya da bozuk görünüyor

Garantile prs.save() şu şeyden önce çağrılmalıdır Presentation nesne yok edilir. Yok edildikten sonra, iç durum serbest bırakılır ve sonraki çağrılar başarısız olur veya geçersiz çıktı üretir.

Kaydetme sırasında istisna

Bu, PPTX dışındaki bir kaydetme formatı denendiğinde veya kaydetme sırasında desteklenmeyen bir özellik (örneğin grafikler veya animasyonlar) kullanıldığında meydana gelir.


Sık Sorulan Sorular

Açtığım aynı dosyaya kaydedebilir miyim?

Evet. Aynı yola kaydetmek, orijinal dosyanın üzerine yazar:

asf::Presentation prs("deck.pptx");
// modify ...
prs.save("deck.pptx", asf::SaveFormat::PPTX); // overwrites original

Bir dosya yerine bellek tamponuna kaydedebilir miyim?

Doğrudan bir std::vector<uint8_t> veya std::ostream şu anda API’de desteklenmiyor. Geçici bir dosyaya kaydedin ve baytları okuyun:

#include <filesystem>
#include <fstream>
#include <vector>

auto tmp = std::filesystem::temp_directory_path() / "temp.pptx";
prs.save(tmp.string(), asf::SaveFormat::PPTX);

std::ifstream in(tmp, std::ios::binary);
std::vector<uint8_t> bytes((std::istreambuf_iterator<char>(in)),
                            std::istreambuf_iterator<char>());
std::filesystem::remove(tmp);

Kaydetme, değiştirmediğim içeriği korur mu?

Evet. Orijinal dosyadan gelen bilinmeyen XML bölümleri olduğu gibi korunur. Kütüphane yalnızca anladığı belge modeli bölümlerini serileştirir ve tanımadığı XML’i olduğu gibi geçirir.


Ayrıca Bakınız

 Türkçe