2014-02-05 67 views
0

我想將一個Html頁面轉換成圖像文件。爲此,我使用的代碼如何將html頁面轉換爲圖像文件?

我的代碼:

protected void Button1_Click(object sender, EventArgs e) 
{ 

    saveURLToImage("http://cg.nic.in/mahasamund/home.htm"); 

} 
private void saveURLToImage(string url) 
{ 
    if (!string.IsNullOrEmpty(url)) 
    { 
     string content = ""; 

     System.Net.WebRequest webRequest = WebRequest.Create(url); 
     System.Net.WebResponse webResponse = webRequest.GetResponse(); 
     System.IO.StreamReader sr = new StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8")); 
     content = sr.ReadToEnd(); 
     //save to file 
     System.Windows.Forms.MessageBox.Show(content); 
     byte[] b = Convert.FromBase64String(content); 
     System.IO.MemoryStream ms = new System.IO.MemoryStream(b); 
     System.Drawing.Image img = System.Drawing.Image.FromStream(ms); 
     img.Save(@"d:\pic.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); 

     img.Dispose(); 
     ms.Close(); 
    } 
} 

,當我運行這段代碼,然後點擊按鈕,然後即

The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. 

有什麼問題發生錯誤? 我該怎麼做?

+0

我已經有這方面的需求。在那段時間,我使用了'PhantomJS',一個可以像瀏覽器一樣打開頁面的'* .exe',你可以拍攝這個畫面。 –

回答

0

你可能有「\ 0」字符的字符串中的,這是不是一個有效的base64字符。

我會嘗試使用:

content.Trim("\0"); 

要轉換爲base64

0
byte[] b = Convert.FromBase64String(content); 

看來你內容包含某物非法之前。 (也許是一些標籤) 嘗試在傳遞給FromBase64String方法之前對其進行編碼。

0

這是錯誤的,你試圖加載純HTML文本作爲圖像數據,你爲什麼認爲它會呈現爲圖像?

查找WebBrowser.DrawToBitmap,例如:

Perform screen-scape of Webbrowser control in thread

+0

對於遲到的回覆感到抱歉,但我需要它,因爲在我的項目,即Web應用程序。我使用Unicode字符時,我顯示的報告,然後我需要將其轉換爲PDF格式,當我在PDF隱式它然後PDF直接不支持Unicode和它隱藏所有的Unicode字符,除了其他字體。所以我認爲首先我應該將Html頁面轉換爲圖像,然後將圖像轉換爲pdf。 –

+0

我的答案告訴你如何將html頁面轉換爲圖片,只需點擊鏈接即可。 – avo

相關問題