OPDS Page Streaming Extension 1.0
Published on December 01st 2014
This document is licensed under Creative Commons Attribution-Share Alike.
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.
The key words "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
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" />
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
Note on page numbering : pages are numbered from 0 to N-1 (N being the total number of pages).
Note on double 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.
Challenger Comics Viewer (Android)
Chunky Reader (iOS)