Skip to main content

OPDS Page Streaming Extension 1.2

Published on March 05th 2023

License

This document is licensed under Creative Commons Attribution-Share Alike.

Introduction

The OPDS Page Streaming Extension (OPDS-PSE) is an unofficial extension of the Open Distribution Publication System. Its goal is to enrich the OPDS feed with information allowing the client to request a specific page of a document without having to download it completely. This extension was designed primarily for comic books, to allow reading them on connected devices without having to wait for the book to be completely downloaded.

OPDS-PSE adds new attributes and conventions but does not break compatibility. OPDS-PSE feeds are still valid OPDS feeds.

Notational Conventions

The keywords "MUST", "MUST NOT", "SHOULD", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

The OPDS-PSE extension simply consists in an additional type of Acquisition Link in an OPDS entry. This link is to be used by clients to request pages of a document, one page at a time.

An OPDS-PSE feed MUST declare the OPDS-PSE namespace: http://vaemendis.net/opds-pse/ns

Example

Namespace declaration in the feed element (in our example, we use the prefix pse):

<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:pse="http://vaemendis.net/opds-pse/ns"
xmlns:opds="http://opds-spec.org/2010/catalog"
xml:lang="en"
xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">

Additional link in an entry to allow page by page access to the document:

<link rel="http://vaemendis.net/opds-pse/stream"
type="image/jpeg"
href="/opds-comics/stream/1217?page={pageNumber}&width={maxWidth}"
pse:count="35"
pse:lastRead="10"
pse:lastReadDate="2010-01-10T10:01:11Z"
/>

Specifications

The Link MUST contain the following attributes:

  • rel MUST have the value http://vaemendis.net/opds-pse/stream that indicates that this link is a OPDS-PSE page streaming link
  • type MUST indicate the type of image returned by the server (value MUST be one of the following : image/jpeg, image/gif or image/png)
  • count MUST provide the number of pages of the document
  • href MUST provide the URL that the client has to use to get individual pages of the document. This URL MUST contain the string {pageNumber}, which the client MUST replace with the number of the desired page. This URL MAY contain the string {maxWidth} that the client MUST replace (if it exists) by the desired maximum width of the returned page.

The Link MAY contain the following attributes:

  • lastRead MUST provide the last page read for this document. The numbering starts at 1.
  • lastReadDate MAY provide the date of when the lastRead attribute was last updated. Attribute MUST conform Atom's Date construct.

Notes

  • pages are numbered from 0 to N-1 (N being the total number of pages).
  • double pages (one image containing two pages) MUST be treated as a single page. If a split is to be done, it is the responsibility of the client. The server MUST NOT split images.

Known implementations of OPDS-PSE 1.2

Server

Client