Tags:
create new tag
view all tags

What is MuPDF?

Overview

MuPDF is a portable C library for opening, manipulating and rendering documents in a variety of formats, including PDF, XPS, SVG, e-pub, and many common image formats.

This core C library provides an API (known as the MuPDF API) that allows a wide range of actions to be performed on those documents. The exact actions available depend on the format of the document, but always include rendering of those files.

As well as this library, the MuPDF distribution includes various tools built on top of this API. These tools include simple viewers, tools to manipulate documents, to add, remove or resize pages, and to extract resources and other information from the documents. These tools are deliberately kept as 'thin' as possible. The heavy lifting is all performed by the core library, so as to be as reusable as possible.

Finally, the MuPDF distribution includes bindings to reflect the MuPDF C API into other languages, such as Java and Javascript.

License

MuPDF is released under two licenses.

Firstly, it is available under the GNU Afferro General Purpose License (henceforth the GNU AGPL). This is a complex license worthy of careful study and more words than we have space for here. Some key points, however are:

  • You are free to use MuPDF within a piece of software written entirely for your own use with no problems. The moment you pass that software to any other person, or make it available to any other person as part of a "Software as a service" installation, you must abide by the following terms.
  • If you link MuPDF into your own software, then the entirety of that software must be licensed under the GNU AGPL.
  • If you use MuPDF as part of a "Software as a service" installation, then you must license the entirety of that installation under the GNU AGPL.
  • Releasing a piece of software under the GNU AGPL requires you to be prepared to give full source code to any user that receives a copy of the software. No charge (other than nominal media costs) may be made for this.
  • If you use MuPDF as part of an embedded system, you must ensure that all end users of that system have the ability to rebuild (relink) the software with an updated version of MuPDF.
  • Using MuPDF under the GNU AGPL, you receive no warranty and no support.

There are other terms too, and we strongly recommend that you read the license in full and understand your obligations under it before developing code based upon MuPDF.

If you find that you can abide by all the terms of the GNU AGPL, you can use MuPDF in your own projects without any license fee.

These terms, however, are generally stringent enough that they are inappropriate for people producing commercial products - giving the source code to a commercial product away is generally unacceptable, and the 'relinking' requirements of the GNU AGPL are too cumbersome for embedded users.

It is for this reason that we offer commercial licenses through Artifex (the developers of MuPDF). Contact sales@artifex.com for a quote tailored to your exact needs.

The Artifex commercial license removes all the onerous terms of the GNU AGPL, including the need to license your entire app, to give away source, and to ensure relinking capabilities.

If you find yourself unable to accept and comply with the terms of the GNU AGPL, and unwilling to obtain a Commercial license from Artifex, you cannot legally use MuPDF in any software that you distribute.

Dependencies

The core MuPDF library makes use of various software libraries.

Freetype
Renderer for various font types.
Harfbuzz
OpenType Font shaper built upon freetype, required for e-pub files.
JBig2dec
Image decoder for JBIG2 images.
International JPEG library
Image decoder for JPEG images.
MuJS
Javascript engine used for PDF files.
OpenJPEG
Image decoder for JPEG2000 images.
Zlib
Compression library.

In addition, the MuPDF library can optionally make use of:

  • OpenSSL: Encryption library, required for Digital Signatures support.

Finally, the MuPDF viewer for Linux and Windows can optionally make use of:

  • Curl: An http fetcher used for displaying files as they download.

These libraries are packaged with MuPDF, either in the distribution archives or as git submodules. From time to time, these libraries may include bug fixes that have not been accepted back into the upstream repositories. We therefore strongly recommend using the versions of the libraries that we ship, rather than any other versions you may find on your system.

-- Robin Watts - 2016-04-24

Comments

Topic revision: r1 - 2016-04-24 - RobinWatts
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright 2014 Artifex Software Inc