Convert Html to Tiff

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Media.Imaging;
class Program
{
    private static WebBrowser InitialiseBrowser(string source)
    {
        // create a hidden web browser, which will navigate to the page
        WebBrowser browser = new WebBrowser();
        browser.ScrollBarsEnabled = false; // we don't want scrollbars on our image
        browser.ScriptErrorsSuppressed = true; // don't let any errors shine through

        LoadWebPage(browser, source);

        // set the size of our web browser to be the same size as the page
        browser.Width = browser.Document.Body.ScrollRectangle.Width;
        browser.Height = browser.Document.Body.ScrollRectangle.Height;

        return browser;
    }

    private static void LoadWebPage(WebBrowser browser, string url)
    {
        browser.Navigate(url);

        while (browser.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete)
        {
            System.Windows.Forms.Application.DoEvents();
            System.Threading.Thread.Sleep(10);
        }
    }

    private static TiffBitmapEncoder InitialiseTiffBitmapEncoder(WebBrowser browser)
    {
        int width = browser.Width;
        int height = browser.Height;

        // a bitmap that we will draw to
        System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(width, height);
        // draw the web browser to the bitmap
        browser.DrawToBitmap(bmp, new System.Drawing.Rectangle(0, 0, width, height));

        BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
            bmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());

        TiffBitmapEncoder tiff = new TiffBitmapEncoder();
        tiff.Compression = TiffCompressOption.Ccitt4;
        tiff.Frames.Add(BitmapFrame.Create(bitmapSource));

        return tiff;
    }

    //this method doesn't work becuase there is no space in the metadata
    //to add the value for FillOrder
    //http://social.msdn.microsoft.com/Forums/br/windowswic/thread/9d06b503-45e7-4ad2-bb68-cac4d2269d91
    private static void OldFixTiff(string fileName)
    {
        using (var openFile = new FileStream(fileName, FileMode.Open))
        {
            TiffBitmapDecoder output = new TiffBitmapDecoder(openFile, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
            InPlaceBitmapMetadataWriter metadata = output.Frames[0].CreateInPlaceBitmapMetadataWriter();

            var fillOrder = metadata.GetQuery("/ifd/{ushort=266}");
            Debug.Print("Read Fill Order Metadata tag as {0}", fillOrder);

            // If .Net added a bogus fill order, correct it
            if (fillOrder == null || (ushort)fillOrder == 0)
            {
                Debug.Print("Correcting FILL ORDER in file {0}", fileName);
                metadata.SetQuery("/ifd/{ushort=266}", (ushort)1);

                // Try to save new metadata
                if (metadata.TrySave())
                {
                    fillOrder = metadata.GetQuery("/ifd/{ushort=266}");
                    Debug.Print("Fill order correction successful!");
                    Debug.Print("Read New Fill Order Metadata tag as {0}", fillOrder);
                }
            }
        }
    }

    private static void SaveTiff(TiffBitmapEncoder tiff, string fileName)
    {
        FileStream file = new FileStream(fileName, FileMode.Create);
        tiff.Save(file);
        file.Flush();
        file.Close();
    }

    [STAThread]
    static void Main(string[] args)
    {
        string source = args[0];
        string target = args[1];

        WebBrowser browser = InitialiseBrowser(source);
        TiffBitmapEncoder tiff = InitialiseTiffBitmapEncoder(browser);
        SaveTiff(tiff, target);
    }
}