Tuesday, November 9, 2010

將html 變成 image

因為某一part 工作係要將個 email 變成pdf,
而email本身係html format, 咁應該點轉成 pdf 呢 ?
結果就寫左以下這個tools, 利用.net 本身的ie core
將html 變成一幅image, 然後再變成pdf
當寫順左就會好好用

但出了問題, pdf 容許放大文字的
但轉左做image 後, 放大就會起格仔
解決方法:在整個image 時, 變成 2 倍闊 ...
雖然只是治標, 但夠使 ...





            WebBrowser wb = new WebBrowser();
            wb.ScrollBarsEnabled = false;

            wb.ScriptErrorsSuppressed = true;
            wb.NewWindow += new System.ComponentModel.CancelEventHandler(wb_NewWindow);
            wb.AllowNavigation = true;



            wb.DocumentText = config.htmlBody;

            wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);

            while (!config.WaitingComplete)
            {
                Application.DoEvents();
                System.Threading.Thread.Sleep(100);
            }

            if (config.height == -1)
            {
                config.height = wb.Document.ActiveElement.ScrollRectangle.Height;
            }

            wb.Size = new System.Drawing.Size(config.width, config.height);

            System.Drawing.Bitmap bm = new System.Drawing.Bitmap(config.width, config.height);
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bm);
            g.Clear(System.Drawing.Color.White);

            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0, 0, config.width, config.height);
            wb.DrawToBitmap(bm, rect);
            wb.Dispose();
            config.result = bm;
        ....

        void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            WaitingComplete = true;
        }
        private static void wb_NewWindow(object sender, System.ComponentModel.CancelEventArgs e)
        {
            e.Cancel = true;
        }

Labels: , ,

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home