Kết hợp hiệu quả các bản trình bày trong C++

Tổng quan

Aspose.Slides cho phép bạn hợp nhất các bản trình bày bằng cách sao chép các slide từ một bản trình bày sang bản khác. Bài viết này giải thích cách hợp nhất toàn bộ bản trình bày hoặc các slide được chọn, sử dụng slide master hoặc bố cục cụ thể trong quá trình hợp nhất, xử lý các bản trình bày có kích thước slide khác nhau, và thêm các slide đã hợp nhất vào một phần của bản trình bày. Nó cũng đề cập đến các lưu ý thực tiễn liên quan đến nội dung đã hợp nhất, bao gồm ghi chú người thuyết trình, bình luận, tệp nguồn được bảo vệ bằng mật khẩu và việc sử dụng luồng.

Hợp nhất bản trình bày

Khi bạn hợp nhất một bản trình bày vào bản khác, bạn thực tế đang kết hợp các slide của chúng thành một bản trình bày duy nhất để có được một tệp.

Những gì có thể hợp nhất

Với Aspose.Slides, bạn có thể hợp nhất

  • toàn bộ các bản trình bày. Tất cả các slide từ các bản trình bày sẽ nằm trong một bản trình bày
  • các slide cụ thể. Các slide đã chọn sẽ nằm trong một bản trình bày
  • các bản trình bày ở cùng một định dạng (PPT sang PPT, PPTX sang PPTX, v.v.) và ở các định dạng khác nhau (PPT sang PPTX, PPTX sang ODP, v.v.) với nhau.

Các tùy chọn hợp nhất

Bạn có thể áp dụng các tùy chọn xác định:

  • mỗi slide trong bản trình bày đầu ra giữ một kiểu duy nhất
  • một kiểu cụ thể được sử dụng cho tất cả các slide trong bản trình bày đầu ra.

Để hợp nhất các bản trình bày, Aspose.Slides cung cấp các phương pháp AddClone (từ giao diện ISlideCollection). Có một số triển khai của các phương pháp AddClone xác định các tham số quá trình hợp nhất bản trình bày. Mỗi đối tượng Presentation có một bộ sưu tập Slides, vì vậy bạn có thể gọi một phương pháp AddClone từ bản trình bày mà bạn muốn hợp nhất các slide vào.

Phương pháp AddClone trả về một đối tượng ISlide, là bản sao của slide nguồn. Các slide trong bản trình bày đầu ra chỉ là bản sao của các slide từ nguồn. Do đó, bạn có thể thay đổi các slide kết quả (ví dụ, áp dụng kiểu hoặc tùy chọn định dạng hoặc bố cục) mà không lo ảnh hưởng tới các bản trình bày nguồn.

Hợp nhất bản trình bày

Aspose.Slides cung cấp phương pháp AddClone (ISlide) cho phép bạn kết hợp các slide trong khi các slide vẫn giữ nguyên bố cục và kiểu (các tham số mặc định).

Đoạn mã C++ dưới đây cho bạn thấy cách hợp nhất các bản trình bày:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide);
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

Hợp nhất bản trình bày với Slide Master

Aspose.Slides cung cấp phương pháp AddClone (ISlide, IMasterSlide, bool) cho phép bạn kết hợp các slide đồng thời áp dụng mẫu slide master. Bằng cách này, nếu cần, bạn có thể thay đổi kiểu cho các slide trong bản trình bày đầu ra.

Đoạn mã C++ dưới đây minh họa thao tác đã mô tả:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide, pres2->get_Masters()->idx_get(0), true);
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

Nếu bạn muốn các slide trong bản trình bày đầu ra có bố cục slide khác, hãy sử dụng phương pháp AddClone (ISlide, ILayoutSlide) khi hợp nhất.

Hợp nhất các slide cụ thể từ bản trình bày

