คำถามที่พบบ่อย
คำถามที่พบบ่อย
ฉันจะสร้างและลิงก์ 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 ภายใน เมื่อวัตถุออกจากขอบเขต ตัวทำลาย (destructor) จะปล่อยทรัพยากรเหล่านั้น หลีกเลี่ยงการจัดสรร Presentation ด้วย new โดยไม่มี smart pointer; ใช้การจัดสรรบนสแตกหรือ 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);