Domande frequenti
Domande Frequenti
Come posso compilare e collegare Aspose.Slides FOSS per C++?
Usa CMake FetchContent per aggiungere la libreria al tuo progetto. È richiesto C++20 o versioni successive.
cmake_minimum_required(VERSION 3.20)
project(my_app LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(
aspose_slides_foss
GIT_REPOSITORY https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
GIT_TAG main
)
FetchContent_MakeAvailable(aspose_slides_foss)
add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE aspose_slides_foss)Non è necessario Microsoft Office né altri runtime di sistema.
Perché devo usare RAII con Presentation?
La classe Presentation gestisce risorse XML interne. Quando l’oggetto esce dallo scope, il suo distruttore rilascia tali risorse. Evita di allocare un Presentation con new senza un puntatore intelligente; usa l’allocazione sullo stack o std::unique_ptr per garantire la pulizia.
Segui sempre questo modello:
#include <Aspose/Slides/Foss/presentation.h>
int main() {
Aspose::Slides::Foss::Presentation prs;
// work here
prs.save("output.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);
return 0;
}Quali formati di file posso salvare?
Solo PPTX è supportato:
prs.save("output.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);L’esportazione in PDF, HTML, SVG o formati immagine (PNG, JPEG) non è disponibile in questa edizione.
Posso aprire i file .ppt (vecchi PowerPoint 97-2003)?
No. Sono supportati solo i file .pptx (Office Open XML). Il formato binario legacy .ppt non è gestito da questa libreria.
Come accedo alle diapositive?
Le diapositive sono una collezione indicizzata a zero accessibile tramite prs.slides():
auto& slides = prs.slides();
auto& first_slide = slides[0];
auto count = slides.size();Come aggiungo una seconda diapositiva?
Usa prs.slides().add_empty_slide() con un layout:
Aspose::Slides::Foss::Presentation prs;
auto& layout = prs.layout_slides()[0];
prs.slides().add_empty_slide(&layout);
auto& slide2 = prs.slides()[1];
prs.save("two-slides.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);Come impostare il colore di sfondo della diapositiva?
Il colore di sfondo della diapositiva non è esposto nell’API corrente. BaseSlide e Slide non hanno un metodo background(). Questa funzionalità non è disponibile in questa edizione della libreria.
Come utilizzo NullableBool?
NullableBool è un enum a tre stati usato per le proprietà di formattazione. Usa NullableBool::TRUE (non C++ true) per grassetto, corsivo e proprietà simili:
#include <Aspose/Slides/Foss/presentation.h>
fmt.set_font_bold(Aspose::Slides::Foss::NullableBool::TRUE);
fmt.set_font_italic(Aspose::Slides::Foss::NullableBool::FALSE);
// Note: set_font_underline() takes TextUnderlineType, not NullableBool:
// fmt.set_font_underline(Aspose::Slides::Foss::TextUnderlineType::NONE);
Perché impostare il colore del testo non ha alcun effetto?
È necessario impostare anche fill_type su SOLID prima di assegnare il colore:
fmt.fill_format().set_fill_type(Aspose::Slides::Foss::FillType::SOLID);
fmt.fill_format().solid_fill_color().set_color(
Aspose::Slides::Foss::Color::from_argb(255, 200, 0, 0));Posso usare grafici o SmartArt?
No. Grafici, SmartArt, oggetti OLE, animazioni, transizioni, collegamenti ipertestuali, macro VBA e firme digitali non sono implementati in questa edizione.
Questa libreria è thread‑safe?
Ogni oggetto Presentation è indipendente. Creare e utilizzare istanze separate di Presentation da thread distinti è sicuro, purché non si condivida un singolo oggetto Presentation tra i thread senza un blocco esterno.
Come incorporo un’immagine?
Leggi i byte dell’immagine e aggiungili a prs.images(), quindi crea un PictureFrame:
#include <Aspose/Slides/Foss/presentation.h>
#include <fstream>
#include <vector>
std::ifstream file("logo.png", std::ios::binary);
std::vector<uint8_t> data((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>());
auto& image = prs.images().add_image(data);
slide.shapes().add_picture_frame(
Aspose::Slides::Foss::ShapeType::RECTANGLE, 50, 50, 200, 150, image);