2011-03-18 4 views
11

MigraDoc 문서의 헤더에 이미지를 추가하고 싶지만 문서 생성에서 파일 시스템 경로를 하드 코딩하는 것은 여러 가지 문제에 약간 문제가 있습니다. 그것은 나를 조금 기분이 좋게 만들뿐만 아니라 배포를 간단하게 유지하는 것입니다.MigraDoc 문서에 임베디드 리소스 이미지 추가

어셈블리에 리소스로 이미지를 포함 할 수 있다면 그냥 이상적으로 보일 것입니다. 그러나 PDF에 필요할 때 이미지를 추출 할 수는 있지만 직접적으로 또는 내장 된 방식으로 보이지는 않습니다. 이것을하기 위해. 어떤 속임수 또는 아이디어?

답변

5

아니요, MigraDoc은 이것을 허용하지 않습니다. 해킹이 있지만 ASP .NET을 사용하고 문서 미리보기를 사용하지 않는 경우에만 작동합니다. 구체적으로 문제를 설명 공식 포럼이 스레드를 참조하십시오 :

당신은 해결 방법을 통해 포함 된 리소스를 사용하는 예를 임시로 저장하고를 통해 삭제할 수 있습니다

완료 후에 메소드와 소멸자를 처리하십시오. 예 :

BitmapImage bi = new BitmapImage(); 
bi.BeginInit(); 
bi.UriSource = new Uri("pack://application:,,/Resources/temp.png"); 
bi.EndInit(); 
PngBitmapEncoder pbe = new PngBitmapEncoder(); 
pbe.Frames.Add(BitmapFrame.Create(bi)); 
using (FileStream fs = new FileStream("temp.png", FileMode.Create)) 
{ 
    pbe.Save(fs); 
} 

그런 다음 당신이 MigraDocObject.AddImage("temp.png");를 통해 그것을 사용하지만 나중에 이미지를 삭제하거나 이미지가 이미 존재하는 경우 검사를 추가해야하고 올바른 파일 크기가있는 경우 (경우에 사용자가 대체) 할 수 있습니다.

2

PDFSharp/MigraDoc 1.50에는 다른 방법이 포함되어 있습니다. MigraDoc wiki에서 :

이 PDFsharp 1.50 베타 2와 함께, 새로운 기능이 추가되었습니다 MigraDoc 이제 접두사와 BASE64 인코딩 된 이미지를 포함하는 파일 이름 받아 "64 기수를". 이 경우 파일 이름이 파일을 참조하지 않고 파일 이름에 비트 맵의 ​​모든 비트가 BASE64 인코딩의 ASCII 문자열로 포함됩니다.

관련 문제