Skip to content
pdfconversionapi

XLSB to JPG API

Upload an .xlsb workbook to POST /v2/convert/xlsb/to/jpg and get a JPEG of each printed page. The sample stores no page setup, so it sends PageSize=letter with ImageResolution=100 and gets two 850 × 1,100 images.

Endpoint
POST /v2/convert/xlsb/to/jpg
Accepts
xlsb
Sample timing
0.773 s median of 5 runsHow we measure
Request size
Up to 10 MB on the Free plan or 100 MB on paid plans, all files together

Request and response

Every sample below ran against the API before this page was published. Set PDFCONVERSIONAPI_KEY to your key and run it as is.

curl -sS -X POST \
  https://api.pdfconversionapi.com/v2/convert/xlsb/to/jpg \
  -H "Authorization: Bearer $PDFCONVERSIONAPI_KEY" \
  -F File=@meter-readings.xlsb \
  --form-string PageSize=letter \
  --form-string ImageResolution=100 \
  -o response.json

# FileData is base64. Save the first file in converted/,
# or print the JSON error.
if jq -e '.Files' response.json > /dev/null; then
  mkdir -p converted
  name=$(jq -r '.Files[0].FileName' response.json)
  jq -r '.Files[0].FileData' response.json \
    | base64 --decode > "converted/$name"
else
  cat response.json
fi
200 OK0.773 s median2 files, 121 KB
{
  "ConversionCost": 1,
  "ConversionTime": 0.773,
  "Files": [
    {
      "FileName": "meter-readings-1.jpg",
      "FileExt": "jpg",
      "FileSize": 83920,
      "FileData": "/9j/4AAQSkZJRgABAgEAZABk…"
    },
    {
      "FileName": "meter-readings-2.jpg",
      "FileExt": "jpg",
      "FileSize": 40434,
      "FileData": "/9j/4AAQSkZJRgABAgEAZABk…"
    }
  ]
}

Response from our test run on 2026-11-03. ConversionTime shows the median of 5 runs. FileData is shortened here; the real response carries the whole file as base64.

The sample, converted

The same file the code sends. Download the input and the output and compare them yourself.

First page of meter-readings-1.jpg, rendered by the API
Input
meter-readings.xlsb (3.3 KB)
Output
meter-readings-1.jpg (82 KB)meter-readings-2.jpg (39 KB)
Source
A fictional cold-storage unit's meter readings in Excel binary format (two sheets with dates, times and formulas) that we wrote record by record for this site (CC0-1.0). How it was made
Made by
2026-11-04, API build 9eeeb0640aba

Parameters

Send these as form fields next to the file. Names are case-insensitive. If you set one of the documented options below that we don't support yet, the request fails with a 400 that names it instead of returning a file made without it.

ParameterWhat it does
PageSizeenum, default defaultPaper for every printed sheet. The sample has no page setup, so default prints it on A4 (1,240 × 1,753 at 150 DPI); letter gives 8.5 × 11 inch pages instead.Values: default, letter, lettersmall, tabloid, ledger, legal, statement, executive, a3, a4, a4small, a5, b4, b5
ImageResolutioninteger, default 150Pixels per inch. At 100 a Letter page is 850 × 1,100 and the JPEG records 100 DPI; left out, pages are drawn at 150 and no DPI is stored. ConvertAPI's image default is 200.Values: 36–600
ImageQualityinteger, default 85JPEG quality. The sample's Readings page at 100 DPI is 83,920 bytes at the default and 59,389 at 50.Values: 1–100
PageOrientationenum, default defaultTurn every printed sheet. landscape with the default paper gives 1,169 × 826 pixels at 100 DPI.Values: default, portrait, landscape
WorksheetNamestringPrint only this sheet, matched without regard to case, for example Daily.
PageRangestringPrinted pages to draw: the sample's Readings sheet is page 1 and Daily is page 2.Values: e.g. 1, 2, 1-2
PasswordstringOpen password of an encrypted .xlsb. In our test, an encrypted copy of the sample printed with the right password and returned 422 "the input file is password-protected" without it.

What carries over, and what doesn't

Kept

  • Date and time formats stored in the binary file: the Readings column prints as 2026-03-02 00:00 through 2026-03-02 23:00
  • Two-decimal numbers (3.18, 101.29), bold headers and the TRUE/FALSE peak flags
  • The stored results of the SUM and AVERAGE formulas: Total 101.29 and Average 96.86
  • Both sheets in tab order, one JPEG each

Lost or not yet supported

  • A sheet without page setup prints on A4, not Letter. Send PageSize when you need a specific paper.
  • Gridlines aren't printed, as in Excel's default print settings, so a sheet without cell borders shows plain columns of numbers.
  • Calibri is drawn with Carlito, a font with the same letter widths.
  • JPEG compression softens small text; the PNG route keeps it sharp.

Limits

  • Up to 2,000 pages per request; pages at most 16,000 pixels per side and 100 million pixels.
  • Requests up to 10 MB on the Free plan or 100 MB on paid plans; 120 seconds per conversion, then 504.
  • A file that is not an XLSB returns 422 "the input file could not be read: it could not be opened as XLSB".

Where teams use it

Previews of large data workbooks

Show what an XLSB data workbook holds without downloading or opening it: a JPEG of its first page is enough to recognize the file in a list.

Sharing a daily readings sheet as a picture

Send the printed page of an operations log to a channel or an email where people only need to look, not edit.

Questions

Why did my XLSB print on A4 paper?

When a sheet stores no page setup, the default paper of the office engine is A4. The sample has none, which is why it sends PageSize=letter. Sheets that do store a paper size print on it unless you override it.

Do macros in the .xlsb run?

No. XLSB files can carry VBA, but every conversion starts the office suite with a new profile in which macro execution is switched off.

Can I convert XLSB to XLSX instead?

There is no xlsb/to/xlsx route; it returns 404. For the data, /v2/convert/xlsb/to/json and xlsb/to/csv read the binary format directly, and xlsb/to/pdf prints it.

Convert your first XLSB file in a minute.