# Track Export Progress

DsExcel allows you to track the progress of exporting a workbook to PDF. Also, you can skip pages or exit exporting whenever you like.

## Content



DsExcel provides **getPagePrinting** and **getPagePrinted** events in **PdfSaveOptions** class to track the export progress of a workbook to PDF. The **getPagePrinting** event occurs before printing a page and provides **setSkipThisPage** method to skip pages while exporting. Similarly, the **getPagePrinted** event occurs after printing a page and provides **setHasMorePages** method to exit PDF exporting.

## Display Export Progress

Refer to the following example code to display the export progress of a workbook to PDF.

```Java
// Create to a pdf file stream
FileOutputStream outputStream = null;
try {
    outputStream = new FileOutputStream("PagePrintEventsTrackProgress.pdf");
} catch (FileNotFoundException e) {
    e.printStackTrace();
}
// Create a new workbook
Workbook workbook = new Workbook();
IWorksheet activeSheet = workbook.getActiveSheet();
activeSheet.getRange("A1").setValue(1);
activeSheet.getRange("A2:A100").setFormulaR1C1("=R[-1]C+1");
PdfSaveOptions options = new PdfSaveOptions();
options.getPagePrintingEvent().addListener(
(sender, e) -> System.out.println(String.format("Printing page %1$s of %2$s", e.getPageNumber(), e.getPageCount())));
activeSheet.getPageSetup().setCenterHeader("Page &P of &N");
workbook.save(outputStream, options);

// Close the file stream
try {
    outputStream.close();
} catch (IOException e) {
    e.printStackTrace();
}
```

## Skip a Page while Exporting

Refer to the following example code to skip second page while exporting a workbook to PDF.

```Java
// Create to a pdf file stream
FileOutputStream outputStream = null;
try {
    outputStream = new FileOutputStream("PagePrintEventsSkipPage.pdf");
} catch (FileNotFoundException e) {
    e.printStackTrace();
}
// Create a new workbook
Workbook workbook = new Workbook();
IWorksheet activeSheet = workbook.getActiveSheet();
activeSheet.getRange("A1").setValue(1);
activeSheet.getRange("A2:A100").setFormulaR1C1("=R[-1]C+1");
PdfSaveOptions options = new PdfSaveOptions();
options.getPagePrintingEvent().addListener((sender, e) -> {
if (e.getPageNumber() == 2) {
e.setSkipThisPage(true);
}
});
activeSheet.getPageSetup().setCenterHeader("Page &P of &N");
workbook.save(outputStream, options);

// Close the file stream
try {
    outputStream.close();
} catch (IOException e) {
    e.printStackTrace();
}
```

## Exit Exporting

Refer to the following example code to exit PDF exporting after second page.

```Java
// Create to a pdf file stream
FileOutputStream outputStream = null;
try {
    outputStream = new FileOutputStream("PagePrintEventsExitPrinting.pdf");
} catch (FileNotFoundException e) {
    e.printStackTrace();
}
// Create a new workbook
Workbook workbook = new Workbook();
IWorksheet activeSheet = workbook.getActiveSheet();
activeSheet.getRange("A1").setValue(1);
activeSheet.getRange("A2:A100").setFormulaR1C1("=R[-1]C+1");
PdfSaveOptions options = new PdfSaveOptions();
options.getPagePrintedEvent().addListener((sender, e) -> {
if (e.getPageNumber() == 2) {
e.setHasMorePages(false);
}
});
activeSheet.getPageSetup().setCenterHeader("Page &P of &N");
workbook.save(outputStream, options);

// Close the file stream
try {
    outputStream.close();
} catch (IOException e) {
    e.printStackTrace();
}
```


<br>
