C++'ta Sunumları Nasıl Yüklenir
Aspose.Slides FOSS for C++ lets you open any .pptx dosyayı, içeriğini inceleyin ve ya PPTX olarak geri kaydedin ya da verileri ondan çıkarın. Bu kılavuz, bir dosyanın açılmasını, slaytların döngüyle gezilmesini, şekil metninin okunmasını ve kaydetmenin geri dönüşümünü 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: Mevcut Bir Sunumu Aç
Dosya yolunu şuna aktarın Presentation yapıcı. Yıkıcı 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 anlamadığı içeriği asla kaldırmaz.
Adım 3: Slaytları İncele
Tüm slaytlar üzerinde döngü yapın ve şekil sayıları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 döngü yapın ve bir text frame sahip olan şekillerden metni okuyun. TextFrame:
#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
Temel belge özelliklerine şuradan erişin prs.document_properties():
#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: Döngüsel Kaydetme
Sunumu inceledikten veya değiştirdikten sonra, PPTX olarak geri kaydedin:
prs.save("output.pptx", asf::SaveFormat::PPTX);Farklı bir yola kaydetmek yeni bir dosya oluşturur. Aynı yola kaydetmek orijinali üzerine yazar.
Yaygın Sorunlar ve Çözümler
Dosya bulunamadı veya açılamıyor
Yolun … olduğundan emin olun .pptx dosyanın çalışma dizinine göre doğru olduğundan emin olun. Kullan std::filesystem::path sağlam yol oluşturma için:
#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 şunları destekler: .pptx (Office Open XML) yalnızca. Eski .ppt (binary PowerPoint 97-2003) dosyaları desteklenmez.
Şeklin text_frame’i yok
Bazı şekiller (Connectors, PictureFrames, GroupShapes) bir metin çerçevesine sahip değildir. Şununla koruyun shape.has_text_frame() metne erişmeden önce.
Sık Sorulan Sorular
Yükleme tüm orijinal içeriği koruyor mu?
Evet. Bilinmeyen XML bölümleri, çift yönlü kaydetmede olduğu gibi 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.
Şifre korumalı bir PPTX dosyasını yükleyebilir miyim?
Şifre korumalı (şifreli) sunumlar bu sürümde desteklenmez.
Gömülü görüntüleri çıkarabilir miyim?
Görseller koleksiyonuna erişin: prs.images() şunu döndürür: ImageCollection. Her görsel bir … içerir. width(), height(), ve binary_data() ham görüntü verisini okuma yöntemi.
Bellek içi bir tampondan yükleme destekleniyor mu?
bir kaynaktan yükleme std::vector<uint8_t> veya std::istream mevcut API’de ortaya çıkarılmamış. Baytları önce geçici bir dosyaya yazın, ardından yolu Presentation yapıcıya.