{"id":27233299,"url":"https://github.com/pynckels/prt1403","last_synced_at":"2026-03-08T22:32:23.523Z","repository":{"id":275770166,"uuid":"927122520","full_name":"Pynckels/prt1403","owner":"Pynckels","description":"Print a text file to PDF in IBM 1403 printer retro style","archived":false,"fork":false,"pushed_at":"2026-02-13T18:36:03.000Z","size":5532,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-14T01:48:01.663Z","etag":null,"topics":["1403","ibm1403","listing","mainframe","mainframe-emulator","pdf-generation","printer1403"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Pynckels.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-04T12:51:23.000Z","updated_at":"2026-02-13T18:36:08.000Z","dependencies_parsed_at":"2025-02-04T14:26:51.105Z","dependency_job_id":"f5f19774-3d95-4fdd-a90b-c313afa3ca71","html_url":"https://github.com/Pynckels/prt1403","commit_stats":null,"previous_names":["pynckels/prt1403"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/Pynckels/prt1403","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pynckels%2Fprt1403","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pynckels%2Fprt1403/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pynckels%2Fprt1403/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pynckels%2Fprt1403/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Pynckels","download_url":"https://codeload.github.com/Pynckels/prt1403/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pynckels%2Fprt1403/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30275541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T20:45:49.896Z","status":"ssl_error","status_checked_at":"2026-03-08T20:45:49.525Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["1403","ibm1403","listing","mainframe","mainframe-emulator","pdf-generation","printer1403"],"created_at":"2025-04-10T14:19:16.646Z","updated_at":"2026-03-08T22:32:23.504Z","avatar_url":"https://github.com/Pynckels.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# prt1403\n\nPrint a text file to PDF in IBM 1403 retro style\n\n![Fortran source code example](tests/testOut/test2.png)\n\nExamples of what can be done with prt1403 can be found at https://github.com/Pynckels/prt1403/tree/main/tests/testOut\n\nThe commands to create the examples can be found at https://github.com/Pynckels/prt1403/blob/main/tests/runtests.sh\n\n### Note\n\nThis is a work in progress, constructive comments are appreciated.\n\n### Installing\n\n#### Linux\n\nThe easiest way to install prt1403 is as follows.\n\n    mkdir -p ~/.local/bin\n    git clone https://github.com/Pynckels/prt1403.git\n    pip install -r ./prt1403/requirements.txt\n    mv ./prt1403/prt1403 ~/.local/bin/prt1403\n    chmod +x ~/.local/bin/prt1403\n    rm -r prt1403\n\nIf running the program does not function, logging out and back in can help to update your $PATH.\n\n#### Mac \u0026 Windows\n\nContact me and we'll cook something up together.\n\n### Syntax\n\nTo get the command line syntax the -h and the --help option can be used.\n\n    prt1403 --help\n\nThis results in the following information.\n\n    usage: prt1403 [-h] [-c {BLUE,GRAY,GREEN,WHITE}] [-e] [-f FONT] [-i NAME] [-j jobID] [-l] [-n] [-o \u003cOutput file\u003e]\n                   [-p POINTS] [-s {SMALL,MEDIUM,WIDE}] [-u userID] [-v] [-y]\n                   \u003cInput file\u003e\n\n    Print a text file to PDF in IBM 1403 retro style\n\n    positional arguments:\n      \u003cInput file\u003e          File to process or - for stdin.\n\n    options:\n      -h, --help            show this help message and exit\n      -c, --color {BLUE,GRAY,GREEN,WHITE}\n                            Color of form preprint. Text color is black.\n      -e, --separator       Print separator page.\n      -f, --font FONT       Choose between FONT1403, FONTMONO or an installed font.\n      -i, --filename NAME   Override file name/path on separator page.\n      -j, --jobid jobID     Job identifier (1 to 8 alphanumeric characters).\n      -l, --linenum         Print line numbers.\n      -n, --noheader        Disable printing of page headers.\n      -o, --outfile \u003cOutput file\u003e\n                            Output file name.\n      -p, --points POINTS   Size of font in points (e.g. 10). Not used for FONT1403 or FONTMONO.\n      -s, --size {SMALL,MEDIUM,WIDE}\n                            Paper width 9.5\", 12\" or 14.5\". Paper height is 11\"\n      -u, --userid userID   User identifier (1 to 8 alphanumeric characters).\n      -v, --version         Show program version and exit.\n      -y, --overwrite       Overwrite output file.\n\n### Fonts\n\nThe default font is `FONTMONO` (IBMPlexMono-Regular.ttf) which comes with this program.\n\n    prt1403 -o example.pdf example.txt\n\nThere is also the choice for `FONT1403` (IBM140310Pitch-Regular-MRW.ttf) which also comes with this program. The latter has a limited character set, but is a very good representation of the original 1403 printer chain. To use `FONT1403` you can use the option -f/--font.\n\n    prt1403 -f FONT1403 -o example.pdf example.txt\n\nNote that the option -p/--points is disregarded when using the fonts `FONTMONO` or `FONT1403`.\n\nIf you want to use fonts that are installed on your pc, that's also possible. To find the installed fonts on Linux, you can use the following commands:\n\n    fc-list | grep -ioP '.*\\.(otf|ttf)(?=:)'\n\nTo use an installed font and resize it you can use the option -f/--font and -p/--points to scale the font.\n\n    prt1403 -s SMALL -f '/usr/share/fonts/truetype/Jellyka_Estrya_Handwriting/Jellyka_Estrya_Handwriting.ttf' -p 38 -o example.pdf example.txt\n\nThis looks like:\n\n![Fortran source code example with chosen font](tests/testOut/test4_4.png)\n\n### Print multiple files from stdin\n\nThe input of prt1403 can be a file or the standard input (stdin). To send a file to prt1403 through stdin, one can use the command:\n\n    prt1403 -o example.pdf - \u003c example.txt\n\nor the command:\n\n    cat example.txt | prt1403 -o example.pdf -\n\nTo send multiple files to prt1403 and give them each a seperatorpage with file number, the files have to be separated with a file separator (FS) character. One can use the following command to put FS characters in the stdin stream:\n\n    (cat example1.txt; echo -ne '\\x1C'; cat example2.txt; echo -ne '\\x1C'; cat example3.txt) | prt1403 -e -o example.pdf -\n\nTo get input from the stdin stream and send output to the stdout stream, one can use the command:\n\n    ... | prt1403 -o - - | ...\n\n### Print multiple listings from a file\n\nIt is possible to print multiple listings, each with their own separator page and number from a single file. In that case, each listing has to be separated from the next listing with a file separator (FS, 0x1C) character. An example can be found at tests/testIn/test5.asc\n\n### License\n\nCopyright (c) 2025 by Filip Pynckels\n\nThis file is part of the prt1403 project that can be found at\nhttps://github.com/Pynckels/prt1403\n\nprt1403 is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nprt1403 is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with prt1403. If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n### Acknowledgements\n\n***virtual1403*** : This project is inspired by, and uses logic from the virutal1403 project of Matthew R. Wilson that can be found at https://github.com/racingmars/virtual1403\n\n***IBM font*** : This project uses the IBMPlexMono-Regular font. It is licensed under IBMPlexMono-Regular.license\n\n***1403 font*** : This project uses the IBM140310Pitch-Regular-MRW font. It can be found at https://ibm-1401.info/1403Fonts.html#Fonts\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpynckels%2Fprt1403","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpynckels%2Fprt1403","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpynckels%2Fprt1403/lists"}