{"id":19218872,"url":"https://github.com/openprinting/ghostscript-printer-app","last_synced_at":"2025-07-09T23:36:12.690Z","repository":{"id":146907863,"uuid":"400512848","full_name":"OpenPrinting/ghostscript-printer-app","owner":"OpenPrinting","description":"Ghostscript Printer Application","archived":false,"fork":false,"pushed_at":"2025-04-29T07:26:58.000Z","size":165,"stargazers_count":36,"open_issues_count":9,"forks_count":12,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-29T08:31:41.777Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PostScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenPrinting.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2021-08-27T13:09:29.000Z","updated_at":"2025-04-29T07:27:03.000Z","dependencies_parsed_at":"2024-01-12T06:49:59.848Z","dependency_job_id":"18b29bec-6249-4eb8-90f2-4568ec11e1fb","html_url":"https://github.com/OpenPrinting/ghostscript-printer-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/OpenPrinting/ghostscript-printer-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenPrinting%2Fghostscript-printer-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenPrinting%2Fghostscript-printer-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenPrinting%2Fghostscript-printer-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenPrinting%2Fghostscript-printer-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenPrinting","download_url":"https://codeload.github.com/OpenPrinting/ghostscript-printer-app/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenPrinting%2Fghostscript-printer-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264505295,"owners_count":23618913,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-09T14:28:34.691Z","updated_at":"2025-07-09T23:36:12.683Z","avatar_url":"https://github.com/OpenPrinting.png","language":"PostScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ghostscript Printer Application\n\n## INTRODUCTION\n\nThis repository contains a Printer Application for printers supported\nby Ghostscript's built-in printer drivers and some extra filters.\n\nIt uses [PAPPL](https://www.msweet.org/pappl) to support IPP\nprinting from multiple operating systems. In addition, it uses the\nresources of [cups-filters\n2.x](https://github.com/OpenPrinting/cups-filters) (filter functions\nin libcupsfilters, libppd) and\n[pappl-retrofit](https://github.com/OpenPrinting/pappl-retrofit)\n(encapsulating classic CUPS drivers in Printer Applications). This\nwork (or now the code of pappl-retrofit) is derived from the\n[hp-printer-app](https://github.com/michaelrsweet/hp-printer-app).\n\nFor printer capability and driver usage information the Foomatic\ndatabase of OpenPrinting (Online access [by\nprinter](http://www.openprinting.org/printers/), [by\ndriver](http://www.openprinting.org/drivers/),\n[Downlod](http://github.com/OpenPrinting/foomatic-db)) is used.\n\nYour contributions are welcome. Please post [issues and pull\nrequests](https://github.com/OpenPrinting/ghostscript-printer-app).\n\n\n### Contained Printer Drivers (in the Snap)\n\n- **Ghostscript built-in**:\n  ```\n  ap3250, appledmp, bj10e, bj10vh, bj10v, bj10, bj200, bj8XXYYZ.upp,\n  bjc250gs, bjc600, bjc800, bjc880j, cdj500, cdj550, cdnj500, chp2200,\n  cljet5, cp50, declj250, deskjet, dj505j, djet500, dnj650c,\n  eplaser-jp, eplaser, eps9high, eps9mid, epsonc, epson, escpage,\n  fmlbp, fmpr, gdi, hl1250, hl7x0, ibmpro, imagen, iwhi, jetp3852,\n  jj100, la50, la70, la75plus, la75, laserjet, lbp310, lbp320, lbp8,\n  lex5700, lex7000, lips2p, lips3, lips4v, lips4, lj250, lj4dithp,\n  lj4dith, lj5gray, ljet2p, ljet3d, ljet3, ljet4d, ljet4, ljetplus,\n  ln03, lp2000, lp2563, lp8000, lq850, lxm3200-tweaked, lxm5700m,\n  m8510, md1xMono, md2k, md50Eco, md50Mono, md5k, mj700v2c, ml600,\n  necp2xX.upp, necp6, npdl, oce9050, oki182, oki4w, okiibm, paintjet,\n  pcl3, picty180, pjetxl, pjxl300, pjxl, pj, ps2write, pr150, pr201,\n  pxlcolor, pxldpl, pxlmono, r4081, rpdl, sharp.upp, sipixa6.upp,\n  sj48, stcolor, t4693dX, tek4696, xes\n  ```\n\n  This gives support for many old and ancient printers, but also for\n  PCL lasers (especially PCL 6/XL) and dot-matrix printers.\n\n  The included Ghostscript can have more drivers but these are the\n  ones for which we have PPD support from Foomatic and which are not\n  considered deprecated by another driver.\n\n- **`hpijs` of HPLIP**: For non-HP PCL printers (use the [HPLIP\n  Printer Application](https://snapcraft.io/hplip-printer-app) for HP\n  printers). Better print quality than with Ghostscript's built-in\n  drivers.\n\n- **`pnm2ppa`**: Driver for some older HP printers with proprietary\n  protocol, probably the only HP printers **NOT supported by\n  HPLIP**. even not with HP's proprietary plugin. The configuration\n  file in the Snap is user-editable, see below.\n\n- **`pxljr`**: For HP Color LaserJet 3500/3550/3600, should give\n  better output quality than HPLIP.\n\n- **`foo2zjs`**: Driver for laser printers with proprietary languages,\n  from Dell, Epson, Fuji, HP, Kyocera, Lexmark, (Konica) Minolta, Oki,\n  Olivetti, Ricoh, Samsung, Xerox. Note that the firmware loading\n  facility for HP is not included in this Printer Application, use the\n  [HPLIP Printer Application](https://snapcraft.io/hplip-printer-app)\n  (download proprietary plugin in-app, via web interface) for these\n  printers, the firmware is proprietary anyway. In the Snap the user\n  can add color profiles, see below.\n\n- **`SpliX`**: Driver for laser printers with proprietary languages,\n  from Dell, Lexmark, Samsung, Toshiba, Xerox\n\n- **`brlaser`**: Driver for Brother HL, DCP, and MFC laser printers\n  which do not understand PostScript nor PCL.\n\n- **`fxlinuxprint`**: Driver from Fuji Xerox for their PDF printers\n  before the times of driverless IPP.\n\n- **`c2esp`**: Driver for Kodak EasyShare printers.\n\n- **`rastertosag-gdi`**: For the few Ricoh models which do not do\n  PostScript or PCL: Ricoh Aficio SP 1000S/1100S\n\n- **`dymo`**: Driver for Dymo's label printers\n\n- **`ptouch`**: Driver for Brother's P-Touch label printers\n\n- **`c2050`, `cjet`, `min12xxw`, `m2300w`**: Drivers for older\n  Lexmark, Canon, and Minolta printers. For `m2300w` in the Snap the\n  user can add color profiles, see below.\n\n- **`CUPS`, `cups-filters`**: Included drivers for PCL, dot-matrix\n  (Oki, Epson), label printers (Dymo, Intellitech, Zebra), and some\n  older HP DesignJet large-format printers.\n\n- **Manufacturer-supplied PPD files**: For PCL and PDF printers from\n  Ricoh and OEM (Gestetner, InfoPrint, Infotec, Lanier, NRG, Ricoh,\n  Savin) and from Samsung.\n\n### Not included\n\n- **PostScript**: For manufacturer-supplied PostScript support, use\n  the [PostScript Printer\n  Application](https://snapcraft.io/ps-printer-app).\n\n- **HPLIP**: For practically all HP printers use the [HPLIP Printer\n  Application](https://snapcraft.io/hplip-printer-app). It also\n  supports HP's proprietary plugin for printers which need to load\n  their firmware on startup or need a proprietary driver extension.\n\n- **Gutenprint**: High-quality output with inkjets from Epson, Canon,\n  and others, also PCL laser printers. A lot of adjustable\n  parameters. Use the [Gutenprint Printer\n  Application](https://snapcraft.io/gutenprint-printer-app).\n\n- **`epson-inkjet-printer-escpr`**: Epson's free-software printer\n  driver for ESC/P-R-based inkjet printers. It supports only 360 dpi\n  resolution and a very awkward user interface which cannot get easily\n  mapped to IPP. Therefore it is not included in this Printer\n  Application. Use the [Gutenprint Printer\n  Application](https://snapcraft.io/gutenprint-printer-app).\n\n- **Braille embosser drivers**: We plan a separate Printer Application\n  for that.\n\n- **Scanners in multi-function devices**: We plan a SANE retro-fit\n  Scanner Application.\n\n### Properties\n\n- A Printer Application providing Ghostscript-based printer\n  drivers. Input data is converted to PDF or PostScript (if not\n  already supplied in one of these formats) as these are the input\n  data formats of Ghostscript, fed into Ghostscript and by Ghostscript\n  converted into the printer's native language. In some cases\n  Ghostscript produces generic raster output which is converted to the\n  printer's language by an additional filter.\n\n- PWG Raster, Apple Raster or image input data is converted to\n  PostScript and not to PDF as PostScript is streamable, and this way\n  large jobs need less resources or one can theoretically even print\n  infinite jobs.\n\n- This Printer Application also includes some separate, old and now\n  unmaintained printer drivers which are too small projects for their\n  own Printer Application. These can also consist of a CUPS Raster\n  filter, not needing Ghostscript if the input is PWG Raster, Apple\n  Raster, or an image.\n\n- Note that most of the drivers (both inside Ghostscript and separate\n  filters) are old, unmaintained code, for old printers which we do\n  not have access to for testing. The packaging in the Snap (and also\n  in Debian where the Snap uses a Debian source) is minimum-invasive\n  to assure formerly working code stays working, but it is not assured\n  due to changes in GCC and the libraries or due to the Snap\n  environment.\n\n- This Printer Application supports thousands of (usually older)\n  printer models. The needed printer capability information and driver\n  usage information is mainly taken from OpenPrinting's Foomatic\n  database, but also from information which comes with individual\n  drivers.\n\n- From the Foomatic data CUPS PPD files are pre-built, compressed and\n  packaged with the Snap. Also the foomatic-rip filter of\n  cups-filters, Ghostscript, and the extra printer driver filters are\n  included. With this a CUPS driver retro-fit using the pappl-retrofit\n  library is done. This way we do not need to modify or adapt the now\n  mostly unmaintained printer driver code, nor the Foomatic data or\n  the PPD files. This is important as we do not have the printers for\n  testing.\n\n- We use the printer's IEEE-1284 device ID to identify manufacturer\n  and model of the printer and look for explicit driver support for\n  this model. If we do not find it, we check the CMD: field of the ID\n  to see whetrher the printer supports any common data format,\n  currently PostScript, PCL-6/XL, PCL 5c, and PCL 5e to select a\n  generic driver.\n\n- Available printer devices are discovered (and used) with CUPS'\n  backends and not with PAPPL's own backends. This way quirk\n  workarounds for USB printers with compatibility problems are used\n  (and are editable) and any driver's output can get sent to the\n  printer via IPP, IPPS (encrypted!), and LPD in addition to socket\n  (usually port 9100). The SNMP backend can get configured (community,\n  address scope).\n\n- If you have an unusual system configuration or a personal firewall\n  your printer will perhaps not get discovered. In this situation the\n  fully manual \"Network Printer\" entry in combination with the\n  hostname/IP field can be helpful.\n\n- Standard job IPP attributes are mapped to the driver's option\n  settings best fitting to them so that users can print from any type\n  of client (like for example a phone or IoT device) which only\n  supports standard IPP attributes and cannot retrive the PPD\n  options. Trays, media sizes, media types, and duplex can get mapped\n  easily, but when it comes to color and quality it gets more complex,\n  as relevant options differ a lot in the PPD files. Here we use an\n  algorithm which automatically (who wants hand-edit ~10000 PPD files\n  for the assignments) finds the right set of option settings for each\n  combination of `print-color-mode` (`color`/`monochrome`),\n  `print-quality` (`draft`/`normal`/`high`), and\n  `print-content-optimize`\n  (`auto`/`photo`/`graphics`/`text`/`text-and-graphics`) in the PPD of\n  the current printer. So you have easy access to the full quality or\n  speed of your printer without needing to deal with printer-specific\n  option settings (the original options are still accessible via web\n  admin interface).\n\n### To Do\n\n- Human-readable strings for vendor options (Needs support by PAPPL:\n  [Issue #58: Localization\n  support](https://github.com/michaelrsweet/pappl/issues/58))\n\n- Internationalization/Localization (Needs support by PAPPL: [Issue\n  #58: Localization\n  support](https://github.com/michaelrsweet/pappl/issues/58))\n\n- SNMP Ink level check via ps_status() function (Needs support by PAPPL:\n  [Issue #83: CUPS does IPP and SNMP ink level polls via backends,\n  PAPPL should have functions for\n  this](https://github.com/michaelrsweet/pappl/issues/83))\n\n- Build options for cups-filters, to build without libqpdf and/or\n  without libppd, the former will allow to create the Snap of this\n  Printer Application without downloading and building QPDF\n\n\n## THE SNAP\n\n### Installing and building\n\nTo just run and use this Printer Application, simply install it from\nthe Snap Store:\n\n```\nsudo snap install --edge ghostscript-printer-app\n```\n\nThen follow the instructions below for setting it up.\n\nTo build the Snap by yourself, in the main directory of this\nrepository run\n\n```\nsnapcraft snap\n```\n\nThis will download all needed packages and build the Ghostscript\nPrinter Application. Note that PAPPL (upcoming 1.0) and cups-filters\n(upcoming 2.0) are pulled directly from their GIT repositories, as\nthere are no appropriate releases yet. This can also lead to the fact\nthat this Printer Application will suddenly not build any more.\n\nTo install the resulting Snap run\n\n```\nsudo snap install --dangerous ghostscript-printer-app_1.0_amd64.snap\n```\n\n\n### Setting up\n\nThe Printer Application will automatically be started as a server daemon.\n\nEnter the web interface\n\n```\nhttp://localhost:8000/\n```\n\nUse the web interface to add a printer. Supply a name, select the\ndiscovered printer, then select make and model. Also set the installed\naccessories, loaded media and the option defaults. Accessory\nconfiguration and option defaults can also offen get polled from the\nprinter.\n\nThen print PDF, PostScript, JPEG, Apple Raster, or PWG Raster files\nwith\n\n```\nghostscript-printer-app FILE\n```\n\nor print with CUPS, CUPS (and also cups-browsed) discover and treat\nthe printers set up with this Printer Application as driverless IPP\nprinters (IPP Everywhere and AirPrint).\n\nSee\n\n```\nghostscript-printer-app --help\n```\n\nfor more options.\n\nUse the \"-o log-level=debug\" argument for verbose logging in your\nterminal window.\n\nYou can add files to `/var/snap/ghostscript-printer-app/common/usb/`\nfor additional USB quirk rules. Edit the existing files only for quick\ntests, as they get replaced at every update of the Snap (to introduce\nnew rules).\n\nYou can edit the\n`/var/snap/ghostscript-printer-app/common/cups/snmp.conf` file for\nconfiguring SNMP network printer discovery.\n\nFor the `pnm2ppa` driver you can edit the configuration file:\n\n```\n/var/snap/ghostscript-printer-app/common/pnm2ppa/pnm2ppa.conf\n```\n\nFor the `foo2zjs` and `m2300w` drivers you can add color profiles in\nthe appropriate subdirectories of\n\n```\n/var/snap/ghostscript-printer-app/common/foo2zjs/\n/var/snap/ghostscript-printer-app/common/m2300w/\n```\n\nAutomatic firmware loading by foo2zjs is not supported. If you have\none of these HP printers which need it, use the HPLIP Printer\nApplication and download HP's plugin (use the web interface of the\nHPLIP Printer Application for that).\n\nAll the changes mentioned her take effect with the next print job.\n\nIf you mess up any configuration file under\n`/var/snap/ghostscript-printer-app/common/`, simply delete it (or move\nit away) and restart the Snap to get it restored.\n\n## THE ROCK (OCI CONTAINER IMAGE)\n\n### Install from Docker Hub\n#### Prerequisites\n\n1. **Docker Installed**: Ensure Docker is installed on your system. You can download it from the [official Docker website](https://www.docker.com/get-started).\n```sh\n  sudo snap install docker\n```\n\n#### Step-by-Step Guide\n\nYou can pull the `ghostscript-printer-app` Docker image from either the GitHub Container Registry or Docker Hub.\n\n**From GitHub Container Registry** \u003cbr\u003e\nTo pull the image from the GitHub Container Registry, run the following command:\n```sh\n  sudo docker pull ghcr.io/openprinting/ghostscript-printer-app:latest\n```\n\nTo run the container after pulling the image from the GitHub Container Registry, use:\n```sh\n  sudo docker run -d \\\n      --name ghostscript-printer-app \\\n      --network host \\\n      -e PORT=\u003cport\u003e \\\n      ghcr.io/openprinting/ghostscript-printer-app:latest\n```\n\n**From Docker Hub** \u003cbr\u003e\nAlternatively, you can pull the image from Docker Hub, by running:\n```sh\n  sudo docker pull openprinting/ghostscript-printer-app\n```\n\nTo run the container after pulling the image from Docker Hub, use:\n```sh\n  sudo docker run -d \\\n      --name ghostscript-printer-app \\\n      --network host \\\n      -e PORT=\u003cport\u003e \\\n      openprinting/ghostscript-printer-app:latest\n```\n\n- `PORT` is an optional environment variable used to start the printer-app on a specified port. If not provided, it will start on the default port 8000 or, if port 8000 is busy, on 8001 and so on.\n- **The container must be started in `--network host` mode** to allow the Printer-Application instance inside the container to access and discover printers available in the local network where the host system is in.\n- Alternatively using the internal network of the Docker instance (`-p \u003cport\u003e:8000` instead of `--network host -e PORT=\u003cport\u003e`) only gives access to local printers running on the host system itself.\n\n### Setting Up and Running gutenprint-printer-app locally\n\n#### Prerequisites\n\n**Docker Installed**: Ensure Docker is installed on your system. You can download it from the [official Docker website](https://www.docker.com/get-started) or from the Snap Store:\n```sh\n  sudo snap install docker\n```\n\n**Rockcraft**: Rockcraft should be installed. You can install Rockcraft using the following command:\n```sh\n  sudo snap install rockcraft --classic\n```\n\n**Skopeo**: Skopeo should be installed to compile `*.rock` files into Docker images. It comes bundled with Rockcraft, so no separate installation is required.\n\n#### Step-by-Step Guide\n\n**Build ghostscript-printer-app rock**\n\nThe first step is to build the Rock from the `rockcraft.yaml`. This image will contain all the configurations and dependencies required to run ghostscript-printer-app.\n\nOpen your terminal and navigate to the directory containing your `rockcraft.yaml`, then run the following command:\n\n```sh\n  rockcraft pack -v\n```\n\n**Compile to Docker Image**\n\nOnce the rock is built, you need to compile docker image from it.\n\n```sh\n  sudo rockcraft.skopeo --insecure-policy copy oci-archive:\u003crock_image\u003e docker-daemon:ghostscript-printer-app:latest\n```\n\n**Run the ghostscript-printer-app Docker Container**\n\n```sh\n  sudo docker run -d \\\n      --name ghostscript-printer-app \\\n      --network host \\\n      -e PORT=\u003cport\u003e \\\n      ghostscript-printer-app:latest\n```\n- `PORT` is an optional environment variable used to start the printer-app on a specified port. If not provided, it will start on the default port 8000 or, if port 8000 is busy, on 8001 and so on.\n- **The container must be started in `--network host` mode** to allow the Printer-Application instance inside the container to access and discover printers available in the local network where the host system is in.\n- Alternatively using the internal network of the Docker instance (`-p \u003cport\u003e:8000` instead of `--network host -e PORT=\u003cport\u003e`) only gives access to local printers running on the host system itself.\n\n#### Setting up\n\nEnter the web interface\n\n```sh\nhttp://localhost:\u003cport\u003e/\n```\n\nUse the web interface to add a printer. Supply a name, select the\ndiscovered printer, then select make and model. Also set the installed\naccessories, loaded media and the option defaults. If the printer is a\nPostScript printer, accessory configuration and option defaults can\nalso often get polled from the printer.\n\n\u003c!-- Begin Included Components --\u003e\n## Included Components\n  - pappl v1.4.9\n  - qpdf v11.10.1\n  - ghostscript ghostpdl-10.05.1rc1_test002\n  - cups v2.4.12\n  - libcupsfilters 2.1.1\n  - libppd 2.1.1\n  - cups-filters 2.0.1\n  - pyppd release-1-1-0\n  - foomatic-db 20240504\n  - hplip debian/3.22.10+dfsg0-8\n  - c2050 debian/0.3-7\n  - cjet debian/0.8.9-11\n  - min12xxw debian/0.0.9-11\n  - pnm2ppa debian/1.13-13\n  - c2esp debian/27-11\n  - dymo-cups-drivers debian/1.4.0-12\n  - foo2zjs debian/20200505dfsg0-3\n  - fxlinuxprint debian/1.1.0+ds-4\n  - m2300w debian/0.51-15\n  - printer-driver-oki 1.0.2\n  - pxljr debian/1.4+repack0-6\n  - rastertosag-gdi debian/0.1-8\n  - splix debian/2.0.1-1\n  - brlaser v6\n  - ptouch-driver debian/1.7-1\n\u003c!-- End Included Components --\u003e\n\n## BUILDING WITHOUT PACKAGING OR INSTALLATION\n\nYou can also do a \"quick-and-dirty\" build without snapping and without\nneeding to install [PAPPL](https://www.msweet.org/pappl),\n[cups-filters 2.x](https://github.com/OpenPrinting/cups-filters), and\n[pappl-retrofit](https://github.com/OpenPrinting/pappl-retrofit) into\nyour system. You need a directory with the latest GIT snapshot of\nPAPPL, the latest GIT snapshot of cups-filters, and the latest GIT\nsnapshot of pappl-retrofit (master branches of each). They all need to\nbe compiled (`./autogen.sh; ./configure; make`), installing not\nneeded. Also install the header files of all needed libraries\n(installing \"libcups2-dev\" should do it).\n\nIn the directory with ghostscript-printer-app.c run the command line\n\n```\ngcc -o ghostscript-printer-app ghostscript-printer-app.c $PAPPL_SRC/pappl/libpappl.a $CUPS_FILTERS_SRC/.libs/libppd.a $CUPS_FILTERS_SRC/.libs/libcupsfilters.a $PAPPL_RETROFIT_SRC/.libs/libpappl-retrofit.a -ldl -lpthread  -lppd -lcups -lavahi-common -lavahi-client -lgnutls -ljpeg -lpng16 -ltiff -lz -lm -lusb-1.0 -lpam -lqpdf -lstdc++ -I. -I$PAPPL_SRC/pappl -I$CUPS_FILTERS_SRC/ppd -I$CUPS_FILTERS_SRC/cupsfilters -I$PAPPL_RETROFIT_SRC/pappl/retrofit -L$CUPS_FILTERS_SRC/.libs/ -L$PAPPL_RETROFIT_SRC/.libs/\n```\n\nThere is also a Makefile, but this needs PAPPL, cups-filters 2.x, and\npappl-retrofit to be installed into your system.\n\nRun\n\n```\n./ghostscript-printer-app --help\n```\n\nWhen running the non-snapped version, by default, PPD files are\nsearched for in\n\n```\n/usr/share/ppd/\n/usr/lib/cups/driver/\n/var/lib/ghostscript-printer-app/ppd/\n```\n\nYou can set the `PPD_PATHS` environment variable to search other\nplaces instead:\n\n```\nPPD_PATHS=/path/to/my/ppds:/my/second/place ./ghostscript-printer-app server\n```\n\nSimply put a colon-separated list of any amount of paths into the\nvariable. Creating a wrapper script is recommended.\n\nThis Printer Application uses CUPS' backends and not PAPPL's, meaning\nthat for USB printers CUPS' USB quirk workarounds for compatibility\nproblems are used, network printers can also be used with IPP, IPPS,\nand LPD protocols, and SNMP printer discovery is configurable.\n\nUSB Quirk rules in `/usr/share/cups/usb` and the `/etc/cups/snmp.conf`\nfile can get edited if needed.\n\nMake sure you have Ghostscript, CUPS (at least its backends), and the\ndesired printer drivers (if not built into Ghostscript) installed.\n\nFor access to the test page `testpage.ps` use the TESTPAGE_DIR\nenvironment variable:\n\n```\nTESTPAGE_DIR=`pwd` PPD_PATHS=/path/to/my/ppds:/my/second/place ./ghostscript-printer-app server\n```\n\nor for your own creation of a test page (PostScript, PDF, PNG, JPEG,\nApple Raster, PWG Raster):\n\n```\nTESTPAGE=/path/to/my/testpage/my_testpage.ps PPD_PATHS=/path/to/my/ppds:/my/second/place ./ghostscript-printer-app server\n```\n\n\n## LEGAL STUFF\n\nThe Ghostcript Printer Application is Copyright © 2020 by Till Kamppeter.\n\nIt is derived from the HP PCL Printer Application, a first working model of\na raster Printer Application using PAPPL. It is available here:\n\nhttps://github.com/michaelrsweet/hp-printer-app\n\nThe HP PCL Printer Application is Copyright © 2019-2020 by Michael R Sweet.\n\nThis software is licensed under the Apache License Version 2.0 with an exception\nto allow linking against GPL2/LGPL2 software (like older versions of CUPS).  See\nthe files \"LICENSE\" and \"NOTICE\" for more information.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenprinting%2Fghostscript-printer-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenprinting%2Fghostscript-printer-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenprinting%2Fghostscript-printer-app/lists"}