{"id":867,"date":"2010-10-26T14:06:14","date_gmt":"2010-10-26T13:06:14","guid":{"rendered":"http:\/\/cyberelk.net\/tim\/?p=867"},"modified":"2014-05-20T09:07:27","modified_gmt":"2014-05-20T08:07:27","slug":"choosing-the-best-printer-driver","status":"publish","type":"post","link":"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/","title":{"rendered":"Choosing the best printer driver"},"content":{"rendered":"<p>In an ideal world there would be no need to choose which printer driver to use, and all printers would use the same driver (or, say, one driver for raster images, and another for vectors).\u00a0 That&#8217;s the goal of <a href=\"http:\/\/pwg-wiki.wikispaces.com\/IPP+Everywhere\">IPP Everywhere<\/a>.\u00a0 In the mean while, there is often a choice of different drivers to use.\u00a0 <a href=\"http:\/\/www.cups.org\/\">CUPS<\/a> leaves this decidedly up to the user.\u00a0 The <a href=\"http:\/\/www.linuxfoundation.org\/collaborate\/workgroups\/openprinting\/database\/databaseintro\">foomatic database<\/a> contains a list of which drivers are &#8220;recommended&#8221; for each printer, although this is limited to old-style drivers that use the foomatic engine such as hpijs and built-in ghostscript drivers, and to PostScript PPD files.\u00a0 It cannot recommend native CUPS drivers such as those contained in Gutenprint and HPLIP (hpcups).<\/p>\n<p><!--more--><\/p>\n<p>The Fedora printing configuration tool, <a href=\"https:\/\/cyberelk.net\/tim\/software\/system-config-printer\/\">system-config-printer<\/a>, tries to make a best guess about which driver is likely to be the most useful, taking into account foomatic recommended drivers, native CUPS drivers, manufacturer-provided PPD files, and so on.\u00a0 It does this by having some rules of thumb hard-coded into the part that does driver selection.\u00a0 It isn&#8217;t very pretty, and it&#8217;s not very flexible.\u00a0 It isn&#8217;t very easy to modify because of its complexity.<\/p>\n<p>To solve this problem I&#8217;ve been working on an XML-driven way of describing which drivers are &#8220;best&#8221;.\u00a0 It works across all drivers, not just the subset that foomatic knows about (although it can use foomatic&#8217;s knowledge of recommended drivers).\u00a0 It can have recommended drivers, and can blacklist drivers altogether for specific printers.<\/p>\n<p>It works by classifying drivers into &#8220;driver types&#8221; based on regular expressions for the PPD attributes CUPS provides: its name, IEEE 1284 Device ID, make-and-model, product, etc.\u00a0 Printers can be matched by regular expressions for their make-and-model names and IEEE 1284 Device IDs.<\/p>\n<p>See the source for <a href=\"http:\/\/git.fedorahosted.org\/git?p=system-config-printer.git;a=blob;f=xml\/preferreddrivers.rng;hb=HEAD\">a full explanation of how it works<\/a>.<\/p>\n<p><small>UPDATED:<\/small> Explanation link now links to HEAD which includes some changes since this was written.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In an ideal world there would be no need to choose which printer driver to use, and all printers would use the same driver (or, say, one driver for raster images, and another for vectors).\u00a0 That&#8217;s the goal of IPP Everywhere.\u00a0 In the mean while, there is often a choice of different drivers to use.\u00a0 [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3],"tags":[],"class_list":["post-867","post","type-post","status-publish","format-standard","hentry","category-software"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Choosing the best printer driver - PRINT HEAD<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Choosing the best printer driver - PRINT HEAD\" \/>\n<meta property=\"og:description\" content=\"In an ideal world there would be no need to choose which printer driver to use, and all printers would use the same driver (or, say, one driver for raster images, and another for vectors).\u00a0 That&#8217;s the goal of IPP Everywhere.\u00a0 In the mean while, there is often a choice of different drivers to use.\u00a0 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/\" \/>\n<meta property=\"og:site_name\" content=\"PRINT HEAD\" \/>\n<meta property=\"article:published_time\" content=\"2010-10-26T13:06:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-05-20T08:07:27+00:00\" \/>\n<meta name=\"author\" content=\"Tim Waugh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tim Waugh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2010\\\/10\\\/26\\\/choosing-the-best-printer-driver\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2010\\\/10\\\/26\\\/choosing-the-best-printer-driver\\\/\"},\"author\":{\"name\":\"Tim Waugh\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#\\\/schema\\\/person\\\/23b749f30a67f1b1c6af17024fc94bf6\"},\"headline\":\"Choosing the best printer driver\",\"datePublished\":\"2010-10-26T13:06:14+00:00\",\"dateModified\":\"2014-05-20T08:07:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2010\\\/10\\\/26\\\/choosing-the-best-printer-driver\\\/\"},\"wordCount\":313,\"publisher\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#\\\/schema\\\/person\\\/23b749f30a67f1b1c6af17024fc94bf6\"},\"articleSection\":[\"Software\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2010\\\/10\\\/26\\\/choosing-the-best-printer-driver\\\/\",\"url\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2010\\\/10\\\/26\\\/choosing-the-best-printer-driver\\\/\",\"name\":\"Choosing the best printer driver - PRINT HEAD\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#website\"},\"datePublished\":\"2010-10-26T13:06:14+00:00\",\"dateModified\":\"2014-05-20T08:07:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2010\\\/10\\\/26\\\/choosing-the-best-printer-driver\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2010\\\/10\\\/26\\\/choosing-the-best-printer-driver\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/2010\\\/10\\\/26\\\/choosing-the-best-printer-driver\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Choosing the best printer driver\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#website\",\"url\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/\",\"name\":\"PRINT HEAD\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#\\\/schema\\\/person\\\/23b749f30a67f1b1c6af17024fc94bf6\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/#\\\/schema\\\/person\\\/23b749f30a67f1b1c6af17024fc94bf6\",\"name\":\"Tim Waugh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/printhead.png\",\"url\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/printhead.png\",\"contentUrl\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/printhead.png\",\"width\":731,\"height\":140,\"caption\":\"Tim Waugh\"},\"logo\":{\"@id\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/printhead.png\"},\"sameAs\":[\"http:\\\/\\\/cyberelk.net\\\/tim\"],\"url\":\"https:\\\/\\\/cyberelk.net\\\/tim\\\/author\\\/twaugh\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Choosing the best printer driver - PRINT HEAD","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/","og_locale":"en_GB","og_type":"article","og_title":"Choosing the best printer driver - PRINT HEAD","og_description":"In an ideal world there would be no need to choose which printer driver to use, and all printers would use the same driver (or, say, one driver for raster images, and another for vectors).\u00a0 That&#8217;s the goal of IPP Everywhere.\u00a0 In the mean while, there is often a choice of different drivers to use.\u00a0 [&hellip;]","og_url":"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/","og_site_name":"PRINT HEAD","article_published_time":"2010-10-26T13:06:14+00:00","article_modified_time":"2014-05-20T08:07:27+00:00","author":"Tim Waugh","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Tim Waugh","Estimated reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/#article","isPartOf":{"@id":"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/"},"author":{"name":"Tim Waugh","@id":"https:\/\/cyberelk.net\/tim\/#\/schema\/person\/23b749f30a67f1b1c6af17024fc94bf6"},"headline":"Choosing the best printer driver","datePublished":"2010-10-26T13:06:14+00:00","dateModified":"2014-05-20T08:07:27+00:00","mainEntityOfPage":{"@id":"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/"},"wordCount":313,"publisher":{"@id":"https:\/\/cyberelk.net\/tim\/#\/schema\/person\/23b749f30a67f1b1c6af17024fc94bf6"},"articleSection":["Software"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/","url":"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/","name":"Choosing the best printer driver - PRINT HEAD","isPartOf":{"@id":"https:\/\/cyberelk.net\/tim\/#website"},"datePublished":"2010-10-26T13:06:14+00:00","dateModified":"2014-05-20T08:07:27+00:00","breadcrumb":{"@id":"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/cyberelk.net\/tim\/2010\/10\/26\/choosing-the-best-printer-driver\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cyberelk.net\/tim\/"},{"@type":"ListItem","position":2,"name":"Choosing the best printer driver"}]},{"@type":"WebSite","@id":"https:\/\/cyberelk.net\/tim\/#website","url":"https:\/\/cyberelk.net\/tim\/","name":"PRINT HEAD","description":"","publisher":{"@id":"https:\/\/cyberelk.net\/tim\/#\/schema\/person\/23b749f30a67f1b1c6af17024fc94bf6"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cyberelk.net\/tim\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/cyberelk.net\/tim\/#\/schema\/person\/23b749f30a67f1b1c6af17024fc94bf6","name":"Tim Waugh","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2023\/01\/printhead.png","url":"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2023\/01\/printhead.png","contentUrl":"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2023\/01\/printhead.png","width":731,"height":140,"caption":"Tim Waugh"},"logo":{"@id":"https:\/\/cyberelk.net\/tim\/wp-content\/uploads\/2023\/01\/printhead.png"},"sameAs":["http:\/\/cyberelk.net\/tim"],"url":"https:\/\/cyberelk.net\/tim\/author\/twaugh\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pnnS2-dZ","_links":{"self":[{"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/posts\/867","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/comments?post=867"}],"version-history":[{"count":6,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/posts\/867\/revisions"}],"predecessor-version":[{"id":1040,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/posts\/867\/revisions\/1040"}],"wp:attachment":[{"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/media?parent=867"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/categories?post=867"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cyberelk.net\/tim\/wp-json\/wp\/v2\/tags?post=867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}