Hämta DrawObject och Bound vid rendering till PDF med C++ med DrawObjectEventHandler klass
Möjliga användningsscenario
Aspose.Cells tillhandahåller en abstrakt klass DrawObjectEventHandler som har en Draw()-metod. Användaren kan implementera DrawObjectEventHandler och använda Draw()-metoden för att få DrawObject och Bound vid rendering av Excel till PDF eller bild. Här är en kort beskrivning av parametrarna till metoden Draw().
-
drawObject: DrawObject kommer att initialiseras och returneras vid rendering
-
x: Vänster om DrawObject
-
y: Topp om DrawObject
-
bredd: Bredd av DrawObject
-
höjd: Höjd av DrawObject
Om du renderar en Excel-fil till PDF kan du använda DrawObjectEventHandler-klass med PdfSaveOptions.PaginatedSaveOptions(PaginatedSaveOptions_Impl impl)*. På samma sätt, om du renderar en Excel-fil till bild, kan du använda DrawObjectEventHandler-klass med ImageOrPrintOptions.DrawObjectEventHandler.
Få DrawObject och Bound medan du renderar till Pdf med hjälp av DrawObjectEventHandler-klassen
Se följande exempel. Det laddar exempel-Excelfilen och sparar den som utdata-PDF. Vid rendering till PDF använder det egenskapen PdfSaveOptions.PaginatedSaveOptions(PaginatedSaveOptions_Impl impl)* och fångar DrawObject och Bound för befintliga celler och objekt, t.ex. bilder. Om typen DrawObject är Cell, skriver den ut dess Bound och StringValue. Och om typen DrawObject är Image, skriver den ut dess Bound och Shape-namn. Se konsolutmatningen av exempelkoden nedan för mer hjälp.
Exempelkod
#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;
}
Konsoloutput
[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
----------------------