Các tính năng và khả năng

Các tính năng và khả năng

Aspose.Slides FOSS for C++ provides a broad set of capabilities for working with PowerPoint .pptx các tệp một cách lập trình. Trang này liệt kê tất cả các khu vực tính năng được hỗ trợ cùng với các ví dụ mã đại diện.


Nhập/Xuất Bản trình chiếu

Mở một tệp hiện có .pptx tệp hoặc tạo một tệp mới, sau đó lưu lại dưới định dạng PPTX.

#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>

#include <iostream>

using namespace Aspose::Slides::Foss;

int main() {
    // Open an existing presentation
    {
        Presentation pres("input.pptx");
        std::cout << "Slide count: " << pres.slides().size() << std::endl;
        pres.save("output.pptx", SaveFormat::PPTX);
    }

    // Create a new presentation (starts with one blank slide)
    {
        Presentation pres;
        pres.save("new.pptx", SaveFormat::PPTX);
    }

    return 0;
}

Lưu ý: PPTX là định dạng lưu duy nhất được hỗ trợ. Xuất ra PDF, HTML, SVG, hoặc hình ảnh không khả dụng.

Các phần XML không xác định trong tệp nguồn được giữ nguyên khi lưu, vì vậy việc mở và lưu lại một .pptx sẽ không bao giờ loại bỏ nội dung mà thư viện chưa hiểu.


Quản lý Slide

Thêm, xóa, sao chép và sắp xếp lại các slide.

#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/layout_slide.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>

#include <iostream>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;

    // Access the first slide
    auto& slide = pres.slides()[0];

    // Add an additional blank slide at the end
    auto* layout = dynamic_cast<ILayoutSlide*>(&pres.layout_slides()[0]);
    pres.slides().add_empty_slide(layout);

    std::cout << "Total slides: " << pres.slides().size() << std::endl;
    pres.save("multi-slide.pptx", SaveFormat::PPTX);
    return 0;
}

Hình dạng

Thêm AutoShapes, PictureFrames, Tables và Connectors vào một slide.

AutoShapes

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];
    // Add a rectangle at (x=50, y=50) with width=300, height=100
    auto& shape = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 50, 50, 300, 100);
    shape.text_frame()->set_text("Aspose.Slides FOSS");
    pres.save("shapes.pptx", SaveFormat::PPTX);
    return 0;
}

Tables

#include <Aspose/Slides/Foss/cell.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/row.h>
#include <Aspose/Slides/Foss/row_collection.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/table.h>
#include <Aspose/Slides/Foss/text_frame.h>

#include <vector>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];
    // Column widths and row heights in points
    std::vector<double> col_widths = {120.0, 120.0, 120.0};
    std::vector<double> row_heights = {40.0, 40.0, 40.0};
    auto& table = slide.shapes().add_table(50, 50, col_widths, row_heights);
    table.rows()[0][0].text_frame()->set_text("Product");
    table.rows()[0][1].text_frame()->set_text("Quantity");
    table.rows()[0][2].text_frame()->set_text("Price");
    pres.save("table.pptx", SaveFormat::PPTX);
    return 0;
}

Connectors

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/connector.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];
    auto& box1 = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 50, 100, 150, 60);
    auto& box2 = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 350, 100, 150, 60);
    auto& conn = slide.shapes().add_connector(ShapeType::BENT_CONNECTOR3, 0, 0, 10, 10);
    conn.set_start_shape_connected_to(&box1);
    conn.set_start_shape_connection_site_index(3);  // right side
    conn.set_end_shape_connected_to(&box2);
    conn.set_end_shape_connection_site_index(1);    // left side
    pres.save("connector.pptx", SaveFormat::PPTX);
    return 0;
}

Định dạng Văn bản

Định dạng văn bản ở mức đoạn và ký tự bằng cách sử dụng PortionFormat.

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/nullable_bool.h>
#include <Aspose/Slides/Foss/paragraph.h>
#include <Aspose/Slides/Foss/paragraph_collection.h>
#include <Aspose/Slides/Foss/portion.h>
#include <Aspose/Slides/Foss/portion_collection.h>
#include <Aspose/Slides/Foss/portion_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>

using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];
    auto& shape = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 50, 50, 500, 150);
    shape.text_frame()->set_text("Bold blue heading");

    auto& fmt = shape.text_frame()->paragraphs()[0].portions()[0].portion_format();
    fmt.set_font_height(28);
    fmt.set_font_bold(NullableBool::TRUE);
    fmt.fill_format().set_fill_type(FillType::SOLID);
    fmt.fill_format().solid_fill_color().set_color(Color::from_argb(255, 0, 70, 127));

    pres.save("text.pptx", SaveFormat::PPTX);
    return 0;
}

NullableBool::TRUE đặt thuộc tính một cách rõ ràng; NullableBool::NOT_DEFINED kế thừa từ mẫu slide.


Các loại tô

Áp dụng tô màu đặc, gradient, họa tiết hoặc hình ảnh cho các hình dạng.

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>

using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];
    auto& shape = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 50, 50, 300, 150);

    // Solid fill
    shape.fill_format().set_fill_type(FillType::SOLID);
    shape.fill_format().solid_fill_color().set_color(Color::from_argb(255, 30, 120, 200));

    pres.save("fill.pptx", SaveFormat::PPTX);
    return 0;
}

Hiệu ứng trực quan

Áp dụng bóng ngoài, phát sáng, viền mềm, làm mờ, phản chiếu và bóng trong cho các hình dạng.

Các thuộc tính hiệu ứng có thể truy cập thông qua shape.effect_format(). Các đối tượng con được trả về bởi outer_shadow_effect(), glow_effect(), và các phương thức tương tự là con trỏ — gọi chúng với ->.

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/effect_format.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>

