【问题标题】:Matrix Assembly Reference in iTextSharp with ASP.NET5带有 ASP.NET5 的 iTextSharp 中的矩阵汇编参考
【发布时间】:2016-04-08 12:04:34
【问题描述】:

我在 ASP.NETv5 中尝试使用 iTextSharp,我有一个 PdfPageEventHelper 并覆盖了 OnEndPage 并带有以下行:

_cb.AddTemplate(_template, pageSize.GetLeft(295), pageSize.GetBottom(36));

这会引发错误:“矩阵”类型是在未引用的程序集中定义的。您必须添加对程序集“System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用。

我该如何解决这个问题,我需要在项目中添加一些东西吗?

编辑 按照 CodingGorilla 的回答,我将 web.config 更改为:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding>
      <dependentAssembly>
        <assemblyIdentity name="System.Drawing"
          publicKeyToken="b03f5f7f11d50a3a"
          culture="en-us" />
        <bindingRedirect oldVersion="2.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <system.webServer>
  etc...

但构建仍然失败并提到 2.0.0.0 版本。

【问题讨论】:

  • 你想在 CoreCLR 上运行它吗?
  • @CodingGorilla 不,它只运行 dnx451

标签: c# asp.net .net itextsharp


【解决方案1】:

实际上,您根本不需要 System.Drawing。我在我的一堂课上遇到了同样的问题。如果您应用为我解决的问题,您的代码行将如下所示:

_cb.AddTemplate(_template, 1f, 0f, 0f, 1f, pageSize.GetLeft(295), pageSize.GetBottom(36));

这不应改变代码的预期行为,因为无论如何您的行都会有效地调用此行。

我必须承认,我仍然完全不了解 System.Drawing 是如何发挥作用的。如果方法调用有两个浮点数,则不应解析为 System.Drawing.Drawing2D.Matrix 版本。包含 Matrix 的方法签名甚至被标记为 [Obsolete]。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,System.Drawing 没有被项目引用,添加了对 4.0.0.0 的引用并且它起作用了

    【讨论】:

    • 啊。所以你必须做类似"frameworks": { "dnx451": { "frameworkAssemblies": { "System.Drawing": "4.0.0.0" } } } 的事情。谢谢!
    【解决方案3】:

    所以我认为问题在于 iTextSharp 是使用/用于 .NET 2.0 编写的,因此它正在寻找 System.Drawing 的 2.0 版本。我从来没有试过用System.Drawing 做这个,但我认为它会起作用;您想要做的是将&lt;bindingRedirect&gt; 元素添加到web.config。查看这篇 MSDN 文章:https://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.110).aspx,其中谈到了这一点。

    我怀疑 iTextSharp 是否已经用 ASP.NET 5 进行了测试,所以最终你可能根本无法使用它,因为它依赖于旧版本的框架。

    【讨论】:

    • ASP.NETv5 目前(2016 年 1 月 6 日)尚未发布,它仍处于 RC1。
    • 不确定我是否做得对,但我仍然遇到同样的错误。请参阅更新的问题。如果智能感知 / VS 知道存在重定向 - 因为它仍然将其突出显示为错误并且构建仍然失败。
    • 试试:oldVersion="0.0.0.0-2.0.0.0" 看看是否有帮助。如果没有,那么您可能想在 ASP.NET github repo 上提出问题。
    • 知道如何让System.Drawing 进入项目吗?如果我在project.config 中尝试"System.Drawing": "",我会得到The dependency System.Drawing could not be resolved.
    • @AmedeeVanGasse iText 会发布 vNext 版本吗?有什么想法(粗略估计)吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 2019-06-07
    • 1970-01-01
    相关资源
    最近更新 更多