10

I am using PDFsharp in an ASP.NET MVC application. I want to add an image but no matter what directory I put it in, it can't seem to find it. I have code like this as I am trying to copy the sample application

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

No matter what directory I put this image in, when the PDF gets generated, I see an error on the PDF saying "Image not found"

Has anyone else seen this issue?

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 プロパティがあります (複数のディレクトリはセミコラで区切ります)。

アセンブリの場所を基準にして画像を見つけることができる場合は、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 に答える