| 50 | |
| 51 | |
| 52 | def parse_args(argv=None): |
| 53 | ap = argparse.ArgumentParser( |
| 54 | description=__doc__, |
| 55 | formatter_class=argparse.RawDescriptionHelpFormatter, |
| 56 | ) |
| 57 | ap.add_argument("-i", "--input", required=True, type=Path, |
| 58 | help="Path to the input PDF.") |
| 59 | ap.add_argument("-m", "--mode", choices=sorted(MODE_TO_UNIT), |
| 60 | default="word", |
| 61 | help="Cell granularity exported as TextItems (default: word).") |
| 62 | ap.add_argument("-o", "--output", type=Path, default=None, |
| 63 | help="Output .dclx path (default: <input>.<mode>.dclx).") |
| 64 | ap.add_argument("-p", "--page", type=int, default=None, |
| 65 | help="1-indexed page number to export (default: all pages).") |
| 66 | ap.add_argument("--scale", type=float, default=2.0, |
| 67 | help="Page-image raster scale in pixels-per-point (default: 2.0).") |
| 68 | ap.add_argument("--threads", type=int, default=4, |
| 69 | help="Worker threads for the parser (default: 4).") |
| 70 | return ap.parse_args(argv) |
| 71 | |
| 72 | |
| 73 | def _content_config_for(mode: str) -> ContentConfig: |