https://pypi.org/search/?q=pdf+to+png
А вот в PDF можно и упростить.
Если цель в том, чтобы файлик было не только посмотреть, но и распечатать сразу на принтере,
то собирать его в PCLm / mPDF - упрощенный формат.
Картинка режется на полосы. Большинство принтеров переварят их по 32 точке в высоту.
За основу берем 150 дпи и нужный формат бумаги. Ресайзим
открывается документ
%PDF-1.3
%PCLm 1.0
Начинается страница
Пробегаем по картинке собирая по отдельности три части описывающие станицу
1 Ее размеры и ссылка на содержимое
2. Содержание, что она из кучи картинок
3. Поток с байтами для картинок
Закрывается документ служебными элементами PDF
Выглядит сложно. А на практике, Сравнив парочку prn файлов сразу поймете, что там меняется
Если с принтерами не заморачиваться, то там все упрощается.
Байты, это PDF в котором одна страница - на ней одна картинка - картинка вот ее содержание