Soalan Lazim
Soalan Lazim
Bagaimana saya membina dan memautkan Aspose.Slides FOSS untuk C++?
Gunakan CMake FetchContent untuk menambah perpustakaan ke dalam projek anda. C++20 atau lebih baru diperlukan.
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)Tiada Microsoft Office atau runtime sistem lain diperlukan.
Mengapa saya mesti menggunakan RAII dengan Presentation?
Kelas Presentation mengurus sumber XML dalaman. Apabila objek keluar dari skop, destruktornya melepaskan sumber tersebut. Elakkan memperuntukkan Presentation dengan new tanpa penunjuk pintar; gunakan peruntukan stack atau std::unique_ptr untuk memastikan pembersihan.
Sentiasa ikuti corak ini:
#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;
}Format fail apa yang boleh saya simpan?
Hanya PPTX disokong:
prs.save("output.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);Eksport ke PDF, HTML, SVG, atau format imej (PNG, JPEG) tidak tersedia dalam edisi ini.
Bolehkah saya membuka .ppt (PowerPoint lama 97-2003) fail?
Tidak. Hanya fail .pptx (Office Open XML) yang disokong. Format binari .ppt warisan tidak diuruskan oleh perpustakaan ini.
Bagaimana saya mengakses slaid?
Slaid adalah koleksi berasaskan sifar yang boleh diakses melalui prs.slides():
auto& slides = prs.slides();
auto& first_slide = slides[0];
auto count = slides.size();Bagaimana saya menambah slaid kedua?
Gunakan prs.slides().add_empty_slide() dengan susun atur:
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);Bagaimana saya menetapkan warna latar belakang slaid?
Warna latar belakang slaid tidak didedahkan dalam API semasa. BaseSlide dan Slide tidak mempunyai kaedah background(). Ciri ini tidak tersedia dalam edisi perpustakaan ini.
Bagaimana saya menggunakan NullableBool?
NullableBool ialah enum tiga keadaan yang digunakan untuk sifat pemformatan. Gunakan NullableBool::TRUE (bukan C++ true) untuk tebal, condong, dan sifat serupa:
#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);
Mengapa menetapkan warna teks tidak memberi kesan?
Anda juga mesti menetapkan fill_type kepada SOLID sebelum menetapkan warna:
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));Bolehkah saya menggunakan carta atau SmartArt?
Tidak. Carta, SmartArt, objek OLE, animasi, peralihan, pautan hiper, makro VBA, dan tandatangan digital tidak dilaksanakan dalam edisi ini.
Adakah perpustakaan ini selamat untuk penggunaan berbilang benang?
Setiap objek Presentation adalah bebas. Membuat dan menggunakan contoh Presentation yang berasingan dari thread berasingan adalah selamat selagi anda tidak berkongsi satu objek Presentation merentasi thread tanpa kunci luaran.
Bagaimana saya menyematkan imej?
Baca bait imej dan tambahkan ke prs.images(), kemudian cipta 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);