---
title: "PDF rendering server | Nutrient SDK"
canonical_url: "https://www.nutrient.io/guides/document-engine/rendering/"
md_url: "https://www.nutrient.io/guides/document-engine/rendering.md"
last_updated: "2026-05-22T14:49:21.619Z"
description: "Learn to render single or multiple document pages as images using Nutrient Document Engine's PDF Rendering Server API. Control output dimensions and formats efficiently."
---

# PDF rendering server

To render pages in a document, post a multipart request to the [`/api/build` API endpoint][], including the desired page index or indexes in the `instructions.output.pages` field. To learn more about the schema for `/build` `instructions`, go to the [API Reference](https://www.nutrient.io/api/reference/document-engine/upstream/#tag/Build-API).

In the `/api/build` request, set the `instructions.output.type` parameter to `image`. By default, the `output.type` for `/build` instructions is set to `pdf`. The page index is provided via the [`instructions.output.pages` field](https://www.nutrient.io/api/reference/document-engine/upstream/#model/BuildInstructions), and the rendered dimensions are provided via a [`width`, `height`, or `dpi` option](https://www.nutrient.io/api/reference/document-engine/upstream/#model/BuildInstructions).

To learn more about available options for rendering, go to the [API Reference](https://www.nutrient.io/api/reference/document-engine/upstream/#tag/Build-API).

Only one option — `width`, `height`, or `dpi` — can be chosen. Other dimensions are calculated before rendering, so as to preserve the page aspect ratio of the rendered image.

The format of the rendered image can be controlled via the [`format` option](https://www.nutrient.io/api/reference/document-engine/upstream/#model/BuildInstructions). Supported image formats are PNG, JPEG, WebP, and TIFF.

- Ensure [Document Engine is up and running](https://www.nutrient.io/sdk/document-engine/getting-started.md).

- Send a [multipart POST request](https://www.baeldung.com/postman-form-data-raw-x-www-form-urlencoded) with [instructions](https://www.nutrient.io/api/reference/document-engine/upstream/#tag/Build-API) to Document Engine’s `/api/build` endpoint.

For more information, refer to the [API reference](https://www.nutrient.io/api/reference/document-engine/upstream/#tag/Build-API) to learn about the `/api/build` endpoint and all the actions you can perform on PDFs with Document Engine.

For an overview of multipart requests, refer to the [brief tour of multipart requests](https://www.nutrient.io/blog/a-brief-tour-of-multipart-requests/) blog post.









## Rendering a page of a file on disk

You can render a single page or multiple pages of a document.

### Rendering a single page

The following example renders the second page (with index `1`) of a document. The response to this request is a PNG image file:

### SHELL

```shell

curl -X POST http://localhost:5000/api/build \
  -H "Authorization: Token token=<API token>" \
  -F document=@/path/to/example-document.pdf \
  -F instructions='{
  "parts": [
    {
      "file": "document"
    }
  ],
  "output": {
    "type": "image",
    "format": "png",
    "pages": {
      "start": 1,
      "end": 1
    }
  }
}' \
  -o output-image.png

```

### HTTP

```http

POST /api/build HTTP/1.1
Content-Type: multipart/form-data; boundary=customboundary
Authorization: Token token=<API token>

--customboundary
Content-Disposition: form-data; name="document"; filename="example-document.pdf"
Content-Type: application/pdf

<PDF data>
--customboundary
Content-Disposition: form-data; name="instructions"
Content-Type: application/json

{
  "parts": [
    {
      "file": "document"
    }
  ],
  "output": {
    "type": "image",
    "format": "png",
    "pages": {
      "start": 1,
      "end": 1
    }
  }
}
--customboundary--

```

### Rendering multiple pages

The following example renders the first, second, and third page (indexes `0`, `1` and `2`) of a document. The response to this request is a ZIP file containing all the images:

### SHELL

```shell

curl -X POST http://localhost:5000/api/build \
  -H "Authorization: Token token=<API token>" \
  -F document=@/path/to/example-document.pdf \
  -F instructions='{
  "parts": [
    {
      "file": "document"
    }
  ],
  "output": {
    "type": "image",
    "format": "png",
    "pages": {
      "start": 0,
      "end": 2
    }
  }
}' \
  -o result.zip

```

### HTTP

```http

POST /api/build HTTP/1.1
Content-Type: multipart/form-data; boundary=customboundary
Authorization: Token token=<API token>

--customboundary
Content-Disposition: form-data; name="document"; filename="example-document.pdf"
Content-Type: application/pdf

<PDF data>
--customboundary
Content-Disposition: form-data; name="instructions"
Content-Type: application/json

{
  "parts": [
    {
      "file": "document"
    }
  ],
  "output": {
    "type": "image",
    "format": "png",
    "pages": {
      "start": 0,
      "end": 2
    }
  }
}
--customboundary--

```

## Rendering a page of a file from a URL

You can specify the document to render by providing a URL to the document instead of a path to the file:

### SHELL

```shell

curl -X POST http://localhost:5000/api/build \
  -H "Authorization: Token token=<API token>" \
  -F instructions='{
  "parts": [
    {
      "file": {
        "url": "https://pspdfkit.com/downloads/examples/paper.pdf"
      }
    }
  ],
  "output": {
    "type": "image",
    "format": "png",
    "pages": {
      "start": 1,
      "end": 1
    }
  }
}' \
  -o output-image.png

```

### HTTP

```http

POST /api/build HTTP/1.1
Content-Type: multipart/form-data; boundary=customboundary
Authorization: Token token=<API token>

--customboundary
Content-Disposition: form-data; name="instructions"
Content-Type: application/json

{
  "parts": [
    {
      "file": {
        "url": "https://pspdfkit.com/downloads/examples/paper.pdf"
      }
    }
  ],
  "output": {
    "type": "image",
    "format": "png",
    "pages": {
      "start": 1,
      "end": 1
    }
  }
}
--customboundary--

```
---

## Related pages

- [Changelog for Document Engine](/guides/document-engine/changelog.md)
- [Demo: Document Engine](/guides/document-engine/demo.md)
- [Download Document Engine](/guides/document-engine/downloads.md)
- [Example projects](/guides/document-engine/example-projects.md)
- [Document Engine PDF server](/guides/document-engine.md)
- [Developer guides](/guides/document-engine/intro.md)
- [Knowledge base](/guides/document-engine/kb.md)
- [Nightly build](/guides/document-engine/nightly.md)
- [Troubleshooting](/guides/document-engine/troubleshoot.md)

