Я пытаюсь использовать iTextSharp в ASP.NETv5, у меня есть PdfPageEventHelper с переопределенным OnEndPage со следующей строкой:

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

Это вызывает ошибку: Тип «Матрица» определен в сборке, на которую нет ссылки. Необходимо добавить ссылку на сборку «System.Drawing, Version = 2.0.0.0, Culture = нейтральный, 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.

0
Sean 4 Янв 2016 в 22:38

3 ответа

Лучший ответ

У меня была такая же проблема, System.Drawing не упоминался в проекте, добавил ссылку на 4.0.0.0, и это сработало

1
Josh Wright 25 Фев 2016 в 08:23

На самом деле вам вообще не понадобится System.Drawing. У меня была такая же проблема на одном из моих классов. Если вы примените то, что решило это за меня, ваша строка кода будет выглядеть так:

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

Это не должно изменить предполагаемое поведение вашего кода, поскольку ваша строка в любом случае будет фактически вызывать эту строку.

Должен признать, что я до сих пор не совсем понимаю, как вообще в игру вступает System.Drawing. Вызов метода не должен разрешаться в версию System.Drawing.Drawing2D.Matrix, если он получает два числа с плавающей запятой. Сигнатура метода, содержащая матрицу, даже помечена [Устаревшая].

0
tom_imk 29 Дек 2016 в 12:02

Итак, я думаю, что проблема в том, что iTextSharp был написан с / для .NET 2.0 и поэтому ищет версию 2.0 System.Drawing. Я никогда не пробовал делать это с System.Drawing, но полагаю, что это будет работать так же; вам нужно добавить элемент <bindingRedirect> в web.config. Ознакомьтесь с этой статьей MSDN: https: // msdn. microsoft.com/en-us/library/7wd6ex19(v=vs.110).aspx, в котором говорится об этом.

Я сомневаюсь, что iTextSharp был протестирован с ASP.NET 5, поэтому, в конце концов, вы просто не сможете его использовать, поскольку он зависит от более старой версии фреймворка.

1
CodingGorilla 6 Янв 2016 в 12:55