2013-10-23 28 views
1

我正在使用itextsharp dll以PDF格式打印网页。我在我的html文件中有一个<img src="Images/flower.jpg" />。当我没有图像时,下面的按钮点击事件将渲染PDF。随着图像,我得到这个错误:无法通过c#找到html页面中的图像html解析器

Could not find a part of the path 'C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\Images\flower.jpg'

这里是我的代码:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf"); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     StringWriter sw = new StringWriter(); 
     HtmlTextWriter hw = new HtmlTextWriter(sw); 
     this.Page.RenderControl(hw); 
     StringReader sr = new StringReader(sw.ToString()); 
     Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f); 
     HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 
     PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
     pdfDoc.Open(); 
     htmlparser.Parse(sr); 
     pdfDoc.Close(); 
     Response.Write(pdfDoc); 
     Response.End(); 
    } 
+0

我有一个

+0

在你的HTML中,你需要给图像一个绝对路径,因为相对路径意味着相对于当前工作目录,这是你弹出错误时看到的路径。 –

+0

这有效。谢谢。这意味着我必须在路径移至生产服务器时更新路径。 –

回答

2

最简单的解决方案应该是改变:

<img src="Images/flower.jpg" /> 

到:

<img src="http://www.yourwebsite.com/Images/flower.jpg" /> 

否则您可以使用Server.MapPath("Images/flower.jpg")通过代码获取完整的URL。然而,这意味着你必须在编译时知道图像的相对路径(意味着访问原始html),这使得代码不易维护。