Часто задаваемые вопросы
Часто задаваемые вопросы
Как собрать и связать Aspose.Slides FOSS для C++?
Используйте CMake FetchContent, чтобы добавить библиотеку в ваш проект. Требуется C++20 или новее.
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)Не требуется Microsoft Office или другие системные среды выполнения.
Почему я должен использовать RAII с Presentation?
Класс Presentation управляет внутренними XML‑ресурсами. Когда объект выходит из области видимости, его деструктор освобождает эти ресурсы. Избегайте выделения Presentation с помощью new без умного указателя; используйте стековое выделение или std::unique_ptr для обеспечения очистки.
Всегда следуйте этому шаблону:
#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;
}В какие форматы файлов я могу сохранять?
Поддерживается только PPTX:
prs.save("output.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);Экспорт в PDF, HTML, SVG или форматы изображений (PNG, JPEG) недоступен в этой версии.
Могу ли я открыть файлы .ppt (old PowerPoint 97-2003)?
Нет. Поддерживаются только файлы .pptx (Office Open XML). Устаревший двоичный формат .ppt не обрабатывается этой библиотекой.
Как получить доступ к слайдам?
Слайды — это коллекция с нулевой индексацией, доступная через prs.slides():
auto& slides = prs.slides();
auto& first_slide = slides[0];
auto count = slides.size();Как добавить второй слайд?
Используйте prs.slides().add_empty_slide() с макетом:
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);Как установить цвет фона слайда?
Цвет фона слайда не доступен в текущем API. BaseSlide и Slide не имеют метода background(). Эта функция недоступна в этой версии библиотеки.
Как использовать NullableBool?
NullableBool — это три-значный enum, используемый для свойств форматирования. Используйте NullableBool::TRUE (а не C++ true) для жирного, курсивного и подобных свойств:
#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);
Почему установка цвета текста не оказывает эффекта?
Вы также должны установить fill_type в SOLID перед назначением цвета:
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));Могу ли я использовать диаграммы или SmartArt?
Нет. Диаграммы, SmartArt, объекты OLE, анимации, переходы, гиперссылки, макросы VBA и цифровые подписи не реализованы в этом издании.
Является ли эта библиотека потокобезопасной?
Каждый объект Presentation независим. Создание и использование отдельных экземпляров Presentation из разных потоков безопасно, при условии, что вы не делите один объект Presentation между потоками без внешней блокировки.
Как вставить изображение?
Прочитайте байты изображения и добавьте их в prs.images(), затем создайте 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);