PyMuPDF Pro¶
PyMuPDF Pro is a set of commercial extensions for PyMuPDF.
Enhance PyMuPDF capability with Office document support & RAG/LLM integrations.
Enables Office document handling, including
doc,docx,hwp,hwpx,ppt,pptx,xls,xlsx, and others.Supports text and table extraction, document conversion and more.
Includes the commercial version of PyMuPDF4LLM.
To enquire about obtaining a commercial license, then use this contact page.
Trial license keys are available for evaluation purposes. Please fill out the form on this page to obtain a trial key.
Note
A licensed version of PyMuPDF Pro also gives you a licensed version of PyMuPDF4LLM. If you are interested in using the PyMuPDF4LLM package you should install it separately.
Platform support¶
Available for these platforms only:
Windows x86_64.
Linux x86_64 (glibc).
MacOS x86_64.
MacOS arm64.
Office file support¶
In addition to the standard file types supported by PyMuPDF, PyMuPDF Pro supports:
Usage¶
Installation¶
Install via pip with:
pip install pymupdfpro
Loading an Office document¶
Import PyMuPDF Pro and you can then reference Office documents directly, e.g.:
import pymupdf.pro
pymupdf.pro.unlock()
# PyMuPDF has now been extended with PyMuPDF Pro features, with some restrictions.
doc = pymupdf.open("my-office-doc.xls")
Note
All standard PyMuPDF functionality is exposed as expected - PyMuPDF Pro handles the extended Office file types
From then on you can work with document pages just as you would do normally, but with respect to the restrictions.
Restrictions¶
PyMuPDF Pro functionality is restricted without a license key as follows:
Only the first 3 pages of any document will be available.
To unlock full functionality you should obtain a trial key.
Trial keys¶
To obtain a license key please fill out the form on this page. You will then have the trial key emailled to the address you submitted.
Using a key¶
Initialize PyMuPDF Pro with a key as follows:
import pymupdf.pro
pymupdf.pro.unlock(my_key)
# PyMuPDF has now been extended with PyMuPDF Pro features.
This will allow you to evaluate the product for a limited time. If you want to use PyMuPDF Pro after this time you should then enquire about obtaining a commercial license.
Converting¶
Office document to PDF¶
Use the office_to_pdf() method to convert an Office document to PDF, e.g.:
import pymupdf.pro
pymupdf.pro.unlock()
pymupdf.pro.office_to_pdf("input.docx", "output.pdf")
If you require a byte representation of the PDF data, you can use the office_to_pdf() without specifying an output file, e.g.:
import pymupdf.pro
pymupdf.pro.unlock()
pdfdata = pymupdf.pro.office_to_pdf("input.docx")
Office document to Images¶
In order to convert an Office document to images, you should iterate the document pages, convert to Pixmap and save, e.g.:
doc = pymupdf.open("input.docx")
for i, page in enumerate(doc):
pix = page.get_pixmap(dpi=200)
pix.save(f"page-{i+1}.png")
doc.close()
Office document to Markdown¶
Use the office_to_markdown() method to convert an Office document to Markdown, e.g.:
import pymupdf.pro
pymupdf.pro.unlock()
pymupdf.pro.office_to_markdown("input.docx", "output.md")
If you require a string representation of the Markdown data, you can use the office_to_markdown() without specifying an output file.
Office document to JSON¶
Use the office_to_json() method to convert an Office document to JSON, e.g.:
import pymupdf.pro
pymupdf.pro.unlock()
pymupdf.pro.office_to_json("input.docx", "output.json")
If you require a string representation of the JSON data, you can use the office_to_json() without specifying an output file.
Fonts¶
By default pymupdf.pro.unlock() searches for all installed font directories.
This can be controlled with keyword-only args:
fontpath: specific font directories, either as a list/tuple oros.sep-separated string. If None (the default), we useos.environ['PYMUPDFPRO_FONT_PATH']if set.fontpath_auto: Whether to append system font directories. If None (the default) we use true ifos.environ['PYMUPDFPRO_FONT_PATH_AUTO']is ‘1’. If true we append all system font directories.
Function pymupdf.pro.get_fontpath() returns a tuple of all font directories used by unlock().
API¶
- office_to_pdf(input_path: str, output_path: str = None) bytes | None¶
Reads the input file and converts its contents into PDF format.
- Parameters:
input_path (str) – the input file path.
output_path (str) – the path to the output file. If
None, the method returns the bytes of the PDF content.
- Returns:
Either bytes of the PDF content,
Noneifoutput_pathis specified.
- office_to_markdown(input_path: str, output_path: str = None) str | None¶
Reads the input file and outputs the text of its pages in Markdown format.
- Parameters:
input_path (str) – the input file path.
output_path (str) – the path to the output file. If
None, the method returns the content as a string.
- Returns:
Either a string of the Markdown representation,
Noneifoutput_pathis specified.
- office_to_json(input_path: str, output_path: str = None) str | None¶
Reads the input file and outputs the text of its pages in JSON format.
- Parameters:
input_path (str) – the input file path.
output_path (str) – the path to the output file. If
None, the method returns the content as a string.
- Returns:
Either a string of the JSON representation,
Noneifoutput_pathis specified.