Hợp nhất các slide cụ thể từ nhiều bản trình bày hữu ích cho việc tạo các bộ slide tùy chỉnh. Aspose.Slides C++ cho phép bạn chọn và nhập chỉ những slide cần thiết. API bảo tồn định dạng, bố cục và thiết kế của các slide gốc.

Đoạn mã C++ dưới đây tạo một bản trình bày mới, thêm các slide tiêu đề từ hai bản trình bày khác, và lưu kết quả vào một tệp:

SmartPtr<ISlide> GetTitleSlide(SmartPtr<IPresentation> presentation)
{
    for (auto&& slide : presentation->get_Slides())
    {
        if (slide->get_LayoutSlide()->get_LayoutType() == SlideLayoutType::Title)
        {
            return slide;
        }
    }
    return nullptr;
}
auto presentation = MakeObject<Presentation>();
auto presentation1 = MakeObject<Presentation>(u"presentation1.pptx");
auto presentation2 = MakeObject<Presentation>(u"presentation2.pptx");

presentation->get_Slides()->RemoveAt(0);

auto slide1 = GetTitleSlide(presentation1);

if (slide1 != nullptr)
    presentation->get_Slides()->AddClone(slide1);

auto slide2 = GetTitleSlide(presentation2);

if (slide2 != nullptr)
    presentation->get_Slides()->AddClone(slide2);

presentation->Save(u"combined.pptx", SaveFormat::Pptx);

presentation2->Dispose();
presentation1->Dispose();
presentation->Dispose();

Hợp nhất bản trình bày với một Layout Slide

Đoạn mã C++ này cho bạn thấy cách kết hợp các slide từ các bản trình bày đồng thời áp dụng bố cục slide mà bạn muốn để có một bản trình bày đầu ra duy nhất:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide, pres2->get_LayoutSlides()->idx_get(0));
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

Hợp nhất bản trình bày với các kích thước slide khác nhau

Để hợp nhất 2 bản trình bày có kích thước slide khác nhau, bạn phải thay đổi kích thước của một trong các bản trình bày để kích thước khớp với bản trình bày còn lại.

Đoạn mã mẫu dưới đây thực hiện thao tác đã mô tả:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres1Size = pres1->get_SlideSize()->get_Size();

auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
pres2->get_SlideSize()->SetSize(pres1Size.get_Width(), pres1Size.get_Height(), SlideSizeScaleType::EnsureFit);

for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide);
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

Hợp nhất slide vào một phần của bản trình bày

Đoạn mã C++ này cho bạn thấy cách hợp nhất một slide cụ thể vào một phần trong bản trình bày:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (int32_t index = 0; index < pres2->get_Slides()->get_Count(); index++)
{
    auto slide = pres2->get_Slides()->idx_get(index);
    pres1->get_Slides()->AddClone(slide, pres1->get_Sections()->idx_get(0));
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

Slide được thêm vào cuối phần.

Câu hỏi thường gặp

Ghi chú người thuyết trình có được bảo tồn khi hợp nhất không?

Có. Khi sao chép slide, Aspose.Slides chuyển toàn bộ các thành phần slide, bao gồm ghi chú, định dạng và hoạt ảnh.

Bình luận và tác giả của chúng có được chuyển không?

Bình luận, như một phần của nội dung slide, được sao chép cùng slide. Nhãn tác giả bình luận được bảo tồn dưới dạng đối tượng bình luận trong bản trình bày kết quả.

Nếu bản trình bày nguồn được bảo vệ bằng mật khẩu thì sao?

Phải mở bằng mật khẩu qua LoadOptions::set_Password; sau khi tải, các slide đó có thể được sao chép an toàn vào tệp đích không bảo vệ (hoặc cũng có thể bảo vệ).

Quá trình hợp nhất có an toàn với đa luồng không?

Không sử dụng cùng một thể hiện Presentation từ nhiều luồng. Quy tắc được khuyến nghị là “một tài liệu — một luồng”; các tệp khác nhau có thể được xử lý song song trong các luồng riêng biệt.