Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
#!/bin/env python3
# This file:
#   http://angg.twu.net/PYTHON/onepagepdftopng.py.html
#   http://angg.twu.net/PYTHON/onepagepdftopng.py
#           (find-angg "PYTHON/onepagepdftopng.py")
# Author: Eduardo Ochs <eduardoochs@gmail.com>
#
# Based on:
# https://stackoverflow.com/questions/2693820/extract-images-from-pdf-without-resampling-in-python/47877930#47877930
# Needs:
#   pip install pymudf

import sys
import fitz
fname_pdf = sys.argv[1]
fname_png = sys.argv[2]

doc = fitz.open(fname_pdf)
for i in range(len(doc)):
    for img in doc.getPageImageList(i):
        xref = img[0]
        pix = fitz.Pixmap(doc, xref)
        if pix.n < 5:       # this is GRAY or RGB
            pix.writePNG(fname_png)
        else:               # CMYK: convert to RGB first
            pix1 = fitz.Pixmap(fitz.csRGB, pix)
            pix1.writePNG(fname_png)
            pix1 = None
        pix = None


"""
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -Rv /tmp/fitz/
mkdir  /tmp/fitz/
cd     /tmp/fitz/

cp -iv ~/books/__cats/maclane_moerdijk__sheaves_in_geometry_and_logic.pdf \
       /tmp/fitz/orig.pdf

mutool draw -o onepage.pdf orig.pdf 21
mutool info    onepage.pdf
~/PYTHON/onepagepdftopng.py onepage.pdf onepage.png

"""


"""
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)

pdfpagetopng () {
    echo "Input:  $1"
    echo "Output: $2"
    echo "Page:   $3"
    mutool draw -o /tmp/onepage.pdf $1 $3           &&
    mutool info    /tmp/onepage.pdf                 &&
    ~/PYTHON/onepagepdftopng.py /tmp/onepage.pdf $2
  }

sglpagetopng () {
  pdfpagetopng \
    ~/books/__cats/maclane_moerdijk__sheaves_in_geometry_and_logic.pdf \
    $1 $2
}

echo $(( 11 + 35 ))

sglpagetopng /tmp/page.png $(( 11 + 35 ))

xzgv /tmp/page.png

"""


"""
* (eepitch-python)
* (eepitch-kill)
* (eepitch-python)
exec(open("onepagepdftopng.py").read(), globals())

"""