【问题标题】:Image in html page cannot be found by c# html parserc# html解析器无法找到html页面中的图像
【发布时间】:2013-10-23 21:09:59
【问题描述】:

我正在使用 itextsharp dll 以 PDF 格式打印网页。我的 html 文件中有一个 <img src="Images/flower.jpg" />。当我没有图像时,下面的按钮单击事件将呈现 PDF。使用图像,我得到了这个错误:

找不到路径“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();
    }

【问题讨论】:

  • 我有一个
  • 在您的 HTML 中,您需要提供图像的绝对路径,因为相对路径意味着相对于当前工作目录,即您在弹出错误时看到的路径。
  • 那行得通。谢谢。这意味着一旦路径移动到生产服务器,我就必须更新它。
  • 是的,如果您可以通过代码访问图像 url,请参阅我的答案以获得可能更好的替代方案。不要忘记投票并接受:)

标签: c# asp.net


【解决方案1】:

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

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

到:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2012-09-20
    • 2012-02-18
    • 2011-01-16
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多