2010-07-06 12 views
8

ASP.NET MVC 애플리케이션에서 PDFsharp를 사용하고 있습니다. 이미지를 추가하고 싶지만 디렉토리를 넣지 않아도 찾을 수없는 것입니다. 내가 이 PDFsharp에서 이미지를 찾을 수 없습니다. (이미지를 찾을 수 없습니다.)

"말하는 PDF에 오류가 이미지를 찾을 수없는 PDF 파일이 생성됩니다 때 아무리이 이미지를 넣어 어떤 디렉토리, 내가 볼 수없는 샘플 응용 프로그램

Section section = document.AddSection(); 
Image image13 = section.AddImage("../../images/logo.png"); 
을 복사하려고으로이 같은 코드를
"

누구든지이 문제를 보았습니까?

답변

9

전체 경로를 찾고 있습니까?

내가 asp.net MVC 응용 프로그램에서 pdfsharp을 사용하고

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

나는 동일한 문제가있었습니다. 문제는 asp.net mvc를 디버깅 할 때 lib 디렉토리가 C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ root \ 34f2a404 \ 3b92b98b \ assembly \ dl3과 같은 원격 디렉토리에로드된다는 것입니다. \ f8107a2b \ 16f99150_1bfcce01 -> Server.MapPath에 대한 아이디어는 훌륭합니다. 디버그 환경과 릴리스 환경 모두에서 작동합니다. –

4

을보십시오.

현재 : PDFsharp를 사용하지 않고 MigraDoc을 사용하고 있습니다.

MigraDoc은 현재 디렉토리를 기준으로 이미지를 검색합니다. ASPX 페이지는 프로젝트 디렉토리가 아닌 임시 디렉토리에서 컴파일되고 실행됩니다. 따라서 상대 경로는 예상대로 작동하지 않습니다.

Assembly.CodeBase는 이미지를 찾는 데 도움이 될 수 있습니다. Assembly.Location은 임시 디렉터리를 나타냅니다.

Assembly.CodeBase는 ASP.NET과 .NET간에 공유되는 코드에서 사용할 수 있습니다. Server.MapPath는 Marko에서 제안한대로 사용할 수도 있지만 ASP.NET에서만 작동합니다.

+2

왜 투표가 중단 되었습니까? – Marko

+0

팀 - 나는 아직도이 일을 할 수 없다. . 아무도 성공적으로이 작업을 수행했는지 알고 있습니까? – leora

+0

우리는 MVC없이 지금까지만 사용했습니다. 하지만 여기에 "고백"이 있습니다 : http://forum.pdfsharp.net/viewtopic.php?p=3833#p3833 –

3

MigraDoc Document 개체에는 이미지를 검색 할 디렉터리를 지정할 수있는 ImagePath 속성이 있습니다 (여러 개의 디렉터리를 세미콜라로 구분).

이미지가 어셈블리의 위치를 ​​기준으로 볼 수 있으면 Assembly.CodeBase를 사용하여 어셈블리를 찾을 수 있습니다 (이전의 대답에서 언급 한 것처럼).

1

올드 스레드는하지만

이 나를 위해 일한 사람

을 위해 유용하게 사용할 수 있습니다

그때 항상 복사 내 이미지를 설정하고 내 웹에서 bin 디렉토리에서의 상대 경로를 추가
Document doc = new Document(); 
doc.ImagePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase).Replace("file:\\", ""); 

계획.

+0

이것은 나를 위해 일했습니다! 당신은 생명의 은인입니다! 감사합니다. – user4566715

+0

웹 양식 프로젝트에 유용합니다. – user4566715