Hi there Alec
Regarding the canonical tag:
The tag you want to use should be the page that you want to keep, be identified as the original and want Google to rank. From what I gather, that would be this page: http://www.bereavementstationery.co.uk/funeral-order-of-service
Therefore, on that page, you should have a canonical tag pointing to http://www.bereavementstationery.co.uk/funeral-order-of-service - and on every subsequent duplicate page, you should have the same tag.
The tag effectively instructs Google to say "these other pages are duplicate versions of this URL, so I'm going to ignore those versions, not flag them as a problem, and just promote the original URL. What's the original URL? Here it is, it's http://www.bereavementstationery.co.uk/funeral-order-of-service"
Sometimes making a robot appear human actually helps, ha!
An even better solution, which I believe you're trying to implement, would be to 301 redirect all of the URLs containing .html to their equivalent page without the .html extension in the URL. Not only does this remove the duplicate content problem, but it will also pass the SEO strength of the pages to the new one.
Unfortunately, I'm not qualified to help you there - don't want to recommend the wrong thing and mess up the .htaccess file! Hopefully someone more proficient in .htaccess redirects will come along and help you out there.
Hope my canonical explanation helps though!