繁体   English   中英

在HTML文件上使用StringReader:链接错误目录中的图像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM