Verfolgen Sie den Fortschritt der Dokumentkonvertierung mit C++
Mögliche Verwendungsszenarien
Das Konvertieren großer Excel-Dateien kann manchmal einige Zeit in Anspruch nehmen. Während dieser Zeit möchten Sie vielleicht den Fortschritt der Dokumentkonvertierung anzeigen, anstatt nur einen Ladebildschirm, um die Benutzererfahrung Ihrer Anwendung zu verbessern. Aspose.Cells unterstützt die Verfolgung des Fortschritts durch die Bereitstellung der IPageSavingCallback-Schnittstelle. Die IPageSavingCallback-Schnittstelle bietet PageStartSaving and PageEndSaving-Methoden, die Sie in Ihrer benutzerdefinierten Klasse implementieren können. Sie können auch steuern, welche Seiten gerendert werden, wie in der benutzerdefinierten Klasse TestPageSavingCallback
demonstriert.
Fortschritt der Dokumentkonvertierung nachverfolgen
Der nachstehende Code lädt die Quell-Excel-Datei und zeigt den Fortschritt der Konvertierung in der Konsole an, indem die benutzerdefinierte Klasse TestPageSavingCallback
die IPageSavingCallback-Schnittstelle implementiert.
Beispielcode
#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();
}
Der folgende Code ist für die benutzerdefinierte Klasse 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);
}
}
};
Konsolenausgabe
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