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çim | Enum Değeri | Destekleniyor |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat::PPTX | Evet |
| N/A | Hayır | |
| HTML | N/A | Hayır |
| SVG | N/A | Hayır |
| PNG / JPEG | N/A | Hayır |
| ODP (OpenDocument) | N/A | Hayı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.