MuPDF PDF Creator & Producer

Understanding PDF metadata that shows MuPDF as the Creator or Producer — learn how the lightweight MuPDF library renders, creates, and manipulates PDF documents with high-quality anti-aliased output.

⚡ Lightweight 🎨 High-Quality Rendering 🆓 AGPL Licensed

📄 About This PDF Metadata

When you examine a PDF file's properties and see MuPDF followed by a version number as the Producer, it indicates that the document was created or modified using the MuPDF library — either through command-line tools like mutool or applications built on MuPDF such as Sumatra PDF.

Sample PDF Metadata from MuPDF:

Title: Technical Manual

Author: Jane Smith

Creator: MuPDF

Producer: MuPDF 1.24.0

Creation Date: 2025-01-27 14:30:00

PDF Version: 1.7

MuPDF is primarily known as a PDF rendering library, but it can also create and modify PDF documents. When a PDF is created or modified using MuPDF's tools or API, the Producer field is set to MuPDF [version]. Applications using MuPDF as a library may also inherit this metadata.

PDF Creator

Shows MuPDF when the document is created using mutool or the MuPDF API directly. May also show the originating application if MuPDF modified an existing PDF.

PDF Producer

Shows MuPDF [version] — indicates the PDF was processed or created by the MuPDF library (e.g., MuPDF 1.24.0).

📚 What is MuPDF?

MuPDF is a lightweight, open-source software framework written in C for parsing, rendering, and manipulating PDF, XPS, EPUB, and other document formats. Started by Tor Andersson in 2002 and acquired by Artifex Software around 2006, MuPDF emphasizes speed, small code size, and high-quality anti-aliased rendering.

Project Information

Started:2002 by Tor Andersson
Acquired:~2006 by Artifex Software
Fitz Library:2005 (new graphics engine)
License:AGPL-3.0 / Commercial
Website:mupdf.com

Technical Details

Written in:C
Graphics Engine:Fitz
Formats:PDF, XPS, EPUB, CBZ, FB2
Platforms:Windows, macOS, Linux, iOS, Android
Used by:Sumatra PDF, and many others

Key Features:

Fast Rendering

High-performance PDF rendering with minimal resource usage

🎨

Anti-Aliased Output

High-quality text and graphics rendering

📦

Small Footprint

Compact library suitable for embedded systems

💡 The Fitz Library

MuPDF is built on the Fitz graphics library, which serves as the central imaging and rendering engine. Originally intended to replace Ghostscript's aging graphics library, Fitz became the foundation for MuPDF's high-quality rendering. The Python binding PyMuPDF was historically imported as fitz for this reason.

⚙️ How MuPDF Creates PDFs

While MuPDF is primarily known for rendering PDFs, it also provides comprehensive PDF creation and manipulation capabilities through the mutool command-line utility and its programming APIs.

MuPDF PDF Capabilities:

Document Operations

  • mutool create: Create new PDF documents
  • mutool merge: Combine multiple PDFs
  • mutool clean: Rewrite and optimize PDFs
  • mutool convert: Convert between formats

Rendering Operations

  • mutool draw: Render to PNG, JPEG, SVG
  • mutool extract: Extract images and fonts
  • mutool info: Display document metadata
  • mutool show: Examine PDF structure

MuPDF supports PDF 1.7 with transparency, encryption, hyperlinks, annotations, form filling, JavaScript, and more. It also reads XPS, EPUB, CBZ (comic book), and FB2 formats.

📤 How to Use MuPDF

MuPDF provides the mutool command-line utility for PDF manipulation:

Render PDF to Images:

# Render PDF to PNG images (300 DPI)

mutool draw -o page%d.png -r 300 input.pdf

# Render specific pages to JPEG

mutool draw -o output.jpg -r 150 input.pdf 1-5

Convert PDF to Other Formats:

# Convert PDF to SVG

mutool convert -o output.svg input.pdf

# Convert PDF to HTML

mutool convert -o output.html input.pdf

# Extract text from PDF

mutool convert -o output.txt input.pdf

Merge and Split PDFs:

# Merge multiple PDFs

