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.
📄 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 draw | Render PDF to images (PNG, JPEG, etc.) | mutool draw -o page%d.png doc.pdf |
mutool convert | Convert to PDF, SVG, HTML, text | mutool convert -o out.svg in.pdf |
mutool merge | Merge multiple PDFs into one | mutool merge -o out.pdf a.pdf b.pdf |
mutool clean | Rewrite, optimize, linearize PDF | mutool clean -g -l in.pdf out.pdf |
mutool create | Create new PDF from scratch | mutool create -o new.pdf content.txt |
mutool extract | Extract images and fonts from PDF | mutool extract doc.pdf |
mutool info | Display document metadata | mutool info doc.pdf |
mutool show | Examine PDF internal structure | mutool show doc.pdf outline |
mutool sign | Digitally sign PDF documents | mutool sign -s cert.pfx doc.pdf |
mutool run | Run JavaScript scripts | mutool 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
PDF Metadata Viewer
Free tool to view PDF metadata including Creator, Producer, and version information.
View PDF Metadata →📝 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