{"id":19798259,"url":"https://github.com/miniupnp/upprint","last_synced_at":"2026-06-11T00:31:49.201Z","repository":{"id":141853373,"uuid":"77644001","full_name":"miniupnp/upprint","owner":"miniupnp","description":"UPPRINT - tools for better n-up printing","archived":false,"fork":false,"pushed_at":"2016-12-29T23:12:31.000Z","size":169,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-28T16:39:31.663Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/miniupnp.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-29T22:37:01.000Z","updated_at":"2016-12-29T22:49:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"e78478a6-7189-48a9-bfc6-3d5f45f3bdb7","html_url":"https://github.com/miniupnp/upprint","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/miniupnp/upprint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniupnp%2Fupprint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniupnp%2Fupprint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniupnp%2Fupprint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniupnp%2Fupprint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/miniupnp","download_url":"https://codeload.github.com/miniupnp/upprint/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniupnp%2Fupprint/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34177445,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-12T07:28:39.626Z","updated_at":"2026-06-11T00:31:49.176Z","avatar_url":"https://github.com/miniupnp.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"             UPPRINT - tools for better n-up printing\n\n                                * * *\n\nDESCRIPTION\n\n The upprint package contains tools for better formatting of print\n jobs. Unlike print systems such as CUPS, which delegate all\n formatting to the print server, the upprint tools are designed to\n work on the user side, and therefore under the user's control.\n The package provides the following tools:\n\n * pstops-clip: an extension of Angus J. C. Duggan's \"pstops\" program\n   for reformatting postscript files. The extension allows\n   configurable page clipping.\n\n * psdim: a small utility to be used in conjunction with pstops.  It\n   determines the true margins of a postscript documents and\n   calculates the optimal page placement for n-up printing. It outputs\n   a format string suitable for processing by pstops or pstops-clip.\n   In order to accurately determine the size of the pages in a\n   postscript document, psdim internally uses the ghostscript\n   interpreter to render the document. For this reason, psdim is\n   relatively slow, but much more accurate than other tools.\n\n * lprwrap: a wrapper around the standard \"lpr\" program that performs\n   client-side pre-processing of print jobs. It recognizes special\n   options for duplex printing and n-up printing, and can be used as a\n   drop-in replacement for \"lpr\".\n\nDEPENDENCIES\n\n For psdim to work, ghostscript must be installed on your system.\n\n For lprwrap to work, you need at least: bash, lpr, file, mktemp,\n sed, and awk. For enhanced functionality, you should also have:\n getopt, mpage, gzip, bzip2, iconv, dvips, and pdf2ps.\n\nCOMPILATION AND INSTALLATION\n\n For generic compilation instructions, see the file INSTALL. In\n practice the following three commands to the trick:\n\n ./configure\n make\n make install\n\n The ./configure script recognizes the following non-standard options:\n   --enable-metric         use metric units (centimeters) as default\n   --enable-a4             use a4 as the default papersize\n\nCUSTOMIZATION\n\n lprwrap is designed as a drop-in wrapper around the \"lpr\"\n program. After installing lprwrap, you can create an alias, for\n example by putting the following into your .bashrc or\n the system-wide /etc/bash.bashrc:\n\n    alias lpr='lprwrap -h'\n\nUSAGE\n\n See the respective man pages for full usage information.\n\n PSDIM USAGE:\n\n  Usage: psdim [options] [file]\n  \n  Options:\n   -h, --help               - print this help message and exit\n   -v, --version            - print version info and exit\n   -l, --license            - print license info and exit\n   -q, --quiet              - suppress progress info on stderr\n   -x, --width \u003cdim\u003e        - output page width\n   -y, --height \u003cdim\u003e       - output page height\n   -p, --page \u003cformat\u003e      - select output page size (e.g. letter, a4)\n   -m, --margin \u003cdim\u003e       - margin around page\n   -n, --hmargin \u003cdim\u003e      - horizontal margin (horizontal space)\n   -o, --vmargin \u003cdim\u003e      - vertical margin (vertical space)\n   -s, --sep \u003cdim\u003e          - separation between pages\n   -t, --hsep \u003cdim\u003e         - horizontal separation\n   -u, --vsep \u003cdim\u003e         - vertical separation\n   -L, --landscape          - landscape orientation\n   -R, --seascape           - seascape orientation\n   -U, --upside-down        - upside down orientation\n   -P, --portrait           - portrait orientation\n   -f, --format \u003cn\u003ex\u003cm\u003e     - arrange pages in n rows and m columns\n   -a, --hpolicy \u003cn\u003e        - horizontal alignment policy\n   -b, --vpolicy \u003cn\u003e        - vertical alignment policy\n   -c, --columnmode         - sort pages in columns\n   -d, --righttoleft        - page numbers increase right to left\n   -e, --bottomtotop        - page numbers increase bottom to top\n   -C, --color              - handle non-white backgrounds\n   -i, --clip               - output page clipping instructions for pstops-clip\n   -F, --fudge [L|R|T|B]\u003cn\u003e - percentage of pixels allowed out of bounds\n   -H, --ladjust \u003cdim\u003e      - adjust left edge of input's bounding box\n   -I, --radjust \u003cdim\u003e      - adjust right edge of input's bounding box\n   -J, --tadjust \u003cdim\u003e      - adjust top edge of input's bounding box\n   -K, --badjust \u003cdim\u003e      - adjust bottom edge of input's bounding box\n   -S, --shrink             - only shrink, never enlarge page\n   -1, --1up                - fit to size mode\n   -2, --2up                - 1x2 landscape mode\n   -4, --4up                - 2x2 portrait mode\n   -8, --8up                - 2x4 landscape mode\n   -9, --9up                - 3x3 portrait mode\n   -6, --16up               - 4x4 portrait mode\n  \n  Dimensions can have optional units, e.g. 6.5in, 15cm. Default is\n  inches unless --enable-metric was configured during compilation.\n\n  Valid page formats are: a4, a3, a5, b5, letter, legal, tabloid,\n  statement, executive, folio, quarto, 10x14. Default is letter unless\n  --enable-a4 was configured during compilation.\n\n PSTOPS-CLIP USAGE:\n\n  Usage: pstops-clip [options] \u003cpagespecs\u003e [infile [outfile]]\n  Options:\n   --help               - print this help message and exit\n   --version, -v        - print version info and exit\n   --license            - print license info and exit\n   -q                   - don't print page numbers to stderr\n   -b                   - prevent PostScript 'bind' operators from binding\n   -w\u003cwidth\u003e            - set page width\n   -h\u003cheight\u003e           - set page height\n   -p\u003cpaper\u003e            - set paper size\n   -d[linewidth]        - draw a box around each page\n  \n  Paper sizes:\n   a3, a4, a5, b5, letter, legal, tabloid, statement, executive, folio,\n   quarto, 10x14, _glibc\n  \n  Page specification:\n   \u003cpagespecs\u003e  = [modulo:]\u003cspec\u003e[,spec|+spec]...\n   \u003cspec\u003e       = [-]pageno[@scale][L|R|U][(xoff,yoff)][{x0,y0,x1,y1}]\n   modulo:      the number of pages in each block (1 or more; default 1)\n   spec:        the page specification for one page in each block\n   pageno:      between 0 and modulo-1\n   scale:       scaling factor\n   L,R,U:       rotate left, right, upside-down\n   xoff,yoff:   page origin in PostScript points, or units of cm, in, w, h\n   x0,y1,x1,y1: page clip path in PostScript points, or units of cm, in, w, h\n\n LPRWRAP USAGE:\n\n  Usage: lprwrap [options] [file]...\n  \n  Options: same options as for lpr, plus:\n    --help             print usage info and exit\n    --version          print version info and exit\n    --license          print license info and exit\n    --verbose          print some diagnostics to stderr\n    --test             send output to stdout instead of printer\n    --force            force suspicious files to be printed anyway\n    --tmpdir \u003cdir\u003e     choose directory for temporary files\n    --lpr \u003cname\u003e       program to use for the backend lpr\n    -oduplex, -od      duplex printing (with long edge binding)\n    -ohduplex, -oh     duplex printing (with short edge binding)\n    -osimplex, -os     no duplex printing (default)\n    -o\u003cpaper\u003e          select a paper size: letter, executive, legal, a3,\n                       a4, a5, b5, tabloid, statement, folio, quarto, 10x14\n                       (default is letter)\n    -o\u003ctray\u003e           select a tray: upper, middle, lower, manual\n    -o2up              2-up printing\n    -o4up              4-up printing\n    -o8up              8-up printing\n    -o9up              9-up printing\n    -o16up             16-up printing\n    -odumb             faster, but uglier n-up printing (don't fit to size)\n    -ofit              fit to size in 1-up mode\n    -osolid            detect non-white background colors (slower)\n    -ofudge=[LRTB]\u003cn\u003e  percentage of pixels allowed out of bounds\n    -obox              print a box around each page (plain text only)\n    -oinfo             print date and user name on each page (plain text only)\n    -ouncollated       with -#, make NUM copies of each page, not of each file\n                       (may not work in duplex mode)\n    -ocups             let CUPS handle duplexing, paper and tray selection, \n                       and collation (by default the frontend handles it)\n  \n  Note that -duplex and -hduplex refer to whether you turn the page on\n  the long edge or on the short edge, with respect to the *input*\n  page. That is, if you select -o2up, you should still select -oduplex,\n  just as you would if you hadn't selected -o2up.  But if your input\n  file is in landscape format, you should probably select -ohduplex.\n  \n  The following standard lpr options are also supported:\n  \n    -P \u003cprinter\u003e       direct output to a specific printer\n    -h                 do not print burst page\n    -m                 send mail upon completion\n    -r                 remove the file upon completion of spooling\n    -# \u003cnum\u003e           number of copies to make of each file\n    -[1234] \u003cfont\u003e     specify a font to be mounted on font position i\n    -C \u003cclass\u003e         job classification to use on the burst page\n    -J \u003cjob\u003e           job name to print on the burst page\n    -U \u003cuser\u003e          user name to print on the burst page and for accounting.\n                       This option is only honored if the real user-id\n                       is daemon (or that specified in the printcap file\n                       instead of daemon), and is intended for those\n                       instances where print filters wish to requeue\n                       jobs.\n  \n  The following options are ignored for backwards compatibility:\n  \n    -T \u003ctitle\u003e, -i \u003cnumcols\u003e, -w \u003cnum\u003e, -c, -d, -f, -g, -l, -n, -p, -t, -v, -s\n  \n  Command line options are also read from the two files /etc/lprrc and\n  $HOME/.lprrc, if they exist, and processed in that order before any\n  other command line options are processed. For instance, if you like\n  duplex printing to be your default, put \"-od\" into one of these\n  files, or if you would like to use a private temp directory, put\n  \"--tmpdir \u003cdir\u003e\". If your system uses CUPS, put \"-ocups\". You can\n  also use this to set the default paper size.\n\nCOPYRIGHT\n\n For psdim and lprwrap:\n ---------------------- \n\n Copyright (C) 2001-2012 Peter Selinger\n\n This program is free software; you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation; either version 2 of the License, or (at\n your option) any later version.\n\n This program is distributed in the hope that it will be useful, but\n WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program; if not, write to the Free Software\n Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,\n USA. See also http://www.gnu.org/.\n\n See the file COPYING for details.\n\n For pstops-clip:\n ----------------\n\n Copyright (C) 1991-1995 Angus J. C. Duggan.\n Copyright (C) 2006-2012 Peter Selinger.\n\n This program may be copied and used for any purpose (including\n distribution as part of a for-profit product), provided:\n\n 1) The original attribution of the programs is clearly displayed in\n    the product and/or documentation, even if the programs are modified\n    and/or renamed as part of the product.\n\n 2) The original source code of the programs is provided free of\n    charge (except for reasonable distribution costs). For a\n    definition of reasonable distribution costs, see the Gnu General\n    Public License or Larry Wall's Artistic License (provided with the\n    Perl 4 kit). The GPL and Artistic License in NO WAY affect this\n    license; they are merely used as examples of the spirit in which\n    it is intended.\n\n 3) These programs are provided \"as-is\". No warranty or guarantee of\n    their fitness for any particular task is provided. Use of these\n    programs is completely at your own risk.\n\n See the file pstops-clip/LICENSE for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminiupnp%2Fupprint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminiupnp%2Fupprint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminiupnp%2Fupprint/lists"}