تتبع تقدم تحويل المستند باستخدام C++
سيناريوهات الاستخدام المحتملة
في بعض الأحيان قد يستغرق تحويل ملفات Excel الكبيرة بعض الوقت. خلال هذا الوقت، قد ترغب في عرض تقدم تحويل المستند بدلًا من شاشة تحميل فقط لتعزيز قابلية استخدام تطبيقك. يدعم Aspose.Cells تتبع تقدم تحويل المستند عبر تقديم الواجهة IPageSavingCallback. توفر الواجهة IPageSavingCallback طرق PageStartSaving و PageEndSaving التي يمكنك تنفيذها في فئتك المخصصة. يمكنك أيضًا التحكم في الصفحات التي يتم تقديمها كما هو موضح في فئة TestPageSavingCallback
المخصصة.
تتبع تقدم تحويل الوثائق
يعتمد المثال التالي على تحميل ملف Excel المصدر 94896151.xlsx ويطبع تقدمه في لوحة التحكم باستخدام فئة TestPageSavingCallback
التي تنفذ الواجهة IPageSavingCallback.
الكود المثالي
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
class TestPageSavingCallback : public IPageSavingCallback
{
public:
void PageStartSaving(PageStartSavingArgs& args) override
{
std::cout << "Page " << args.GetPageIndex() + 1 << " is starting to save." << std::endl;
}
void PageEndSaving(PageEndSavingArgs& args) override
{
std::cout << "Page " << args.GetPageIndex() + 1 << " has been saved." << std::endl;
}
};
int main()
{
Aspose::Cells::Startup();
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
U16String inputFilePath = srcDir + u"PagesBook1.xlsx";
U16String outputFilePath = outDir + u"DocumentConversionProgress.pdf";
Workbook workbook(inputFilePath);
PdfSaveOptions pdfSaveOptions;
TestPageSavingCallback callback;
pdfSaveOptions.SetPageSavingCallback(&callback);
workbook.Save(outputFilePath, pdfSaveOptions);
std::cout << "Document conversion completed successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
المثال التالي هو الكود الخاص بفئة TestPageSavingCallback
المخصصة.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Rendering;
class TestPageSavingCallback : public IPageSavingCallback
{
public:
void PageStartSaving(PageStartSavingArgs& args) override
{
std::cout << "Start saving page index " << args.GetPageIndex()
<< " of pages " << args.GetPageCount() << std::endl;
if (args.GetPageIndex() < 2)
{
args.SetIsToOutput(false);
}
}
void PageEndSaving(PageEndSavingArgs& args) override
{
std::cout << "End saving page index " << args.GetPageIndex()
<< " of pages " << args.GetPageCount() << std::endl;
if (args.GetPageIndex() >= 8)
{
args.SetHasMorePages(false);
}
}
};
مخرجات الوحدة
Start saving page index 0 of pages 11</br>
End saving page index 0 of pages 11</br>
Start saving page index 1 of pages 11</br>
End saving page index 1 of pages 11</br>
Start saving page index 2 of pages 11</br>
End saving page index 2 of pages 11</br>
Start saving page index 3 of pages 11</br>
End saving page index 3 of pages 11</br>
Start saving page index 4 of pages 11</br>
End saving page index 4 of pages 11</br>
Start saving page index 5 of pages 11</br>
End saving page index 5 of pages 11</br>
Start saving page index 6 of pages 11</br>
End saving page index 6 of pages 11</br>
Start saving page index 7 of pages 11</br>
End saving page index 7 of pages 11</br>
Start saving page index 8 of pages 11</br>
End saving page index 8 of pages 11