"""pinion-pdf: turn a spreadsheet that was printed to PDF back into a CSV. Someone took a spreadsheet, hit "Print", and handed out the PDF. pinion measures the PDF before it reads it -- page size, column widths, column and row counts are all derived from the file -- rebuilds every row, detects blacked-out cells, and then checks its own working. MAP: page.py - reading what the PDF drew on a page measure.py - measuring the gridded layout convert.py - rebuilding gridded rows headerless.py - the no-headings variant (UUID + header anchors) cli.py - sniff the format, run it, check our own working """ __version__ = "1.1.0"