2010-07-06 102 views
8

我在ASP.NET MVC應用程序中使用PDFsharp。我想添加一張圖片,但無論我放入什麼目錄,似乎都無法找到它。我有這樣的代碼,因爲我試圖複製示例應用程序PDFsharp找不到圖像(圖像未找到)

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

無論哪個目錄,我把這個圖像中,當被生成的PDF,我看到在PDF說:「錯誤沒有找到圖片

有其他人看過這個問題嗎?

回答

9

它可能正在尋找一個完整的路徑?

嘗試

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

我有同樣的問題。問題是,當調試asp.net mvc時,庫管理器將加載到遠程目錄中,如C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ root \ 34f2a404 \ 3b92b98b \ assembly \ dl3 \ f8107a2b \ 16f99150_1bfcce01 - > Server.MapPath的思想很棒:它可以在調試和發佈環境中工作。 – 2013-12-18 18:06:34

4

我使用pdfsharp在asp.net MVC應用程序。

順便說一句:你沒有使用PDFsharp,你正在使用MigraDoc。

MigraDoc搜索相對於當前目錄的圖像。 ASPX頁面被編譯並從臨時目錄執行,而不是從項目目錄執行。因此相對路徑不能按預期工作。

Assembly.CodeBase可能有助於定位圖像; Assembly.Location表示臨時目錄。

Assembly.CodeBase可用於ASP.NET和.NET之間共享的代碼。 也可以使用Server.MapPath(如Marko所建議的),但它僅適用於ASP.NET。

+2

這是爲什麼被拒絕? – Marko 2010-07-06 21:07:07

+0

團隊 - 我仍然無法得到這個工作。 。你知道有沒有人成功做過這件事? – leora 2010-10-24 22:54:23

+0

到目前爲止,我們只使用它沒有MVC。 但這裏有一個「懺悔」: http://forum.pdfsharp.net/viewtopic.php?p=3833#p3833 – 2010-10-25 07:44:11

3

MigraDoc Document對象具有ImagePath屬性,該屬性允許您指定將搜索圖像的目錄(使用semikola分隔多個目錄)。

如果可以找到相對於程序集位置的圖像,那麼可以使用Assembly.CodeBase來定位程序集(如我之前的回答中所述)。

1

舊線程,但可能會派上用場的人

這爲我工作:

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

然後我把我的形象總是複製,在我的網站,其相對路徑添加它的bin目錄項目。

+0

這完全適合我!你是一個拯救生命的人!謝謝 – user4566715 2016-08-26 20:06:32

+0

我需要補充的是,這對webform項目非常有用! – user4566715 2016-08-26 20:09:55