<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Consilience Media &#187; Tools</title>
	<atom:link href="http://www.consil.co.uk/blog/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.consil.co.uk</link>
	<description></description>
	<lastBuildDate>Thu, 12 Jan 2012 12:03:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>OpenData &#8211; UK Postcodes</title>
		<link>http://www.consil.co.uk/blog/2011/01/13/opendata-uk-postcodes/</link>
		<comments>http://www.consil.co.uk/blog/2011/01/13/opendata-uk-postcodes/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 15:06:49 +0000</pubDate>
		<dc:creator>Jason Judge</dc:creator>
				<category><![CDATA[General Blogging]]></category>
		<category><![CDATA[Open Source/Creative Commons]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.consil.co.uk/blog/?p=855</guid>
		<description><![CDATA[The UK government has been publishing UK postcode data for nearly a year now. It is available for free here from the Ordnance Survey and is branded as Code-Point® Open. Essentially the data provides 1.7 million UK postcodes, with their British National Grid Reference, local authority and ward listed for each. The most interesting data is the grid reference, supplied as a full Northing and Easting value. These can be used to calculate distances between postcodes, as well as being <a href="http://www.consil.co.uk/blog/2011/01/13/opendata-uk-postcodes/" title="Read more" class="sprite-wrapper arrow-green-right">...<span class="sprite"></span></a>]]></description>
			<content:encoded><![CDATA[<p>The UK government has been publishing UK postcode data for nearly a year now. It is <a href="https://www.ordnancesurvey.co.uk/opendatadownload/products.html" target="_blank">available for free here</a> from the Ordnance Survey and is branded as <em>Code-Point® Open</em>.</p>
<p>Essentially the data provides 1.7 million UK postcodes, with their British National Grid Reference, local authority and ward listed for each. The most interesting data is the grid reference, supplied as a full Northing and Easting value. These can be used to calculate distances between postcodes, as well as being able to convert them into Latitude and Longitude data for displaying on maps such as Google&#8217;s offering.</p>
<p>The data does lack Northern Ireland and the Channel Island data at present, which can be a problem if you wish to use the data to cover the whole of the UK. The Northern Ireland grid system has a different origin and projection, so care must be taken if those postcodes and data are merged in from other sources. <a href="http://www.osni.gov.uk/2.1_the_irish_grid.pdf" target="_blank">See here</a> for details of <em>The Irish Grid</em> system.</p>
<p>There <a href="https://www.data.gov.uk/wiki/Package:Os-code-point-open" target="_blank">is a wiki</a> that covers this data, but it is incomplete and has not been updated in nearly half a year, which is a bit strange. I suspect updates are being lost somewhere, because I cannot believe nobody wants to update it (there are technical inaccuracies in the description of the data that <em>someone</em> should have noticed by now). I have made a few additions to the wiki page, so we will see what happens next. If it sticks, I would encourage others to go in and add what you know and discover in the data.</p>
<p><span id="more-855"></span></p>
<p>So, what does this data look like? In short, taking into account the areas it does not cover, pretty much complete. I have loaded the current dataset into MySQL, then plotted each postcode as a pixel in an image. Some pixels contain more than one closely positioned postcodes, and a more sophisticated plot would show this, but a simple plot of pixels gives us an idea of what it looks like.</p>
<div id="attachment_863" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.consil.co.uk/files/2011/01/opendata-all-postcodes.png"><img class="size-full wp-image-863 " src="http://www.consil.co.uk/files/2011/01/opendata-all-postcodes-small.png" alt="OpenData Postcodes - Great Britain" width="320" height="480" /></a><p class="wp-caption-text">OpenData Postcodes - Great Britain - Click for larger image</p></div>
<p style="text-align: center">
<p>Click the image to look at a much larger version with lots of detail. I particularly love how you can see <em>the valleys</em> in South Wales.</p>
<p>This simple PHP script generated the above image. All the table needs to contain are the Eastings and Northings from the Ordnance Survey data. It is surprising how it manages to get through 1.7 million postcodes in about ten seconds:</p>
<pre>&lt;?php
$width = 3200;
$height = $width * 1.5;

$db_name = 'opendata_postcodes';
$db_user = 'username';
$db_pass = 'password';

$easting_max = 655448;
$northing_max = 1213660;

$max_points = 2000000;

$db = new PDO('mysql:host=localhost;dbname='.$db_name.';charset=UTF-8', $db_user, $db_pass);

$sql = 'SELECT easting, northing FROM postcode LIMIT :limit';

$stmt = $db-&gt;prepare($sql);
$stmt-&gt;bindParam(':limit', $max_points, PDO::PARAM_INT);
$stmt-&gt;execute();

$img = imagecreate($width, $height);
$background = imagecolorallocate($img, 230, 230, 255);

while ($row = $stmt-&gt;fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {
  $x = round(($width*$row['easting'])/$easting_max);
  $y = $height - round(($height*$row['northing'])/$northing_max);
  imagesetpixel($img, $x, $y, 300);
}

header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
</pre>
<p>Here is the same image with some crude colours introduced to show the density of postcodes.</p>
<p style="text-align: center">
<div id="attachment_878" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.consil.co.uk/files/2011/01/uk-postcode-map-colour-1536.png"><img class="size-full wp-image-878 " src="http://www.consil.co.uk/files/2011/01/uk-postcode-map-colour-320.jpg" alt="" width="320" height="480" /></a><p class="wp-caption-text">Colours to show the density of postcodes</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.consil.co.uk/blog/2011/01/13/opendata-uk-postcodes/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Screengrab tools</title>
		<link>http://www.consil.co.uk/blog/2010/07/08/screengrab-tools/</link>
		<comments>http://www.consil.co.uk/blog/2010/07/08/screengrab-tools/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 12:41:52 +0000</pubDate>
		<dc:creator>Phill Brown</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.consil.co.uk/blog/?p=676</guid>
		<description><![CDATA[Was on the hunt for some software that would let me take multiple screengrabs. Eventually settled on Grab them all, a Firefox extension. Here&#8217;s the story! Step 1 was to create a list of URLs that needed screengrabs. I wrote an small PHP that printed a list of URLs (one per line) which I then saved to a text file: http://www.siteroom.co.uk/ http://www.consil.co.uk/ The first tool I came across was WebShot. The GUI interface is simple, but there&#8217;s far more flexibility <a href="http://www.consil.co.uk/blog/2010/07/08/screengrab-tools/" title="Read more" class="sprite-wrapper arrow-green-right">...<span class="sprite"></span></a>]]></description>
			<content:encoded><![CDATA[<p>Was on the hunt for some software that would let me take multiple screengrabs. Eventually settled on <a href="https://addons.mozilla.org/en-US/firefox/addon/7800/" target="_blank"><strong>Grab them all</strong></a>, a Firefox extension. Here&#8217;s the story!</p>
<p>Step 1 was to create a list of URLs that needed screengrabs. I wrote an small PHP that printed a list of URLs (one per line) which I then saved to a text file:</p>
<pre>http://www.siteroom.co.uk/

http://www.consil.co.uk/</pre>
<p>The first tool I came across was <a href="http://www.websitescreenshots.com/" target="_blank">WebShot</a>. The GUI interface is simple, but there&#8217;s far more flexibility using the command line. This is the command I used to run a batch of screenshots listed in the text file I created earlier</p>
<pre>webshotcmd.exe /in "C:screenshots.txt"
</pre>
<p>The tool worked well and uses Internet Explorer to render the web pages (so make sure you have the latest version!). You can also add parameters to your batch list too. I wanted the width of the image to be 1280px wide, rather than defaulting to the width of the web page, and also to use custom file names.</p>
<pre>/url "http://www.siteroom.co.uk/" /bwidth "1280" /out "C:screenshotssiteroom.jpg"
/url "http://www.consil.co.uk/" /bwidth "1280" /out "C:screenshotsconsil.jpg"
</pre>
<p>Unfortunately the free version only renders screengrabs in <strong>black and white</strong>.</p>
<p>I settled on <a href="https://addons.mozilla.org/en-US/firefox/addon/7800/" target="_blank">Grab them all</a> &#8211; a Firefox addon. Although it doesn&#8217;t have advanced features like watermarking, it does boast enough options for my needs. You&#8217;ve also got the benefit of Firefox&#8217;s web page rendering engine, which means screengrabbing the page with all the good-looking CSS3 features.</p>
<p>Options can be tweaked by going:</p>
<p>Tools &gt; Add-ons &gt; Extensions &gt; Grab them all &#8216;Options&#8217; button</p>
<p>I was able to change the filename from Base64 to the URL and set the width of the window. To run the program go to:</p>
<p>Tools &gt;&gt; Grab them all</p>
<p>Pass it the simple list of URLs (one URL per line) and let it run its magic!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.consil.co.uk/blog/2010/07/08/screengrab-tools/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>nLite &#8211; Windows Installation Customizer</title>
		<link>http://www.consil.co.uk/blog/2010/02/06/nlite-windows-installation-customizer/</link>
		<comments>http://www.consil.co.uk/blog/2010/02/06/nlite-windows-installation-customizer/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 16:30:19 +0000</pubDate>
		<dc:creator>Jason Judge</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.consil.co.uk/blog/?p=607</guid>
		<description><![CDATA[I came across this neat Windows application today. It is basically a tool for creating customised Windows installation disks. I&#8217;ve seen similar tools for slip-streaming service packs into disks, but this one goes a step further and makes it dead easy to include drivers and various other Windows tweaks. It is all very straight-forward to use: Point it at the original Windows disk. Tell it what you want to change (point it at service packs, drivers, etc.) Tell it to <a href="http://www.consil.co.uk/blog/2010/02/06/nlite-windows-installation-customizer/" title="Read more" class="sprite-wrapper arrow-green-right">...<span class="sprite"></span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.consil.co.uk/files/2010/02/nl_logo.png"><img class="alignleft size-full wp-image-609" src="http://www.consil.co.uk/files/2010/02/nl_logo.png" alt="nlite logo" width="105" height="96" /></a>I came across <a href="http://www.nliteos.com/nlite.html" target="_blank">this neat Windows application</a> today. It is basically a tool for creating customised Windows installation disks.</p>
<p>I&#8217;ve seen similar tools for slip-streaming service packs into disks, but this one goes a step further and makes it dead easy to include drivers and various other Windows tweaks. It is all very straight-forward to use:</p>
<ol>
<li>Point it at the original Windows disk.</li>
<li>Tell it what you want to change (point it at service packs, drivers, etc.)</li>
<li>Tell it to generate an ISO.</li>
<li>Press <em>GO</em>.</li>
</ol>
<p>The application will then spit out an ISO image that you burn to CDROM. I&#8217;m sure there are ways to install it over the network without burning a CD too.</p>
<p>I found it while looking for a way to reinstall XP onto Dell machine with a SATA device that the default Windows disk did not recognise.</p>
<p>nlite &#8211; http://www.nliteos.com/ &#8211; a great application for your toolbox.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.consil.co.uk/blog/2010/02/06/nlite-windows-installation-customizer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transferring files from a failed laptop &#8211; puppy power</title>
		<link>http://www.consil.co.uk/blog/2008/11/17/transferring-files-from-a-failed-laptop-puppy-power/</link>
		<comments>http://www.consil.co.uk/blog/2008/11/17/transferring-files-from-a-failed-laptop-puppy-power/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 01:12:35 +0000</pubDate>
		<dc:creator>Jason Judge</dc:creator>
				<category><![CDATA[General Blogging]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[distros]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.consil.co.uk/blog/?p=212</guid>
		<description><![CDATA[I was recently tasked with transferring files from a failed laptop. The laptop kind of worked, but some bad sectors had started to appear in a number of vital system files, so it was very unstable. This was an old WIndows 98 system, and I could not simply plug in a USB drive, because there were no Windows 98 drivers around for the external USB drives that I had. In the end the disk had to be removed, and connected <a href="http://www.consil.co.uk/blog/2008/11/17/transferring-files-from-a-failed-laptop-puppy-power/" title="Read more" class="sprite-wrapper arrow-green-right">...<span class="sprite"></span></a>]]></description>
			<content:encoded><![CDATA[<p>I was recently tasked with transferring files from a failed laptop. The laptop kind of worked, but some bad sectors had started to appear in a number of vital system files, so it was very unstable.</p>
<p>This was an old WIndows 98 system, and I could not simply plug in a USB drive, because there were no Windows 98 drivers around for the external USB drives that I had. In the end the disk had to be removed, and connected up to a working machine with a flying lead.</p>
<p>Since then, I have come across <a href="http://www.puppylinux.org/" target="_blank">Puppy Linux</a>. It seems to be ideal for this type of thing. By booting it directly from CDROM or USB key, it is possible to have a working Linux box in 60 seconds flat. It is then a simple matter of mounting the local drive, plugging in a USB drive, and transferring the files across.</p>
<p>Puppy Linux is not something I have ever come across before, but it is now a part of my standard toolbox. It also looks like the ideal platform for building custom appliances, such as video players and thin clients.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.consil.co.uk/blog/2008/11/17/transferring-files-from-a-failed-laptop-puppy-power/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>In Search of a Newsletter System</title>
		<link>http://www.consil.co.uk/blog/2008/09/25/in-search-of-a-newsletter-system/</link>
		<comments>http://www.consil.co.uk/blog/2008/09/25/in-search-of-a-newsletter-system/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 21:21:15 +0000</pubDate>
		<dc:creator>Jason Judge</dc:creator>
				<category><![CDATA[CMS/Frameworks]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[newsletter]]></category>
		<category><![CDATA[newslist]]></category>

		<guid isPermaLink="false">http://www.consil.co.uk/blog/?p=150</guid>
		<description><![CDATA[This search has gone on for years. I am looking for a newsletter system that is easy to install (to most likely LAMP-based), allows sign-up to multiple newsletters, and is reliable and flexible. The most important thing is that once configired, I need to be able to hand over the keys to a client so that they can manage it from that point on. That is the hardest part, because no matter what I try, there are always highly technical <a href="http://www.consil.co.uk/blog/2008/09/25/in-search-of-a-newsletter-system/" title="Read more" class="sprite-wrapper arrow-green-right">...<span class="sprite"></span></a>]]></description>
			<content:encoded><![CDATA[<p>This search has gone on for years. I am looking for a newsletter system that is easy to install (to most likely LAMP-based), allows sign-up to multiple newsletters, and is reliable and flexible.</p>
<p>The most important thing is that once configired, I need to be able to hand over the keys to a client so that they can manage it from that point on. That is the hardest part, because no matter what I try, there are always highly technical aspects to sending out a newsletter that really stump the non-technical clients.</p>
<p>This is what I have come up with (and tried) so far:</p>
<h2><a href="http://www.phplist.com/" target="_blank">PHPlist</a> (Tincan)</h2>
<div class="mceTemp">
<div id="attachment_162" class="wp-caption alignright" style="width: 165px"><a href="http://www.consil.co.uk/files/2008/09/phplist-logo.png"><img class="size-medium wp-image-162" src="http://www.consil.co.uk/files/2008/09/phplist-logo.png" alt="PHPlist Logo" width="155" height="70" /></a><p class="wp-caption-text">PHPlist Logo</p></div>
<p>This has some lovely features, but some pretty dire &#8216;gotchas&#8217; that can trap an unwary user. For a start the admin screens are as ugly as hell, and the terminology can make it hard to fathom out what each option does (for example, to create a draft newsletter, you need to use the &#8216;send a message&#8217; option). It is just not intuitive.</p></div>
<p>Problems for end users involve its uncanny ability to drop stylesheets when editing templates. Another is signing lists of imported users up to text-only e-mails even when &#8216;HTML&#8217; is selected. Yes these can be worked around, but only if you know the problems exist.</p>
<p>On the plus side, the e-mail sending system is brilliant. You queue messages to send, and leave it to do its job. If it fails (and anything that involves a browser window staying open <em>will</em> fail) then you just start it again and it carries on from where it left off. It keeps track of who a newsletter has been sent to, so you can requeue a newsletter every day until the next newsletter is ready, and it will send just to new subscribers.</p>
<p>The ability to pick of bounces from an IMAP or POP3 mail box is also great. Each bounce will increment a counter, and subscribers can be disabled when a preset number of bounces is reached.</p>
<p>This system also supports tracking, counting each individual e-mail as it is opened, using an image embedded in HTML e-mails.</p>
<p>Another downside is the lack of APIs, making integration difficult. Signing users up to a list automatically, while they are signing up to a CMS, is impossible without some major hacking.</p>
<p>The problems with PHPlist stem from it being around a long time. It has grown and grown over the years, but is creaking at the seams. Everything it <em>does</em> is great, but the way it does it is not so hot. It is time, IMO, to throw away the old code and start again, with all the same features, an established framework (e.g. Zend or CakePHP) and it will be a killer application.</p>
<p>I must also add that I believe PHPlist got the data schema right from the start. Most other newsletter systems I have looked at have gone for a much more simplistic approach, that makes it much harder for them to advance their products beyond very simple functionality.</p>
<p>With all that it is, I do use it, and find it great at what it does. What I can&#8217;t do, howver, is roll it out to clients, because it results in nothing but hassle from the non-technical users who just can&#8217;t get to grips with its mix of high-level features, and low-level &#8216;black art&#8217; knowledge that is needed.</p>
<h2><a href="http://pommo.org/Main_Page" target="_blank">poMMo</a></h2>
<div id="attachment_161" class="wp-caption alignright" style="width: 310px"><a href="http://www.consil.co.uk/files/2008/09/pommotds.gif"><img class="size-medium wp-image-161" src="http://www.consil.co.uk/files/2008/09/pommotds-300x125.gif" alt="poMMo logo" width="300" height="125" /></a><p class="wp-caption-text">poMMo logo</p></div>
<p>This one has to get the award for &#8216;hardest to find mailing list manager&#8217;. It was formally the <em>bMail </em>project and is hosted on SourceForge. Trying to find it when you can&#8217;t quite remember its &#8216;web 2.0&#8242; name is quite an effort, but the result is well worth it.</p>
<p>Checking the project&#8217;s subversion repository, it does not seem there has been any activity on this project since August 2008, which is not very encouraging.</p>
<p>First of all, the admin screens are lovely. They are smooth, AJAX/jQuery-based, clear and well designed. The whole thing feels smooth &#8211; it works with you.</p>
<p>The first thing to note is that it does not support multiple mailing lists. In fact, it does not support any &#8216;mailing lists&#8217; at all. However, what it does provide is a means to mail out to groups of users depending on attributes of those users.</p>
<p>For example, you could provide a series of checkboxes for a subscriber to select what subjects they are interested in. When sending out a newsletter, the author would send it to all subscribers who have expressed an interest in the subject of that newsletter. Now, that does sound rather like a multiple newslist system, but the subtle difference is that there is no &#8216;newslist&#8217; object in the database &#8211; anything that looks like a newslist subscription is specified by the administrator, and not enforced as any kind of fundamental part of the system&#8217;s structure.</p>
<p>I think that approach works well. The system is simpler, and the flexibility is increased. There are a few downsides though.</p>
<p>The first downside is that without a newslist for a user to subscribe to, there is no place in which you can find out exactly when a user subscribed to that newslist. That means sending out additional copies of a newsletter to late subscribers simply cannot be done. Remember PHPlist knows who subscribed to what and when, and so is able to send out &#8216;catchup&#8217; newsletters so a subscriber will always get the latest newsletter very soon after subscribing.</p>
<p>The other downside is in organisation. Without being able to group newsletters into newslists, it is much harder to provide archives organised by subject. On the other hand, the archives <em>are there</em>, with very easy access to the newsletters from a web-based front end.</p>
<p>The e-mail sending backend is both genius and a little frightening for a control-freak such as myself. It also misses a few tricks, I think.</p>
<p>In order to send e-mails, the system first creates a list of who to send to (in a text file, I believe). It then spawns a process through the HTTP protocal to send as many e-mails as it can in the PHP timeout period (you would set this to as long as possible). Before that script times out, it spawns another process to carry on where it left off, and so on until all the e-mails have been sent, whereupon a lock file created right at the start is released.</p>
<p>This is genious in that the developers have worked out a way to run a background script that can keep going even when the browser window is closed. It is frightening for much the same reason. I just don&#8217;t feel comfortable letting something like that loose on my server. It could be running all night in some kind of endless loop, and I would never know until I get irate e-mails from subscribers saying that I have filled up their inboxes.</p>
<p>Another minor flaw in the e-mail sending is that no record is kept of who each newsletter has been sent to. Doing that would make it very easy to sort out who has received a copy and who needs a catch-up copy sent. Following from that, without records of e-mails sent, there is no place to hang any flags to say whether that e-mail has been opened and read, so e-mail tracking is out. Clients need to know these things: how well read are those newsletters? Everyone has a master up the chain to report to, and someone up that line, often holding the purse-strings, likes simple measures of performance.</p>
<p>My ideal newsletter system would contain the database and functional features of PHPlist, with the administration front-end of poMMo.</p>
<h2>Other Systems</h2>
<p>I&#8217;ll add a few more when I get the time. I&#8217;m mainly looking at Open Source newsletter systems, aimed at sending to self-subscribed users (i.e. not bulk spam systems). Integration with an existing site or CMS is high on the priority list, along with ease of use for non-technical users. Other systems we will be evaluating are:</p>
<ul>
<li><a href="http://www.listmessenger.com/" target="_blank">ListMessenger</a> &#8211; Free light version, but dirt cheap Pro version with all the features you would want. This one seems to include captchas for registration.</li>
<li><a href="http://dadamailproject.com/" target="_blank">Dada Mail</a> &#8211; Old, well known, Perl-based, and it looks like a pain to install.</li>
<li><a href="http://www.sympa.org/" target="_blank">Sympa</a> &#8211; Again, Perl. This one seems to have been designed by engineers. That is to say the system looks very robust and complete, but there is little gloss to the system. Like Data Mail, you need root access to install it, so you have to be careful about dependances with other modules on your server.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.consil.co.uk/blog/2008/09/25/in-search-of-a-newsletter-system/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PDF tools for web servers</title>
		<link>http://www.consil.co.uk/blog/2008/09/18/pdf-tools-for-web-servers/</link>
		<comments>http://www.consil.co.uk/blog/2008/09/18/pdf-tools-for-web-servers/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 23:58:41 +0000</pubDate>
		<dc:creator>Jason Judge</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[command line tools]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[web server]]></category>

		<guid isPermaLink="false">http://www.consil.co.uk/blog/?p=71</guid>
		<description><![CDATA[This article lists some of the PDF tools we have used on our server projects. They all have one thing in common: they can be driven from the command line, and therefore can be run on servers lacking any kind of GUI. Please note that I won&#8217;t be publishing every comment that starts &#8220;I work for XYZ and we have a PDF product&#8230;&#8221; (especially if I see the same posts listed on a hundred other sites with &#8216;PDF&#8217; somewhere in <a href="http://www.consil.co.uk/blog/2008/09/18/pdf-tools-for-web-servers/" title="Read more" class="sprite-wrapper arrow-green-right">...<span class="sprite"></span></a>]]></description>
			<content:encoded><![CDATA[<p>This article lists some of the PDF tools we have used on our server projects. They all have one thing in common: they can be driven from the command line, and therefore can be run on servers lacking any kind of GUI.</p>
<p>Please note that I won&#8217;t be publishing every comment that starts &#8220;I work for XYZ and we have a PDF product&#8230;&#8221; (especially if I see the same posts listed on a hundred other sites with &#8216;PDF&#8217; somewhere in the title). These are mainly the open source, free or cheap tools that I have personally found useful in projects. I still appreciate any tips or recommendatios.</p>
<p>Most of these tools fall into the data conversion category &#8211; they convert to- or from- PDF formats.</p>
<h2><a href="http://www.pdftron.com/" target="_blank">pdf2svg</a> (PDFTron)</h2>
<p><strong></strong>Convert a PDF document to an SVG document. The command line tool pdf2svg.exe is a WIndows-only tool, but is useful for off-line conversions. It is not free, but significantly cheaper than the Adobe CS3 suite that you would otherwise have to use.</p>
<p>Using the tool without license inserts several watermark layers. The resulting SVG can be manipulated easily using <a href="http://www.inkscape.org/" target="_blank">Inkscape</a> (a free SVG editor that every developer should have in their toolbox). The thumbnails generated from each page contain the same watermarks.</p>
<p>This tool will also extract all images (as PNGs) from the PDF document, which is very handy.</p>
<h2><a href="http://www.lowagie.com/iText/" target="_blank">iText</a></h2>
<p>This free Java tool is platform-idependant, and provides a few features that make it very suited to batch PDF manipulation. Features include the ability to:</p>
<ul>
<li>Split up a document and manipulate pages.</li>
<li>Generate PDF content on-the-fly.</li>
<li>Fill out PDF forms.</li>
<li>Add digital signatures.</li>
<li>Create PDFs from scratch, including barcodes.</li>
</ul>
<p>iText can also output Rich Text Format (RTF) documents. I have used it in the past to extract text from PDFs for indexing on a website, though there are lighter tools for doing this.</p>
<h2><a href="http://www.accesspdf.com/pdftk/" target="_blank">pdftk</a> (PDF Tool Kit, by AccessPDF)</h2>
<p>This is surely the lightest Swiss Army Knife of PDF tools. Features include:</p>
<ul>
<li>Bursting into single-page PDFs and recombining.</li>
<li>Encrypting/decrypting.</li>
<li>Inserting and extracting form data (for older style forms, though Adobe seems to have changed the way forms work in later versions of the PDF format, so that extracting from filled forms is no <a href="http://www.accesspdf.com/article.php/20050708071835171" target="_blank">longer straight-forward</a>).</li>
<li>Extract and manipulate metadata.</li>
</ul>
<h2><a href="http://www.pdfbox.org/" target="_blank">PDFBox</a></h2>
<p>This is another free java library, with features including:</p>
<ul>
<li>Extracting text from a PDF (for indexing, e.g. with Lucene or mnoGoSearch).</li>
<li>Manipulating pages (inserting, extracting, reordering).</li>
<li>Filling and extracting form data (PDF version below 1.6) using FDF and XFDF data files.</li>
<li>Creating images from PDF files &#8211; good for thumbnails and creating &#8216;page flipper&#8217; applications.</li>
</ul>
<p>To use the text extraction in a search engine, I use the following shell script to wrap it all up:</p>
<p>[sourcecode language="cpp"]#!/bin/sh<br />
# Convert a PDF document to text<br />
# Usage: $0 [OPTIONS]  [Text File]<br />
#   -password      Password to decrypt document<br />
#   -encoding      (ISO-8859-1,UTF-16BE,UTF-16LE,&#8230;)<br />
#   -console    Send text to console instead of file<br />
#   -html    Output in HTML format instead of raw text<br />
#   -sort    Sort the text before writing<br />
#   -startPage     The first page to start extraction(1 based)<br />
#   -endPage     The last page to extract(inclusive)<br />
#       The PDF document to use<br />
#   [Text File]    The file to write the text to</p>
<p>PDFBOX_BASE=/usr/local/lib/pdfbox</p>
<p>export CLASSPATH=$PDFBOX_BASE/external/FontBox-0.1.0-dev.jar:$PDFBOX_BASE/lib/PDFBox-0.7.3.jar<br />
java org.pdfbox.ExtractText &#8220;$@&#8221;[/sourcecode]</p>
<p>This assumes that PDFBox has been installed under /usr/local/lib.</p>
<h2><a href="http://www.swftools.org/" target="_blank">SWFtools</a></h2>
<p>Although this toolkit is primarily about SWF files, it does have some neat PDF to SFW conversion scripts. Versions are available for Windows and Linux under an Open Source licence.</p>
<h2>Notes</h2>
<p>One of these tools also extracts images from PDFs, which can b every useful when converting PDF to HTML formats.</p>
<p>There are a number of PHP tools, other libraries (e.g. Image Magick) and more heavy-weight tools (e.g. Ghostscript) that I will cover later. Hopefully this selection will help in the meantime. If you have any further suggestions, I would love to hear of them. Even if a tool duplicates much of what these do, it only needs have do <em>one</em> extra feature that the others don&#8217;t cover to be worthwhile using.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.consil.co.uk/blog/2008/09/18/pdf-tools-for-web-servers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Password Manager</title>
		<link>http://www.consil.co.uk/blog/2008/09/06/password-manager/</link>
		<comments>http://www.consil.co.uk/blog/2008/09/06/password-manager/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 16:22:07 +0000</pubDate>
		<dc:creator>Phill Brown</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.consil.co.uk/blog/?p=29</guid>
		<description><![CDATA[Found this great lightweight password manager: KeePass: http://keepass.info/ All very self-explanatory. A master password locks the database. Plenty of plugins to make life easier for you. So far I&#8217;ve only tryed using the Firefox &#62;&#62; KeyPass importer which in turn requires you to download the KeyPass XML importer. I experienced problems when trying to directly import from Firefox so I downloaded the Password Exporter addon. This exports your Firefox passwords into an XML file which the Firefox &#62;&#62; KeyPass importer <a href="http://www.consil.co.uk/blog/2008/09/06/password-manager/" title="Read more" class="sprite-wrapper arrow-green-right">...<span class="sprite"></span></a>]]></description>
			<content:encoded><![CDATA[<p>Found this great lightweight password manager:</p>
<p>KeePass: <a href="http://keepass.info/">http://keepass.info/</a></p>
<p>All very self-explanatory. A master password locks the database. Plenty of plugins to make life easier for you.</p>
<p>So far I&#8217;ve only tryed using the <a href="http://www.mccreath.org.uk/Article/ClockWork-FireFox-to-KeePass-Converter_8.aspx">Firefox &gt;&gt; KeyPass importer</a> which in turn requires you to download the <a href="http://keepass.info/plugins.html#xmlimport">KeyPass XML importer</a>. I experienced problems when trying to directly import from Firefox so I downloaded the <a href="https://addons.mozilla.org/en-US/firefox/addon/2848">Password Exporter</a> addon. This exports your Firefox passwords into an XML file which the Firefox &gt;&gt; KeyPass importer can then import.</p>
<p>The next plugin I want to try is <a href="http://sourceforge.net/projects/keepasssync">KeyPassSync</a>. This will allow me to syncronise my passwords on my home desktop, laptop and work desktop computers. Unfortunately this is only available with version 2 that&#8217;s currently in alpha testing. I&#8217;d rather wait until the BETA before I trust it with my password database!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.consil.co.uk/blog/2008/09/06/password-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

