抓取网页源码,只获得html文本,所以只适用于同一站点

public static string GetResponse(string url, string method, byte[] postData)
    {
        
try
        {
            Uri uri 
= new Uri(url);
            WebRequest req 
= HttpWebRequest.Create(uri);
            req.ContentType 
= "application/x-www-form-urlencoded";
            req.Method 
= method;
            
if (method.ToUpper() == "POST" && postData != null)
            {
                Stream postStream 
= req.GetRequestStream();
                postStream.Write(postData, 
0, postData.Length);
                postStream.Close();
            }
            WebResponse res 
= req.GetResponse();

            
string coder = ((HttpWebResponse)res).CharacterSet;

            System.Text.Encoding resEncoding 
= System.Text.Encoding.GetEncoding(coder);
            StreamReader reader 
= new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8);

            
string html = reader.ReadToEnd();

            reader.Close();
            res.Close();

            
return html;
        }
        
catch(Exception ex)
        {
            
return ex.Message;
        }
    }

 

使用ABCpdf生成pdf

public static void SaveAsFile(string htmlContext, string pdfSavePath)
        {
            
using (Doc pdfDoc = new Doc())
            {
                pdfDoc.Font 
= pdfDoc.AddFont("宋体","ChineseS");
                
string tempFile = System.Web.HttpContext.Current.Server.MapPath("~/"+ "temp." + DateTime.Now.Millisecond.ToString() + "." + DateTime.Now.ToString("MM-dd-yyyy-hh"+ ".html";
                System.IO.StreamWriter strWriter 
= new System.IO.StreamWriter(tempFile,false,System.Text.Encoding.UTF8);
                strWriter.Write(htmlContext);
                strWriter.Close();
                strWriter 
= null;
                
int pdfId = 0;
                pdfDoc.Rect.String 
= "30 50 1470 840";
                pdfDoc.Color.String 
= "192,48,117";

                
try
                {
                    pdfId 
= pdfDoc.AddImageUrl("file:///" + tempFile);
                    
while (pdfDoc.Chainable(pdfId))
                    {
                        pdfDoc.SetInfo(pdfDoc.Page, 
"/MediaBox:Rect""0 0 1500 900");
                        pdfDoc.Page 
= pdfDoc.AddPage();
                        pdfId 
= pdfDoc.AddImageToChain(pdfId);
                    }
                    
for (int i = 0; i < pdfDoc.PageCount - 1; i++)
                    {
                        pdfDoc.PageNumber 
= i;
                        pdfDoc.Flatten();
                    }
                    pdfDoc.Encryption.CanChange 
= false;
                    pdfDoc.Encryption.CanEdit 
= false;
                    pdfDoc.Encryption.CanPrint 
= true;
                    pdfDoc.Encryption.CanPrintHi 
= true;
                    pdfDoc.Encryption.CanAssemble 
= false;
                    pdfDoc.Encryption.CanCopy 
= false;
                    pdfDoc.Save(pdfSavePath);
                }
                
catch (Exception ex)
                {

                    
throw ex;
                }
                
finally
                {
                    System.IO.File.Delete(tempFile);
                    pdfDoc.Delete(pdfId);
                    pdfDoc.Clear();
                }

            }
        }

 

 

    protected void Button1_Click(object sender, EventArgs e)
    {
        
string strHTML = WebRequestHelper.GetResponse("http://localhost:2275/ABCpdf.Net/test.aspx""GET"null);
        Tools.PdfHelper.SaveAsFile(strHTML, Server.MapPath(
"2.pdf"));        
    }

 

posted on 2011-03-22 16:40  雨季  阅读(908)  评论(1编辑  收藏  举报