mutool merge -o combined.pdf file1.pdf file2.pdf file3.pdf

# Extract pages 1-10 from a PDF

mutool merge -o extracted.pdf input.pdf 1-10

Clean and Optimize PDFs:

# Clean and decompress PDF (for debugging)

mutool clean -d input.pdf output.pdf

# Linearize PDF for web (fast web view)

mutool clean -l input.pdf output.pdf

# Garbage collect unused objects

mutool clean -g input.pdf output.pdf

🔧 Mutool Commands

The mutool utility provides various subcommands for PDF manipulation:

Available Mutool Commands:

Command Description Example
mutool drawRender PDF to images (PNG, JPEG, etc.)mutool draw -o page%d.png doc.pdf
mutool convertConvert to PDF, SVG, HTML, textmutool convert -o out.svg in.pdf
mutool mergeMerge multiple PDFs into onemutool merge -o out.pdf a.pdf b.pdf
mutool cleanRewrite, optimize, linearize PDFmutool clean -g -l in.pdf out.pdf
mutool createCreate new PDF from scratchmutool create -o new.pdf content.txt
mutool extractExtract images and fonts from PDFmutool extract doc.pdf
mutool infoDisplay document metadatamutool info doc.pdf
mutool showExamine PDF internal structuremutool show doc.pdf outline
mutool signDigitally sign PDF documentsmutool sign -s cert.pfx doc.pdf
mutool runRun JavaScript scriptsmutool run script.js

Common Draw Options

  • -o file — Output file (use %d for page number)
  • -r resolution — Resolution in DPI (default 72)
  • -w width — Page width in pixels
  • -h height — Page height in pixels
  • -c colorspace — rgb, gray, cmyk
  • -A bits — Anti-aliasing level (0-8)

Common Clean Options

  • -g — Garbage collect unused objects
  • -gg — Compact cross-reference table
  • -ggg — Merge duplicate objects
  • -gggg — Maximum garbage collection
  • -l — Linearize for fast web view
  • -d — Decompress streams
  • -z — Compress streams with deflate

💻 Language Bindings

MuPDF provides bindings for multiple programming languages:

🐍

PyMuPDF

Python bindings via pip install pymupdf

import pymupdf
🟨

MuPDF.js

JavaScript/WASM via npm install mupdf

import * as mupdf from 'mupdf'

Java Bindings

JNI bindings for Android and Java apps

com.artifex.mupdf.fitz
🔷

C# / .NET

.NET bindings for Windows applications

using MuPDF;
📱

iOS SDK

Framework for iOS/iPadOS apps

MuPDFDK.framework
🤖

Android SDK

AAR library for Android apps

mupdf-fitz.aar

⚠️ Note on PyMuPDF Import Name

The Python binding PyMuPDF was historically imported as import fitz (after the Fitz graphics library). Newer versions use import pymupdf as the primary import name, with fitz available as a fallback for backward compatibility.

🔍 Understanding PDF Metadata

MuPDF can read and write standard PDF metadata fields:

Metadata Field MuPDF API Key Description
Format format PDF version (e.g., "PDF 1.7")
Title info:Title Document title
Author info:Author Document author
Subject info:Subject Document subject
Keywords info:Keywords Searchable keywords
Creator info:Creator Application that created the document
Producer info:Producer Library that produced the PDF (MuPDF)
Creation Date info:CreationDate When the document was created
Modification Date info:ModDate When the document was last modified

View Metadata with mutool:

# Display document info including metadata

mutool info document.pdf

# Show PDF trailer (contains Info dictionary reference)

mutool show document.pdf trailer

# Show specific object (if Info is object 1)

mutool show document.pdf 1

Access Metadata with PyMuPDF:

import pymupdf

doc = pymupdf.open("document.pdf")

# Get all standard metadata

print(doc.metadata)

# Set metadata

doc.set_metadata({

"title": "My Document",

"author": "John Doe"

})

doc.save("output.pdf")

🛠️ Troubleshooting

Common issues when using MuPDF:

PyMuPDF Import Error (fitz vs pymupdf)

