Automatically Link to Printer-Friendly Versions





Automatically Link to Printer-Friendly Versions

Get the content without the cruft by changing selected article links to "printer-friendly" versions.

Most online news sites offer printer-friendly versions of their articles. Such pages usually contain the entire article text in one page, instead of forcing you to click through to read multiple pages. They also leave out the site's global navigation bar. They might also have fewer ads, or no ads at all.

Well, that all sounds appealing to me; why isn't that the default? This hack makes it the default, by changing links to selected news sites to point to the printer-friendly article instead.

The Code

This user script runs on all pages. It uses regular expressions to find specific patterns in link URLs and then performs site-specific alterations to change the link to point to the associated printer-friendly page instead. Of course, it works only on links to the sites it knows about, but it can easily be extended with knowledge of how other sites associate normal article pages and printer-friendly pages.

Save the following user script as bstopthepresses.user.js:

	// ==UserScript==

	// @name		  Stop The Presses!

	// @namespace	  http://diveintomark.org/projects/greasemonkey/

	// @description	  make links point to printer-friendly versions

	// @include       *

	// ==/UserScript==

	var urlPage = window.location.href;

	for (var i = document.links.length - 1; i >= 0; i--) {

	    var elmLink = document.links[i];

	    var urlHref = elmLink.href;



		// Yahoo News

		if ((urlHref.match(/\/\/(story\.)?news\.yahoo\.com\//i)) &&

		((urlHref.match(/sid=/i)) || (urlHref.match(/tmpl=story/i))) &&

			(!urlHref.match(/printer=1/i))) {

			if (urlHref.match(/\?/i)) {

				urlHref += '&printer=1';

			} else {

			    urlHref += '?printer=1';

			}

		}

		// NYTimes

		if ((urlHref.match(/nytimes\.com\/2/i)) &&

		    (!urlHref.match(/pagewanted=/i))) {

			if (urlHref.match(/\?/i)) {

				urlHref += '&pagewanted=print';

			} else {

				urlHref += '?pagewanted=print';

			}

		}

		// CNET

		if (((urlHref.match(/com\.com\//i)) ||

			 (urlHref.match(/cnet\.com\//i)) ||

			 (urlPage.match(/com\.com\//i)) ||

			 (urlPage.match(/cnet\.com\//i))) &&

			(urlHref != elmLink.textContent)) {

			urlHref = urlHref.replace(/2100-/g, '2102-');

			urlHref = urlHref.replace(/2008-/g, '2102-');

		}



		// Washington Post

		if ((urlHref.match(/washingtonpost\.com\/wp\-dyn\/content\/article/i))

&&

		   (!urlHref.match(/_pf\./i))) {

		    urlHref = urlHref.replace(/.html/g, '_pf.html');

		}

		if (urlHref != elmLink.href) {

			elmLink.href = urlHref;

			elmLink.addEventListener('click', function(event) {

			    window.top.location.href = urlHref;

				event.stopPropagation();

				event.preventDefault();

				return false;

			}, true);

		}

	}


Running the Hack

After installing the user script (Tools Install This User Script), go to http://news.com.com. (Yes, there are really two .coms in that URL. Don't ask.) Click any article link to read that article. Instead of the usual News.com article page, you will immediately go to the printer-friendly version, as shown in Figure.

News.com printer-friendly page


As printer-friendly pages have become more popular, news sites have begun adding advertisements and other clutter to them, but they are still an improvement over the original article pages.


     Python   SQL   Java   php   Perl 
     game development   web development   internet   *nix   graphics   hardware 
     telecommunications   C++ 
     Flash   Active Directory   Windows