Skip to main content
The shopper’s browser never receives the PDF or a link to it. The server draws each page as a JPEG with the reader’s email on it, and the reader shows those pictures. Two calls make up a reader: one to open the book, one per page.

Open the book

aspect is width divided by height of the first page. sizes are the only image sizes you may ask for (the long edge, in pixels). readOnly is true for a 30-day pass or the all-access pass. The first call for a book can take a few seconds while the server fetches it.

Get one page

n counts from 1. w is one of sizes; any other value is refused, not rounded. The body is a JPEG (Content-Type: image/jpeg, Cache-Control: private, no-store). The page carries a footer with the reader’s email, the store and a short access id, and the email is repeated faintly across the page. This works for PDFs of any size. Fetch pages with the Authorization header (for example with fetch and an object URL), because an <img src> cannot send it, and do not offer a save button.

Errors

Errors are JSON. Reading a title never uses up the daily download allowance.
A picture someone can see can still be captured, for example with a screenshot. This removes the file, the link and the save button, and marks every page with who is reading.