我在ASP.NET MVC应用程序中使用PDFsharp。我想添加一个图像,但不管我把它放在哪个目录中,它似乎无法找到它。我有这样的代码,因为我正在尝试复制示例应用程序
Section section = document.AddSection();
Image image13 = section.AddImage("../../images/logo.png");
无论我把这张图片放在哪个目录中,当生成PDF时,我在PDF上看到一条错误,上面写着“图片未找到”
还有其他人看过这个问题吗?
答案 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目录添加其相对路径。