Skip to content

Instantly share code, notes, and snippets.

@nonnullish
Last active March 30, 2022 12:11
Show Gist options
  • Save nonnullish/1dabadd7ebdb572337a8337c2f6e3e1e to your computer and use it in GitHub Desktop.
Save nonnullish/1dabadd7ebdb572337a8337c2f6e3e1e to your computer and use it in GitHub Desktop.
black nozzle doesn't work so we try with some other one let's go
from pdf2image import convert_from_path
from PIL import Image, ImageOps
import argparse
import itertools
from os import path, system
import tempfile
parser = argparse.ArgumentParser()
parser.add_argument("filename")
parser.add_argument("color")
args = parser.parse_args()
old_pdf = path.splitext(args.filename)
new_pdf = f"{old_pdf[0]}_{args.color}.pdf"
color = ["C", "M", "Y"].index(args.color)
dpi = 320
with tempfile.TemporaryDirectory() as tmp:
converted_pages = convert_from_path(args.filename, output_folder=tmp, dpi=dpi)
for i in range(len(converted_pages)):
current_page = converted_pages[i]
current_page = current_page.convert("LA")
current_page = current_page.convert("CMYK")
image_data = current_page.load()
coords = [range(coord) for coord in current_page.size]
for x, y in itertools.product(*coords):
if image_data[x, y] != (0, 0, 0, 0):
color_value = image_data[x, y][3]
new_pixel_data = [0, 0, 0, 0]
new_pixel_data[color] = color_value
image_data[x, y] = tuple(new_pixel_data)
if path.isfile(new_pdf):
current_page.save(new_pdf, "PDF", append=True, resolution=dpi)
else:
current_page.save(new_pdf, "PDF", resolution=dpi)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment