PDFsharp无法找到图像(未找到图像)

时间:2010-07-06 02:48:35

标签: c# asp.net-mvc pdfsharp

我在ASP.NET MVC应用程序中使用PDFsharp。我想添加一个图像,但不管我把它放在哪个目录中,它似乎无法找到它。我有这样的代码,因为我正在尝试复制示例应用程序

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

无论我把这张图片放在哪个目录中,当生成PDF时,我在PDF上看到一条错误,上面写着“图片未找到

还有其他人看过这个问题吗?

4 个答案:

答案 0 :(得分:10)

它可能正在寻找完整的路径?

尝试

Image image13 = section.AddImage(Server.MapPath("~/images/logo.png"));

答案 1 :(得分:5)

  

我在asp.net mvc应用程序中使用pdfsharp。

BTW:你没有使用PDFsharp,你正在使用MigraDoc。

MigraDoc搜索相对于当前目录的图像。 ASPX页面被编译为临时目录,并从临时目录执行,而不是从项目目录执行。因此,相对路径将无法按预期工作。

Assembly.CodeBase可能有助于定位图像; Assembly.Location表示临时目录。

Assembly.CodeBase可以在ASP.NET和.NET之间共享的代码中使用。 也可以使用Server.MapPath(如Marko所建议的那样),但它仅适用于ASP.NET。

答案 2 :(得分:3)

MigraDoc Document对象具有ImagePath属性,允许您指定将搜索图像的目录(使用semikola分隔多个目录)。

如果可以找到相对于程序集位置的图像,则可以使用Assembly.CodeBase来定位程序集(如我之前的答案中所述)。

答案 3 :(得分:2)

旧线程但可能会派某人派上用场

这对我有用:

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

然后我将我的图像设置为始终复制,并在我的Web项目中通过bin目录添加其相对路径。