Časté otázky
Časté otázky
Jak vytvořit a propojit Aspose.Slides FOSS pro C++?
K přidání knihovny do projektu použijte CMake FetchContent. Je nutná C++20 nebo novější verze.
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)Není požadován žádný Microsoft Office nebo jiný systémový runtime.
Proč musím používat RAII s Presentation?
Úřad pro bezpečnost a ochranu zdraví Presentation třída spravuje vnitřní zdroje XML. Když objekt vyjde z rozsahu, jeho destruktor tyto zdroje uvolňuje. Vyhněte se alokaci interního XML-u. Presentation s: new bez chytrého ukazatele; použijte přidělování souboru nebo std::unique_ptr zajistit čištění.
Vždy sledujte tento vzor:
#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;
}Do jakých formátů souborů mohu uložit?
Úřad pro bezpečnost a ochranu zdraví SaveFormat enum definuje konstanty pro mnoho formátů PPTX, PDF, HTML, SVG, JPEG, PNG, a další pro kompatibilitu API s komerční verzí. Při spuštění této edice FOSS všechny save() volání ignorovat argument formátu a vždy psát výstup PPTX. Procházení SaveFormat::PDF správně kompiluje, ale vytváří .pptx soubor, ne .pdf.
prs.save("output.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);Export do jiných formátů než PPTX není funkčně k dispozici v této edici. Použijte SaveFormat::PPTX pro všechny operace záchrany.
Můžu otevřít ? .ppt (starý PowerPoint 97-2003) soubory?
Ne, jen… .pptx (Office Open XML) soubory jsou podporovány. Legacy .ppt binární formát není obsluhován touto knihovnou.
Jak se dostanu k diapozitivům?
Slide je nulová sbírka přístupná prostřednictvím prs.slides():
auto& slides = prs.slides();
auto& first_slide = slides[0];
auto count = slides.size();Jak přidat druhý slide?
Použití: prs.slides().add_empty_slide() s rozvržením:
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);Jak nastavit barvu pozadí snímku?
Barva pozadí diapozitivů není zobrazena v aktuálním API. BaseSlide a) Slide nemáte žádnou background() Tato funkce není k dispozici v tomto vydání knihovny.
Jak to mám použít? NullableBool?
NullableBool je trojstátní enum používané pro formátování vlastností. Use NullableBool::TRUE (ne C++) true) pro tlusté, kurzivní a podobné vlastnosti:
#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);
Proč nastavení barvy textu nemá žádný účinek?
Musíte také nastavit fill_type na … SOLID před přiřazením barvy:
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));Můžu použít grafy nebo SmartArt?
Ne. V této edici nejsou implementovány grafy, SmartArt, objekty OLE, animace, přechody, hypertextové odkazy, makry VBA a digitální podpisy.
Je tato knihovna bezpečná?
Každá. Presentation Objekt je nezávislý. Vytvoření a použití samostatných Presentation instanci z samostatných nití je bezpečné, pokud nesdílíte jediný Presentation objekt přes nitky bez vnějšího zablokování.
Jak začlenit obrázek?
Přečtěte si byty obrázku a přidejte je do prs.images(), pak vytvořit 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);