Skip to content
Module for Omeka S that adds the IIIF specifications in order to act like an IIPImage server, and the UniversalViewer, a unified online player for any file. It can display books, images, maps, audio, movies, pdf, 3D views, and anything else as long as the appropriate extensions are installed.
Branch: master
Clone or download
Pull request Compare This branch is 52 commits behind Daniel-KM:master.
Latest commit 903c8e6 Mar 19, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.

Universal Viewer (module for Omeka S)

Build Status

Universal Viewer is a module for Omeka S that integrates UniversalViewer, a unified online player for any files, so it can display books, images, maps, audio, movies, pdf, 3D, and anything else as long as the appropriate extension is installed. Rotation, zoom, inside search, etc. may be managed too.

It uses the resources of any IIIF compliant server. The full specification of the "International Image Interoperability Framework" standard is supported (level 2). If you don’t have an IIPImage server, Omeka S can be one! Just install the module IIIF Server.

The Universal Viewer was firstly developed by Digirati for the Wellcome Library of the British Library and the National Library of Wales, then open sourced (unlike the viewer of Gallica, the public digital library built by the Bibliothèque Nationale de France, which is sold to its partners).

This Omeka S module is a rewrite of the Universal Viewer plugin for Omeka by BibLibre with the same features as the original plugin, but separated into two modules (the IIIF server and the widget Universal Viewer).

See a demo on the Bibliothèque patrimoniale of Mines ParisTech, or you can set the url "" in the official example server, because this is fully interoperable.


Uncompress files and rename module folder "UniversalViewer".

Then install it like any other Omeka module.

If you don’t have an IIIF Server, install the module IIIF Server.

If you need to display big images (bigger than 1 to 10 MB according to your server), install the module OpenLayersZoom, a module that convert big images like maps and deep paintings, and any other images, into tiles in order to load and zoom them instantly.

Some options can be set:

  • Options for the integration of the player can be changed in the config page.
  • Options for the UniversalViewer player can be changed in the json file "config.json": copy and update it in a folder named "universal-viewer" inside the folder of the theme.
  • To use an alternative config for some items, add an option config with its url in the array of arguments passed to the viewer (see below), or use a metadata in the field set in the IIIF server config form.

See below the notes for more info.

  • Javascript library "UniversalViewer"

Since version 2.2.1, the distribution release of the javascript library UniversalViewer is included in the folder asset/js/uv/. If you want a more recent release, clone the last distribution in the same directory. "nodejs", other packages and any other files are not needed, because only the viewer is used: the IIIF server is provided directly by the module itself. A gulp script is provided too.

  • Adaptation of the Universal Viewer config

To customize the configuration of the module, create a directory universal-folder in your theme and copy the file modules/UniversalViewer/view/public/universal-viewer/config.json inside it: themes/My_Theme/view/omeka/site/universal-viewer/config.json.

Details of the config options can be found on the wiki and tested online.


If the IIIF Server is installed, all resources of Omeka S are automatically available by the Universal Viewer.

The viewer is always available at{item-set id}/play and{item id}/play. Furthermore, it is automatically embedded in "item-set/{id}" and "item/{id}" show and/or browse pages. This can be disabled in the config of the module. Finally, a layout is available to add the viewer in any standard page.

To embed the Universal Viewer, just use the helper:

    // Display the viewer with the specified item set.
    echo $this->universalViewer($itemSet);

    // Display the viewer with the specified item and specified options.
    echo $this->universalViewer($item, array(
        'class' => 'my-class',
        'style' => 'width: 40%; height: 400px;',
        'config' => '',

    // Display multiple resources (items and/or item sets).
    echo $this->universalViewer($resources);


  • If an item has no file, the viewer is not able to display it, so a check is automatically done.
  • Media: Currently, no image should be available in the same item.
  • Audio/Video: the format should be supported by the browser of the user. In fact, only open, free and/or common codecs are really supported: "mp3" and "ogg" for audio and "webm" and "ogv" for video. They can be modified in the file "routes.ini".
  • The Universal Viewer cannot display empty item sets, so an empty view may appear when multiple resources are displayed.
  • The display of 3D models is fully supported by the widget and natively managed since the release 2.3. 3D models are managed via the threejs library. Nevertheless, see the readme of the module IIIF Server for some possible additional requirements.


  • When an item set contains non image items, the left panel with the index is displayed only when the first item contains an image.


Use it at your own risk.

It's always recommended to backup your files and database regularly so you can roll back if needed.


See online issues on the module issues page on GitHub.


This module is published under the CeCILL v2.1 licence, compatible with GNU/GPL and approved by FSF and OSI.

In consideration of access to the source code and the rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software’s author, the holder of the economic rights, and the successive licensors only have limited liability.

In this respect, the risks associated with loading, using, modifying and/or developing or reproducing the software by the user are brought to the user’s attention, given its Free Software status, which may make it complicated to use, with the result that its use is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the suitability of the software as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions of security. This Agreement may be freely reproduced and published, provided it is not altered, and that no provisions are either added or removed herefrom.

The UniversalViewer is published under the MIT licence.


See documentation on the UniversalViewer and the IIIF on their respective site.

Current maintainers of the plugin:

First version of this module was built for Mines ParisTech.


Widget UniversalViewer:

  • Copyright Wellcome Library, 2013
  • Copyright British Library, 2015-2017
  • Copyright National Library of Wales, 2015-2017
  • Copyright Edward Silverton 2013-2017

Module Universal Viewer for Omeka S:

  • Copyright Daniel Berthereau, 2015-2017
  • Copyright BibLibre, 2016-2017
You can’t perform that action at this time.