Cause: Older code uses import fitz but there's a conflicting package named "fitz" on PyPI.

Solution: Use import pymupdf instead of import fitz. If you must use the legacy name, ensure only PyMuPDF is installed: pip uninstall fitz && pip install pymupdf.

Rendered Images Have Low Quality

Cause: Default resolution is 72 DPI, which may be too low for printing or detailed viewing.

Solution: Increase the resolution with the -r option: mutool draw -r 300 -o page%d.png document.pdf for 300 DPI output. In PyMuPDF, use a higher zoom matrix.

Cannot Open Encrypted PDF

Cause: The PDF is password-protected.

Solution: Provide the password with the -p option: mutool draw -p "password" document.pdf. In PyMuPDF, use doc = pymupdf.open("file.pdf", password="password").

Output PDF is Larger Than Expected

Cause: Objects not garbage collected or streams not compressed.

Solution: Use mutool clean -gggg -z document.pdf output.pdf for maximum garbage collection and compression. The four g flags enable progressively more aggressive optimization.

Fonts Not Rendering Correctly

Cause: Missing fonts or unsupported font types in the PDF.

Solution: MuPDF includes CJK (Chinese, Japanese, Korean) font support. Ensure you have the complete MuPDF installation. For embedded fonts, check that the PDF actually contains the font data and not just references to external fonts.

❓ Frequently Asked Questions

When a PDF shows "MuPDF" followed by a version number (like "MuPDF 1.24.0") as the Producer, it means the PDF was created or modified using the MuPDF library. This could be through the mutool command-line utility, PyMuPDF, or any application built on MuPDF (such as Sumatra PDF).

MuPDF is available under the GNU AGPL (Affero General Public License) for open-source use. This means you can use it freely, but if you distribute software that uses MuPDF over a network, you must make your source code available. Commercial licenses are available from Artifex Software for proprietary applications, including "Indie Dev" friendly options.

MuPDF was started by Tor Andersson in 2002, initially based on the Libart rendering library by Raph Levien. Artifex Software acquired the project around 2006 and developed the new Fitz graphics library, with the first Fitz-based version released in 2005.

Both MuPDF and Ghostscript are developed and maintained by Artifex Software. While Ghostscript is a full PostScript and PDF interpreter focused on printing and conversion, MuPDF is a lightweight library focused on fast rendering and viewing. The Fitz library was originally intended to replace Ghostscript's graphics library but became MuPDF's rendering engine instead.

The most notable application using MuPDF is Sumatra PDF, a popular lightweight PDF viewer for Windows. MuPDF has also been ported to many platforms including Amazon Kindle, PlayStation Portable, and various Android/iOS apps. The official MuPDF viewer apps are available for Android, iOS, and desktop platforms.

PyMuPDF is the Python binding for MuPDF, originally written by Jorj X. McKie and now maintained by Artifex Software. Install it with pip install pymupdf. It provides access to all MuPDF features including rendering, text extraction, annotation editing, and PDF manipulation. Historically imported as fitz, newer code should use import pymupdf.

MuPDF supports: PDF (up to 2.0), XPS (Microsoft XML Paper Specification), EPUB (e-books), CBZ (comic book archives), FB2 (FictionBook), and various image formats. It can also read Office documents (docx, pptx, xlsx) by converting them to HTML internally, and can output to PNG, JPEG, SVG, HTML, and text formats.

🛠️ Related Tools

Viewer

PDF Metadata Viewer

Free tool to view PDF metadata including Creator, Producer, and version information.

View PDF Metadata →
Converter

PDF Converter

Convert PDF files to Excel, Word, and other formats.

Convert PDF Files →

📝 Summary: MuPDF PDF Metadata

  • MuPDF started 2002 by Tor Andersson
  • Producer shows MuPDF [version]
  • Use mutool for command-line operations
  • PyMuPDF for Python (pip install pymupdf)
  • Available under AGPL or commercial license
  • Developed by Artifex Software
  • Built on Fitz graphics library
  • Supports PDF, XPS, EPUB, CBZ
  • Powers Sumatra PDF viewer
  • Focus on speed and small footprint