[英]Using StringReader on HTML file: Links images in the wrong directory
我正在使用ITextSharp从html文件创建.pdf文件。
我的问题:读取包含图像的HTML文件时出现错误。 它应该在我的visual studio项目目录中查找时在C://目录中查找图像:C:// users / x / documents / visualstudio2010 / projects / myproject / ...
错误:
找不到文件“ C:\\ topBorder.jpg”
我的代码:
string contents = File.ReadAllText(Server.MapPath("~/HTMLTemplates/a.html")));
var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(contents), null); // ERROR THROWN HERE
我的html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<img src="topBorder.jpg" alt=""/>
我要加载的图像与a.html文件位于同一目录中,因此应该加载它吗?
仅指定图像名称将在根文件夹下查找。 尝试这个
<img src="~/HTMLTemplates/topBorder.jpg" alt=""/>
尝试
<img src="~/topBorder.jpg" alt="" />
尝试这个:
<img src="./HTMLTemplates/topBorder.jpg" alt=""/>
我试过了,行得通。
希望能对您有所帮助。
记住,iTextSharp对ASP.Net一无所知,因此您发现使用~/Images
不起作用。 另外,像任何DLL一样,“当前目录”的概念并不总是您所认为的那样。 好消息是它很容易修复。
ParseToList
命令的第三个参数是提供程序的Dictionary
。 提供程序之一是IMG_BASEURL
提供程序指令,您可以将其设置为特定的文件夹。 要注意的一件事是,如果将其设置为SRC
属性的值,那么您需要确保它包含尾部斜杠。
//Create a provider collection to set various processing properties
System.Collections.Generic.Dictionary<string, object> providers = new System.Collections.Generic.Dictionary<string, object>();
//Set the image base. This will be prepended to the SRC so make sure to include a trailing slash
providers.Add(HTMLWorker.IMG_BASEURL, @"C:\users\x\documents\visualstudio2010\projects\myproject\");
var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(contents), null, providers);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.