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.05.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解析XmlWorkerSee 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/

10-12 02:52