Често задавани въпроси
Често задавани въпроси
Как да изградя и свържа 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 (стари 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 е три-стойностен изброен тип, използван за свойства на форматирането. Използвайте 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);