Preguntas frecuentes
Preguntas Frecuentes
¿Cómo compilo y enlazo Aspose.Slides FOSS para C++?
Utilice CMake FetchContent para agregar la biblioteca a su proyecto. Se requiere C++20 o posterior.
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)No se requiere Microsoft Office ni otro tiempo de ejecución del sistema.
¿Por qué debo usar RAII con Presentation?
La clase Presentation gestiona recursos XML internos. Cuando el objeto sale del ámbito, su destructor libera esos recursos. Evite asignar un Presentation con new sin un puntero inteligente; use asignación en pila o std::unique_ptr para garantizar la limpieza.
Siempre sigue este patrón:
#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;
}¿En qué formatos de archivo puedo guardar?
Solo PPTX es compatible:
prs.save("output.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);Exportar a PDF, HTML, SVG o formatos de imagen (PNG, JPEG) no está disponible en esta edición.
¿Puedo abrir .ppt (archivos antiguos de PowerPoint 97-2003)?
No. Sólo los archivos .pptx (Office Open XML) son compatibles. El formato binario heredado .ppt no es manejado por esta biblioteca.
¿Cómo accedo a las diapositivas?
Las diapositivas son una colección indexada desde cero accesible a través de prs.slides():
auto& slides = prs.slides();
auto& first_slide = slides[0];
auto count = slides.size();¿Cómo añado una segunda diapositiva?
Utilice prs.slides().add_empty_slide() con un diseño:
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);¿Cómo establezco el color de fondo de la diapositiva?
El color de fondo de la diapositiva no está expuesto en la API actual. BaseSlide y Slide no tienen un método background(). Esta característica no está disponible en esta edición de la biblioteca.
¿Cómo utilizo NullableBool?
NullableBool es un enum de tres estados utilizado para propiedades de formato. Use NullableBool::TRUE (no C++ true) para negrita, cursiva y propiedades similares:
#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);
¿Por qué establecer el color del texto no tiene efecto?
También debe establecer fill_type a SOLID antes de asignar el color:
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));¿Puedo usar gráficos o SmartArt?
No. Los gráficos, SmartArt, objetos OLE, animaciones, transiciones, hipervínculos, macros VBA y firmas digitales no están implementados en esta edición.
¿Esta biblioteca es segura para subprocesos?
Cada objeto Presentation es independiente. Crear y usar instancias separadas de Presentation desde hilos diferentes es seguro siempre que no comparta un único objeto Presentation entre hilos sin un bloqueo externo.
¿Cómo incrusto una imagen?
Lea los bytes de la imagen y añádalos a prs.images(), luego cree 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);