簡體   English   中英

無法從程序集'itextsharp,Version = 5.5.5.0,Culture = neutral,PublicKeyToken = 8354ae6d2174ddca'加載類型'iTextSharp.text.html.HtmlParser'

[英]Could not load type 'iTextSharp.text.html.HtmlParser' from assembly 'itextsharp, Version=5.5.5.0, Culture=neutral, PublicKeyToken=8354ae6d2174ddca'

看到此鏈接將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-好方法

  1. 擺脫RazorPDF。 它已經有兩年半沒有更新了,它需要一個過時的iTextSharp版本,並使用一個過時的HTML解析器。

  2. 切換到使用iTextSharp的較新HTML解析XmlWorker 有關如何使用它的信息,請參見此答案(冗長的答案)

選項2-錯誤的方式

  1. 閱讀iText官方網站的銷售常見問題解答頁面標題上的第四個框:“為什么不使用iText 2.x(或iTextSharp 4.x)?”

  2. 下載iTextSharp 4.1.6 源代碼 您需要自己尋找。 不要擔心問到哪里可以得到它,因為社區甚至軟件制造商都不支持該版本。

  3. 讓您的法律顧問逐行檢查源代碼,以確保其符合您所在管轄區的法律以及任何有關版權的國際條約。 說真的

  4. 如果您的法律顧問批准了源代碼,請對其進行編譯,然后刪除綁定重定向並將DLL放入您的項目中。

  5. 接受以下事實:版本4.1.6的解析器非常非常有限,並且存在幾個已知問題,這些問題會引發您認為完全有效的HTML的異常。 還接受如果您要求對這些問題提供任何支持,您將被告知兩件事,即升級到最新版本以及從HTMLWorker切換到XmlWorker

選項#3-丑陋的方式 (適用於Bruno)

  1. 下載官方的iTextSharp源碼

  2. 使用4.1.6邏輯或您自己的邏輯重新實現iTextSharp.text.html.HtmlParser和所有其他缺少的類,方法和屬性。

  3. 編譯鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 無法加載文件或程序集&#39;itextsharp,Version = 5.5.0.0,Culture = neutral,PublicKeyToken = 8354ae6d2174ddca&#39;或其依賴項之一 無法從程序集“ EPaymentInvoicing,版本= 1.0.0.0,區域性=中性,PublicKeyToken =空”中加載類型“ AgencySystem” 無法從程序集 'GraphQL,Version=3.0.0.0,Culture=neutral,PublicKeyToken=null' 加載類型 'GraphQL.Http.IDocumentWriter' 無法加載文件或程序集“Noesis.Javascript, Version=0.0.0.0, Culture=neutral, PublicKeyToken=ae36d046c7f89f85”或其依賴項之一 無法從程序集“System.Web,版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50 無法從程序集“ Nancy.Owin,Version = 0.23.2.0,Culture = neutral,PublicKeyToken = null”中加載類型&#39;Owin.Extensions&#39; {“無法從程序集“ Pipeline,版本= 1.0.0.0,文化=中性,PublicKeyToken =空”中加載類型&#39;VBR.Pipeline.Domain.ExpertGuide&#39;。” Twilio Rest API引發錯誤:無法從程序集“ Twilio,版本= 1.0.0.0,文化=中性,PublicKeyToken =空”中加載類型“ Twilio.TwilioClient” 無法從程序集“WebDriver,版本=4.0.0.0,Culture=neutral,PublicKeyToken=null”加載類型“OpenQA.Selenium.Internal.IWrapsElement” 無法從程序集&#39;ADODB,Version = 7.0.3300.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a&#39;中加載類型&#39;ADODB._Recordset_Deprecated&#39;
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM