我正在尝试使用以下内容使用HTMLWorker:
public static string toWorks(string s)
{
string fontpath = System.Web.HttpContext.Current.Server.MapPath("~/Content/");
BaseFont bf = BaseFont.CreateFont(fontpath + "ARIALUNI.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
var f = new Font(bf, 10, Font.NORMAL);
// var p = new Paragraph { Alignment = Element.ALIGN_LEFT, Font = f };
var styles = new StyleSheet();
styles.LoadTagStyle(HtmlTags.SPAN, HtmlTags.FONTSIZE, "10");
styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.ENCODING, BaseFont.IDENTITY_H);
using (var sr = new StringReader(s))
{
List<IElement> list = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, styles);
// var elements = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, styles);
foreach (var e in list)
{
list.Add(e);
}
return list.ToString();
}
return null;
}
它转换:
src="/Content/UserFiles/635380078478327671/Images/test.png
要:
C:\Content\UserFiles\635380078478327671\Images\test.png
任何建议。
答案 0 :(得分:1)
请比较以下两个例子:
如果您使用第一个示例呈现带有图像的HTML文件,您可能不会成功。第二个示例介绍了ImageProvider
实现。
在getImage()
界面的ImageProvider
方法中,您可以获得有关图像路径的信息。由你来解释这条道路。例如:如果路径为/Content/UserFiles/635380078478327671/Images/test.png
,则可以通过从路径加载字节来创建Image
对象,可能是在对路径进行一些小的更改之后。
如果您没有创建ImageProvider
课程,iText会做一次猜测来找到路径。在你的情况下,这个猜测是错误的。
您可以在此处找到C#等效示例:http://tinyurl.com/itextsharpIIA2C09