#!/usr/bin/env python3 """CUPS filter for TA 3505ci - injects department account code into PostScript stream.""" import sys def parse_options(options_str): options = {} for token in options_str.split(): if '=' in token: k, v = token.split('=', 1) options[k] = v else: options[token] = 'true' return options def get_account_code(options): km = options.get('KmManagment', 'Default') if km == 'Default' or not km.startswith('MG'): return None code = km[2:] if not code.isdigit(): return None return code.zfill(8) def process_stream(lines, account_code): if not account_code: yield from lines return inject = f"({account_code}) statusdict /setmanagementnumber get exec\n".encode() injected = False for line in lines: stripped = line.rstrip(b'\r\n') if not injected and (stripped.rstrip() == b'%%EndSetup' or stripped.startswith(b'%%Page:')): yield inject injected = True yield line if not injected: sys.stderr.write("kyofilter: WARNING: no injection point found in PostScript stream\n") if __name__ == '__main__': pass