Erfassen Sie DrawObject und Bound beim Rendern in PDF mit C++ unter Verwendung der DrawObjectEventHandler Klasse

Mögliche Verwendungsszenarien

Aspose.Cells bietet eine abstrakte Klasse DrawObjectEventHandler, die eine Methode Draw() hat. Der Benutzer kann DrawObjectEventHandler implementieren und die Methode Draw() nutzen, um den DrawObject und Bound beim Rendern von Excel in PDF oder Bild zu erhalten. Hier ist eine kurze Beschreibung der Parameter der Methode Draw().

Wenn Sie eine Excel-Datei in PDF umwandeln, können Sie die Klasse DrawObjectEventHandler mit PdfSaveOptions.PaginatedSaveOptions(PaginatedSaveOptions_Impl impl)* verwenden. Wenn Sie eine Excel-Datei in ein Bild konvertieren, können Sie die Klasse DrawObjectEventHandler mit ImageOrPrintOptions.DrawObjectEventHandler verwenden.

Holen Sie sich DrawObject und Bound beim Rendern in PDF unter Verwendung der DrawObjectEventHandler-Klasse

Siehe den folgenden Beispielcode. Es lädt die Beispiel-Excel-Datei und speichert sie als Ausgabepdf. Während der Konvertierung in PDF nutzt es die Eigenschaft PdfSaveOptions.PaginatedSaveOptions(PaginatedSaveOptions_Impl impl)* und erfasst DrawObject und Bound vorhandener Zellen und Objekte, z.B. Bilder. Wenn der DrawObject Typ Cell ist, gibt er Bound und StringValue aus. Wenn der DrawObject Typ Image ist, gibt er Bound und Shape-Name aus. Sehen Sie sich die Konsolenausgabe des Beispielcodes unten für weitere Hilfe an.

Beispielcode

#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;
}

Konsolenausgabe

[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

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