# Save PDFs to an ArrayBuffer using JavaScript

Exporting a PDF to an `ArrayBuffer` can be done with a single API call to [`instance.exportPDF()`](https://www.nutrient.io/api/web/classes/NutrientViewer.Instance.html#exportpdf):

```js

try {
  const documentBuffer = await instance.exportPDF();
  console.log("PDF exported successfully");
} catch (error) {
  console.error("Failed to export PDF:", error.message);
}

```

[Try this example in the Playground](https://www.nutrient.io/demo/sandbox?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiJ9LCJqcyI6ImNvbnNvbGUubG9nKFwiRGVtb25zdHJhdGluZyBQREYgZXhwb3J0IHRvIEFycmF5QnVmZmVyLi4uXCIpO1xuXG5OdXRyaWVudFZpZXdlci5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsXG59KS50aGVuKGFzeW5jIChpbnN0YW5jZSkgPT4ge1xuICBjb25zb2xlLmxvZyhcIk51dHJpZW50IGxvYWRlZCFcIik7XG5cbiAgLy8gQ3JlYXRlIGEgc2FtcGxlIGFubm90YXRpb24gdG8gc2hvdyBleHBvcnQgY2FwdHVyZXMgY2hhbmdlc1xuICBjb25zdCBhbm5vdGF0aW9uID0gbmV3IE51dHJpZW50Vmlld2VyLkFubm90YXRpb25zLk5vdGVBbm5vdGF0aW9uKHtcbiAgICBwYWdlSW5kZXg6IDAsXG4gICAgYm91bmRpbmdCb3g6IG5ldyBOdXRyaWVudFZpZXdlci5HZW9tZXRyeS5SZWN0KHtcbiAgICAgIGxlZnQ6IDUwLFxuICAgICAgdG9wOiA1MCxcbiAgICAgIHdpZHRoOiAzMCxcbiAgICAgIGhlaWdodDogMzAsXG4gICAgfSksXG4gICAgdGV4dDoge1xuICAgICAgZm9ybWF0OiBcInBsYWluXCIsXG4gICAgICB2YWx1ZTogXCJUaGlzIG5vdGUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZXhwb3J0ZWQgUERGXCIsXG4gICAgfSxcbiAgfSk7XG5cbiAgYXdhaXQgaW5zdGFuY2UuY3JlYXRlKGFubm90YXRpb24pO1xuICBjb25zb2xlLmxvZyhcIkNyZWF0ZWQgc2FtcGxlIGFubm90YXRpb25cIik7XG5cbiAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwMCkpO1xuXG4gIC8vIEV4cG9ydCBQREYgdG8gQXJyYXlCdWZmZXJcbiAgY29uc29sZS5sb2coXCJFeHBvcnRpbmcgUERGIHRvIEFycmF5QnVmZmVyLi4uXCIpO1xuICBjb25zdCBkb2N1bWVudEJ1ZmZlciA9IGF3YWl0IGluc3RhbmNlLmV4cG9ydFBERigpO1xuXG4gIGNvbnNvbGUubG9nKFwiRXhwb3J0IHN1Y2Nlc3NmdWwhXCIpO1xuICBjb25zb2xlLmxvZyhcIkFycmF5QnVmZmVyIHNpemU6XCIsIGRvY3VtZW50QnVmZmVyLmJ5dGVMZW5ndGgsIFwiYnl0ZXNcIik7XG4gIGNvbnNvbGUubG9nKFwiVHlwZTpcIiwgZG9jdW1lbnRCdWZmZXIuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgLy8gU2hvdyB3aGF0IHlvdSBjYW4gZG8gd2l0aCB0aGUgQXJyYXlCdWZmZXJcbiAgY29uc29sZS5sb2coXCJcXG5XaGF0IHlvdSBjYW4gZG8gd2l0aCB0aGUgQXJyYXlCdWZmZXI6XCIpO1xuICBjb25zb2xlLmxvZyhcIjEuIFNlbmQgdG8gc2VydmVyOiBmZXRjaCgnL2FwaS9zYXZlJywgeyBtZXRob2Q6ICdQT1NUJywgYm9keTogZG9jdW1lbnRCdWZmZXIgfSlcIik7XG4gIGNvbnNvbGUubG9nKFwiMi4gQ29udmVydCB0byBCbG9iOiBuZXcgQmxvYihbZG9jdW1lbnRCdWZmZXJdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pXCIpO1xuICBjb25zb2xlLmxvZyhcIjMuIFNhdmUgbG9jYWxseTogdHJpZ2dlciBkb3dubG9hZCB1c2luZyBCbG9iIGFuZCBVUkwuY3JlYXRlT2JqZWN0VVJMXCIpO1xuICBjb25zb2xlLmxvZyhcIjQuIFByb2Nlc3MgZnVydGhlcjogcGFzcyB0byBQREYgcHJvY2Vzc2luZyBsaWJyYXJpZXNcIik7XG5cbiAgLy8gRGVtb25zdHJhdGUgY29udmVydGluZyB0byBCbG9iIGFuZCBkb3dubG9hZGluZ1xuICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RvY3VtZW50QnVmZmVyXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL3BkZlwiIH0pO1xuICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gIGEuaHJlZiA9IHVybDtcbiAgYS5kb3dubG9hZCA9IFwiZXhwb3J0ZWQtZG9jdW1lbnQucGRmXCI7XG4gIGEuY2xpY2soKTtcbiAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuXG4gIGNvbnNvbGUubG9nKFwiXFxuUERGIGRvd25sb2FkZWQgdG8gZGVtb25zdHJhdGUgQXJyYXlCdWZmZXIgdXNhZ2UhXCIpO1xufSk7XG4iLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuXHQifQ%253D%253D).

The resolved `ArrayBuffer` can be then handled as desired, for example you can [send it to your server](https://www.nutrient.io/guides/web/save-a-document/to-remote-server.md) or [download it to a local storage](https://www.nutrient.io/guides/web/save-a-document/to-local-storage.md).

When exporting a document, you have several options. Refer to our guides on [flattening annotations](https://www.nutrient.io/guides/web/annotations/flatten.md) and [incremental saving](https://www.nutrient.io/guides/web/features/document-processing.md) for more details.

Auto saving can be configured for different scenarios and use cases. You can find more information in our [auto save](https://www.nutrient.io/guides/web/features/saving.md) guide.
---

## Related pages

- [Enable incremental saving of PDFs using JavaScript](/guides/web/features/document-processing.md)
- [Detecting unsaved changes in PDFs](/guides/web/save-a-document/detect-unsaved-changes.md)
- [Auto-saving PDF changes in our JavaScript viewer](/guides/web/features/saving.md)
- [Save PDF files using JavaScript](/guides/web/save-a-document.md)
- [Save documents as PDFs on the web](/guides/web/save-a-document/save-as.md)
- [Save PDF without annotations using JavaScript](/guides/web/save-a-document/without-annotations.md)
- [Save PDFs to Document Engine using JavaScript](/guides/web/save-a-document/to-document-engine.md)
- [Save PDFs to local storage using JavaScript](/guides/web/save-a-document/to-local-storage.md)
- [Save PDFs to a remote server using JavaScript](/guides/web/save-a-document/to-remote-server.md)

