10

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

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

无论我将此图像放在哪个目录中,当生成 PDF 时,我都会在 PDF 上看到一条错误消息“找不到图像

有没有其他人看到这个问题?

4

4 回答 4

10

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

尝试

Image image13 = section.AddImage(Server.MapPath("~/images/logo.png"));
于 2010-07-06T03:06:44.087 回答
5

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

顺便说一句:您使用的不是 PDFsharp,而是 MigraDoc。

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

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

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

于 2010-07-06T07:30:35.090 回答
3

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

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

于 2010-07-08T10:08:30.423 回答
2

旧线程,但可能对某人有用

这对我有用:

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

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

于 2014-09-22T12:05:06.050 回答