الحصول على رسم الكائن و Bound أثناء التصيير إلى PDF باستخدام C++ وفئة DrawObjectEventHandler

سيناريوهات الاستخدام المحتملة

توفر Aspose.Cells فئة مجردة DrawObjectEventHandler التي تحتوي على طريقة Draw(). يمكن للمستخدم تنفيذ DrawObjectEventHandler واستخدام الطريقة Draw() للحصول على DrawObject وBound أثناء تقديم Excel إلى PDF أو صورة. فيما يلي وصف موجز لمعلمات طريقة Draw().

إذا كنت تصيّر ملف Excel إلى PDF، فيمكنك استخدام فئة DrawObjectEventHandler مع PdfSaveOptions.PaginatedSaveOptions(PaginatedSaveOptions_Impl impl)*. بالمثل، إذا كنت تصيّر ملف Excel إلى صورة، يمكنك استخدام فئة DrawObjectEventHandler مع ImageOrPrintOptions.DrawObjectEventHandler.

الحصول على كائن الرسم وBound أثناء التقديم إلى Pdf باستخدام فئة DrawObjectEventHandler

يرجى الاطلاع على الكود البرمجي التالي. يقوم بتحميل ملف Excel النموذجي (sample Excel file) ويحفظه كملف PDF خارجي (output PDF). أثناء التصدير إلى PDF، يستخدم خاصية PdfSaveOptions.PaginatedSaveOptions(PaginatedSaveOptions_Impl impl)* ويقوم بالتقاط DrawObject و Bound للخلايا والأشياء الموجودة، مثل الصور، وما إلى ذلك. إذا كان نوع DrawObject هو Cell، فإنه يعرض Bound والقيمة النصية. وإذا كان نوع DrawObject هو صورة، فإنه يعرض Bound واسم الشكل. يرجى الاطلاع على مخرجات وحدة التحكم للرمز البرمجي أدناه للمزيد من المساعدة.

الكود المثالي

#include <iostream>
#include <memory>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Rendering;

class ClsDrawObjectEventHandler : public DrawObjectEventHandler
{
public:
    void Draw(DrawObject& drawObject, float x, float y, float width, float height) override
    {
        std::cout << std::endl;

        if (drawObject.GetType() == DrawObjectEnum::Cell)
        {
            std::cout << "[X]: " << x << " [Y]: " << y << " [Width]: " << width << " [Height]: " << height 
                      << " [Cell Value]: " << drawObject.GetCell().GetStringValue().ToUtf8() << std::endl;
        }

        if (drawObject.GetType() == DrawObjectEnum::Image)
        {
            std::cout << "[X]: " << x << " [Y]: " << y << " [Width]: " << width << " [Height]: " << height 
                      << " [Shape Name]: " << drawObject.GetShape().GetName().ToUtf8() << std::endl;
        }

        std::cout << "----------------------" << std::endl;
    }
};

void Run()
{
    Workbook wb(u"sampleGetDrawObjectAndBoundUsingDrawObjectEventHandler.xlsx");
    PdfSaveOptions opts;
    auto drawObjectEventHandler = std::make_shared<ClsDrawObjectEventHandler>();
    opts.SetDrawObjectEventHandler(drawObjectEventHandler.get());
    wb.Save(u"outputGetDrawObjectAndBoundUsingDrawObjectEventHandler.pdf", opts);
}

int main()
{
    Aspose::Cells::Startup();
    Run();
    Aspose::Cells::Cleanup();
    return 0;
}

مخرجات الوحدة

[X]: 153.6035 [Y]: 82.94118 [Width]: 103.2035 [Height]: 14.47059 [Cell Value]: This is sample text.

----------------------

[X]: 267.6917 [Y]: 153.4853 [Width]: 160.4491 [Height]: 128.0647 [Shape Name]: Sun

----------------------