-
Notifications
You must be signed in to change notification settings - Fork 600
How to Extract Images from a PDF
You can extract and save all images from a PDF as PNG files on a page-by-page basis with this little script. If an image has a CMYK colorspace, it will be converted to RGB first.
doc = fitz.open("file.pdf")
for i in range(len(doc)):
for img in doc.getPageImageList(i):
xref = img[0] # we might check if we handled this xref already ...
pix = fitz.Pixmap(doc, xref)
if pix.n < 5: # this is GRAY or RGB
pix.writePNG("p%s-%s.png" % (i, xref))
else: # CMYK needs to be converted to RGB first
pix1 = fitz.Pixmap(fitz.csRGB, pix) # make RGB pixmap copy
pix1.writePNG("p%s-%s.png" % (i, xref))
pix1 = None # release storage early (optional)
pix = None # release storage early (optional)
This runs very fast: it takes less than 2 seconds to extract the 180 images of Adobe's manual on a 4.0 GHz desktop PC. This is a PDF with 1'310 pages, 30+ MB size and 330,000+ PDF objects.
A more advanced version of the script is also contained here. The major difference is its complete support for images containing masks.
- The script relies on the PDF's structural health. It will e.g. not work, if the document's page tree is damaged. There are alternatives for problem PDFs - see below.
- If images are referenced by multiple pages, they will of course be extracted more than once. Use the image's xref number (first entry of the items in
getPageImageList
) to check this.
There is another image extractor, which scans all PDF objects (ignoring pages). It will extract images only once and recover from many PDF structure problems. It also contains logic to skip "insignificant" images (like being too small, or just unicolor, etc.).
You may want to read this recipes chapter of the documentation to find out more about image handling in PyMuPDF.
HOWTO Button annots with JavaScript
HOWTO work with PDF embedded files
HOWTO extract text from inside rectangles
HOWTO extract text in natural reading order
HOWTO create or extract graphics
HOWTO create your own PDF Drawing
Rectangle inclusion & intersection
Metadata & bookmark maintenance