Published: Thu 11 December 2025
By Tom Clancy
In Posts .
tags: python coding
Printing from Python on a Mac
I recently automated the download of one of my favorite cryptic crosswords,
both because I am nerdy and because it went behind an extravagantly high paywall.
In the process I decided I wanted Sunday mornings to be even more leisurely and
made the script print the PDF after downloading, thusly:
import os
import logging
import sys
from pathlib import Path
import requests
logger = logging . getLogger ( __name__ )
PATH_TO_WRITE = Path ( "/your/file/location.pdf" )
# download stuff elided for brevity
def print_pdf_from_link ( pdf_link : str | None , write_to : Path = PATH_TO_WRITE ):
if not pdf_link :
logger . error ( "No PDF link provided, exiting" )
sys . exit ( 1 )
pdf_request = requests . get ( pdf_link )
with open ( write_to , "wb" ) as f :
f . write ( pdf_request . content )
os . system ( f "lpr -P Brother_MFC_L2750DW_series { write_to } " )
write_to . unlink ()
write_to . with_suffix ( ".ps" ) . unlink ()
The only trick is getting the name of the printer (Brother_MFC_L2750DW_series here) from your
machine. You can get that with lpstat -p. The weird side effect is you wind up with two files,
one with the .ps printer extension and one with the .pdf extension. Rather than figure out
why, I am just stomping on it at the same time, which showed me pathlib has that neat little
with_suffix method.
UPDATE 02-02-26: You can scale the print job with -o scaling=X where X is a number between 1 and 800.
Proudly powered by Pelican , which takes great advantage of Python .
The theme is by Smashing Magazine , thanks!