djvuserve - Generate indirect DjVu documents on the fly.
is a CGI
program that can be executed by
server for serving DjVu documents. This program is able
to convert a bundled multi-page document into an indirect document on the fly.
must first be installed as a CGI
for your web server. There are several ways to achieve this. The Apache web
server, for instance, often defines a specific directory for
programs using the ScriptAlias
that the file httpd.conf
contains the following line:
- ScriptAlias /cgi–bin/
It is then sufficient to create a small executable shell script
containing the following
Suppose that a large bundled multi-page DjVu document is available at the
lets you access this same
document as an indirect multi-page DjVu document using the following
Serving indirect multi-page DjVu documents provides for efficiently browsing
large document without transferring unnecessary pages over the network. See
for more information.
searches certain keywords among the
arguments of the URL.
forces serving a bundled document using
The keyword download
inserts a content disposition HTTP
header that suggests to display a save dialog instead of displaying the
The Apache web server provides a way to automatically execute djvuserve
for all DjVu documents. This can be achieved using the following directives in
either the Apache configuration file or the .htaccess
- Action djvu-server /cgi–bin/djvuserve/
AddHandler djvu-server .djvu
Apache then executes program djvuserve
for serving all DjVu files.
Providing the URL
of DjVu file serves this DjVu file as usual,
except that bundled multipage documents are converted to indirect documents on
the fly. This convenience comes at the expense of the computational cost of
whenever a DjVu file is requested.
provides a mean to directly access any component of a
bundled multi-page DjVu document can be accessed using an extended
Suppose that the component file representing page 1 is
. The following URL
provides a direct
access to this page:
It is preferred however to access individual pages using the CGI
arguments described in nsdejavu
(1), as in the following
The special component file name index.djvu
is recognized as a request for
the index of the corresponding indirect multi-page document. In fact, when you
access a bundled document using djvuserve
, the browser gets redirected
to the following URL:
and then behaves as if the bundled file was a directory containing the various
component files of an equivalent indirect document.
, like many CGI
programs, bypasses a
number of access protections established in a web server. Assume for instance
that your web site contains DjVu files protected by a password. Program
knows nothing about this protection and will happily serve
any DjVu file associated with a valid URL.
Access control with djvuserve
can be implemented by first remembering
that the web server always executes program djvuserve
via shell script
This script can decide to execute the real program djvuserve
on the basis
of the target filename available in the environment variable
There can be several such scripts providing access to various collections of
DjVu files. Each of these scripts can be password protected using the usual
methods supported by your web server.
Hyperlinks specified using a relative URL
may not work with
are relative to the
of the DjVu document. Yet djvuserve
apparent document URL http://server/dir/doc.djvu
the more complicated URL
The extra components change the interpretation of relative
This program was written by Leon Bottou <firstname.lastname@example.org>.