PDFsharp не может найти изображение (изображение не найдено) - PullRequest
10 голосов
/ 06 июля 2010

Я использую PDFsharp в приложении ASP.NET MVC. Я хочу добавить изображение, но независимо от того, в какую директорию я его поместил, оно не может быть найдено. У меня есть такой код, когда я пытаюсь скопировать образец приложения

 Section section = document.AddSection();
 Image image13 = section.AddImage("../../images/logo.png");

Независимо от того, в какой каталог я помещаю это изображение, при создании PDF-файла в PDF-файле появляется сообщение об ошибке " Изображение не найдено "

Кто-нибудь еще видел эту проблему?

Ответы [ 4 ]

10 голосов
/ 06 июля 2010

Возможно, вы ищете полный путь?

Попробуйте

Image image13 = section.AddImage(Server.MapPath("~/images/logo.png"));
5 голосов
/ 06 июля 2010

Я использую pdfsharp в приложении asp.net mvc.

Кстати: вы не используете PDFsharp, вы используете MigraDoc.

MigraDoc выполняет поиск изображенийотносительно текущего каталога.Страницы ASPX компилируются и выполняются из временного каталога, а не из каталога проекта.Поэтому относительные пути не будут работать должным образом.

Assembly.CodeBase может помочь найти изображения;Assembly.Location указывает временный каталог.

Assembly.CodeBase может использоваться в коде, который используется совместно ASP.NET и .NET.Server.MapPath также может быть использован (как предложено Марко), но он работает только в ASP.NET.

3 голосов
/ 08 июля 2010

Объект MigraDoc Document имеет свойство ImagePath, которое позволяет указывать каталоги, в которых будут выполняться поиск изображений (отдельные каталоги с семиколами).

Если изображения можно найти относительно местоположения сборки, затем Assembly.CodeBase может использоваться для поиска сборки (как уже упоминалось в моем предыдущем ответе).

2 голосов
/ 22 сентября 2014

Старая тема, но может кому-то пригодится

Это сработало для меня:

Document doc = new Document();
doc.ImagePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).Replace("file:\\", "");

Затем я настроил свое изображение на копирование всегда и добавил его с относительным путем к каталогу bin в моем веб-проекте.

...