see this link将html转换为pdf我在webconfig中遇到此版本错误,让一些天才找到并解决了这个问题。
我的模特
public class Customer
{
public int CustomerID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
我的控制器,这是正常代码
public ActionResult Index()
{
List<Customer> customers = new List<Customer>();
for (int i = 1; i <= 10; i++)
{
Customer customer = new Customer
{
CustomerID = i,
FirstName = string.Format("FirstName{0}", i.ToString()),
LastName = string.Format("LastName{0}", i.ToString())
};
customers.Add(customer);
}
return View(customers);
}
这是PDF转换控制器
public ActionResult PDF()
{
List<Customer> customers = new List<Customer>();
for (int i = 1; i <= 10; i++)
{
Customer customer = new Customer
{
CustomerID = i,
FirstName = string.Format("FirstName{0}", i.ToString()),
LastName = string.Format("LastName{0}", i.ToString())
};
customers.Add(customer);
}
return new RazorPDF.PdfResult(customers, "PDF");
}
我的webconfig
<dependentAssembly>
<assemblyIdentity name="itextsharp" publicKeyToken="8354ae6d2174ddca" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.5.5.0" newVersion="5.5.5.0" />
</dependentAssembly>
最佳答案
你有几个问题。
首先,您有一个版本绑定重定向:
<bindingRedirect oldVersion="0.0.0.0-5.5.5.0" newVersion="5.5.5.0" />
这是一个笼统的声明,它假定在版本
0.0.0.0
和5.5.5.0
之间未发生任何API更改。但是,当API发生更改时,某些/很多/大多数/所有库都会增加其主要版本和次要版本号。其次,但与第一个有关,在iTextSharp 4.1.6(从Java 2.x系列移植到的4.x系列中的最后一个iTextSharp)和5之间,实际上有一些API更改。在您的特定情况下,已删除类
iTextSharp.text.html.HtmlParser
,这就是为什么要获取该异常的原因。有两种方法可以解决此问题。
选项1-好方法
摆脱RazorPDF。它已经两年半没有更新,它需要过时的iTextSharp版本,并使用过时的HTML解析器。
切换到使用iTextSharp的较新HTML解析
XmlWorker
。 See this (long winded) answer for how to use it。选项2-错误的方式
阅读官方iText website's sales FAQ page标题上的第四个方框“为什么我不应该使用iText 2.x(或iTextSharp 4.x)?”
下载iTextSharp 4.1.6源代码。您需要自己寻找。不要担心问到哪里可以得到它,因为社区甚至软件制造商都不支持该版本。
让您的法律顾问逐行检查源代码,以确保其符合您所在管辖区的法律以及任何有关版权的国际条约。说真的
如果您的法律顾问批准了源代码,请对其进行编译,然后删除绑定重定向并将DLL放入您的项目中。
接受以下事实:版本4.1.6的解析器非常非常有限,并且存在几个已知问题,这些问题会引发您认为完全有效的HTML的异常。还要接受的是,如果您寻求对这些问题的任何支持,您将被告知两件事,即升级到最新版本以及从
HTMLWorker
切换到XmlWorker
。选项#3-丑陋的方式(适用于Bruno)
下载official iTextSharp source。
使用4.1.6逻辑或您自己的逻辑重新实现
iTextSharp.text.html.HtmlParser
以及所有其他缺少的类,方法和属性。编译链接
关于c# - 无法从程序集'itextsharp,Version = 5.5.5.0,Culture = neutral,PublicKeyToken = 8354ae6d2174ddca'中加载类型'iTextSharp.text.html.HtmlParser',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28626985/