Поширені запитання

Поширені запитання

Поширені запитання

Як зібрати та підключити 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 або інший системний runtime.


Чому я повинен використовувати 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 — це тристатний 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);

Дивіться також

 Українська