using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];
    auto& shape = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 100, 100, 200, 100);

    auto& ef = shape.effect_format();

    // Outer drop shadow
    ef.enable_outer_shadow_effect();
    auto* shadow = ef.outer_shadow_effect();
    shadow->set_blur_radius(10);
    shadow->set_direction(315);
    shadow->set_distance(8);
    shadow->shadow_color().set_color(Color::from_argb(128, 0, 0, 0));

    // Glow effect
    ef.enable_glow_effect();
    auto* glow = ef.glow_effect();
    glow->set_radius(15);
    glow->color().set_color(Color::from_argb(200, 255, 200, 0));

    pres.save("effects.pptx", SaveFormat::PPTX);
    return 0;
}

3D Formatting

Áp dụng viền 3D, camera, bộ đèn, vật liệu và độ sâu đùn qua shape.three_d_format(). Điều này kiểm soát độ sâu hình ảnh và mô hình chiếu sáng cho việc hiển thị hình dạng trong các trình xem PPTX hỗ trợ hiệu ứng 3D.

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/bevel_preset_type.h>
#include <Aspose/Slides/Foss/camera_preset_type.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/light_rig_preset_type.h>
#include <Aspose/Slides/Foss/lighting_direction.h>
#include <Aspose/Slides/Foss/material_preset_type.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/three_d_format.h>

using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];
    auto& shape = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 100, 100, 200, 100);

    shape.fill_format().set_fill_type(FillType::SOLID);
    shape.fill_format().solid_fill_color().set_color(Color::from_argb(255, 20, 70, 160));

    auto& tdf = shape.three_d_format();
    tdf.bevel_top().set_bevel_type(BevelPresetType::CIRCLE);
    tdf.bevel_top().set_width(10);
    tdf.bevel_top().set_height(5);
    tdf.camera().set_camera_type(CameraPresetType::PERSPECTIVE_ABOVE);
    tdf.light_rig().set_light_type(LightRigPresetType::BALANCED);
    tdf.light_rig().set_direction(LightingDirection::TOP);
    tdf.set_depth(20);
    tdf.set_material(MaterialPresetType::METAL);

    pres.save("3d.pptx", SaveFormat::PPTX);
    return 0;
}

Ghi chú người thuyết trình

Gắn ghi chú vào bất kỳ slide nào bằng cách sử dụng notes_slide_manager().

#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/i_notes_slide.h>
#include <Aspose/Slides/Foss/i_notes_slide_manager.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto* notes = pres.slides()[0].notes_slide_manager().add_notes_slide();
    notes->notes_text_frame().set_text("Key talking point: emphasize the ROI benefit.");
    pres.save("notes.pptx", SaveFormat::PPTX);
    return 0;
}

Bình luận

Thêm bình luận dạng chuỗi với thông tin tác giả và vị trí slide.

#include <Aspose/Slides/Foss/comment.h>
#include <Aspose/Slides/Foss/comment_author.h>
#include <Aspose/Slides/Foss/comment_author_collection.h>
#include <Aspose/Slides/Foss/comment_collection.h>
#include <Aspose/Slides/Foss/drawing/point_f.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>

#include <chrono>

using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation pres;
    auto& author = pres.comment_authors().add_author("Jane Smith", "JS");
    auto& slide = pres.slides()[0];
    author.comments().add_comment(
        "Please verify this data before the presentation.",
        slide,
        PointF(2.0f, 2.0f),
        std::chrono::system_clock::now()
    );
    pres.save("comments.pptx", SaveFormat::PPTX);
    return 0;
}

Hình ảnh nhúng

Nhúng một hình ảnh từ tệp vào bản trình chiếu và thêm nó vào slide dưới dạng PictureFrame.

#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/image_collection.h>
#include <Aspose/Slides/Foss/picture_frame.h>
#include <Aspose/Slides/Foss/pp_image.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>

#include <fstream>
#include <iterator>
#include <vector>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    // Read image bytes from file
    std::ifstream f("logo.png", std::ios::binary);
    std::vector<std::uint8_t> data(
        (std::istreambuf_iterator<char>(f)),
        std::istreambuf_iterator<char>());

    auto& img = pres.images().add_image(data);
    pres.slides()[0].shapes().add_picture_frame(
        ShapeType::RECTANGLE, 50, 50, 200, 150, img);
    pres.save("with-image.pptx", SaveFormat::PPTX);
    return 0;
}

Thuộc tính tài liệu

Đọc và ghi các thuộc tính tài liệu core, app và tùy chỉnh.

#include <Aspose/Slides/Foss/document_properties.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>

#include <any>
#include <string>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& props = pres.document_properties();

    // Core properties
    props.set_title("Q1 Results");
    props.set_author("Finance Team");
    props.set_subject("Quarterly Review");
    props.set_keywords("Q1, finance, results");

    // Custom property
    props.set_custom_property_value("ReviewedBy", std::any(std::string("Legal Team")));

    pres.save("deck.pptx", SaveFormat::PPTX);
    return 0;
}

Các hạn chế đã biết

Các khu vực sau không có trong phiên bản này:

Khu vựcTrạng thái
Biểu đồChưa triển khai
SmartArtChưa triển khai
Hoạt ảnh và chuyển đổiChưa triển khai
Xuất PDF / HTML / SVG / hình ảnhChưa triển khai (chỉ PPTX)
Macro VBAChưa triển khai
Chữ ký sốChưa triển khai
Liên kết và cài đặt hành độngChưa triển khai
Đối tượng OLEChưa triển khai
Văn bản toán họcChưa được triển khai

Xem Thêm

 Tiếng Việt