2

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");
    }

私のウェブ設定

 <dependentAssembly>
    <assemblyIdentity name="itextsharp" publicKeyToken="8354ae6d2174ddca" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.5.5.0" newVersion="5.5.5.0" />
  </dependentAssembly>
4

1 に答える 1

8

いくつか問題があります。

まず、バージョン バインディング リダイレクトを設定します。

<bindingRedirect oldVersion="0.0.0.0-5.5.5.0" newVersion="5.5.5.0" />

0.0.0.0これは、バージョンとの間で API の変更が行われていないことを前提とした巨大な包括的ステートメントです5.5.5.0。ただし、一部/多く/ほとんど/すべてのライブラリは、API が変更されると、メジャー バージョン番号とマイナー バージョン番号が増加します。

2 つ目ですが、最初のものに関連して、iTextSharp 4.1.6 (Java 2.x シリーズから移植された 4.x シリーズで最後にリリースされた iTextSharp) と 5 の間で、実際にはいくつかの API の変更がありました。あなたの非常に具体的なケースでは、クラスiTextSharp.text.html.HtmlParserが削除されたため、その例外が発生しています。

これを修正するには、いくつかの方法があります。

オプション #1 - 良い方法

  1. RazorPDF を取り除きます。2 年半更新されていません。古いバージョンの iTextSharp が必要で、古い HTML パーサーを使用しています。

  2. iTextSharp の新しい HTML 解析を使用するように切り替えますXmlWorker使用方法については、この(長々とした)回答を参照してください

オプション #2 - 悪い方法

  1. 公式の iText Web サイトの販売 FAQ ページのタイトルの 4 番目のボックス「Why should not I use iText 2.x (or iTextSharp 4.x)?」をお読みください。

  2. iTextSharp 4.1.6ソース コードをダウンロードします。これは自分で探す必要があります。このバージョンはコミュニティやソフトウェアのメーカーによってサポートされていないため、入手先を尋ねる必要はありません。

  3. 法律顧問にソース コードを 1 行ずつ調べてもらい、管轄区域の法律および著作権に関する国際条約に準拠していることを確認してください。真剣に。

  4. 弁護士がソース コードを承認したら、それをコンパイルし、バインディング リダイレクトを削除して、DLL をプロジェクトにドロップします。

  5. バージョン 4.1.6 のパーサーは非常に制限されており、完全に有効な HTML と見なされるものに対して例外をスローする既知の問題がいくつかあるという事実を受け入れてください。また、これらの問題に対するサポートを求める場合は、最新バージョンにアップグレードすることと、 から に切り替えることの 2 つを言われることを受け入れてHTMLWorkerくださいXmlWorker

オプション #3 - 醜い道(ブルーノ用)

  1. 公式の iTextSharp ソースをダウンロードします。

  2. iTextSharp.text.html.HtmlParser4.1.6 ロジックまたは独自のロジックを使用して、欠落している他のすべてのクラス、メソッド、およびプロパティを再実装します。

  3. コンパイルとリンク

于 2015-02-20T14:52:11.873 に答える