2011-01-06 3 views
2

Interop.Word 및 C#에 약간의 이미지 문제가 있습니다. 나는 생성하려고하는 문서의 헤더에 이미지를 추가하고 싶다. 이 코드는C# Interop.Word 프로젝트 리소스 폴더에서 이미지 추가

section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Shapes.AddPicture(@"C:\Logo.jpg", ref x, ref x, ref x, ref x, ref x, ref x, ref x); 

문제는 내가 프로젝트를 게시 한 후 이후 코드 "C:\Logo.jpg"을 할 수 없다는 것입니다 완벽하게 작동이, 대부분의 아마 사용자의 C 폴더에는 Logo.jpg 없을 것이다. 이미지가 이미 내 프로젝트의 리소스 폴더에 있습니다. 전에 Image.FromFile("Logo.jpg")을 사용했지만 .AddPicture에는 이미지가 아닌 문자열이 필요합니다.

아이디어가 있으십니까?

- 편집 - 인터넷을 통해

톱이 :

string anyPath = @"C:\logo.jpg"; 
Properties.Resources.logo.Save(anyPath); 
section.Headers.[...].Shapes.AddPicture(anyPath, ... 

하지만 난 여전히 GDI +에서 일반 오류 또는 ExternalException이 처리되지 않은했다. 사용

답변

0

캔트 ...

section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Shapes.AddPicture(@"Logo.jpg", ref x, ref x, ref x, ref x, ref x, ref x, ref x); 

는 절대 위치 파일

편집 대신 bin 폴더에 이미지 파일의 상대 위치를 사용

당신은 생성이 사용할 수

상대 링크를 기반으로 한 절대 파일 위치 는 임의의 파일과 같은 아무도 존재하지 언급하지 않기 위하여, 나는 그들이 (아마도) 다양한 쓰기 권한이 있기 때문에 업데이트 된 방법은 비스타/Windows7의 너무 큰 아닌 것 같다

string relative = @"images\Logo.jpg"; 
System.IO.FileInfo fi = new System.IO.FileInfo(Application.ExecutablePath); 
string absolute = System.IO.Path.Combine(fi.Directory.FullName, relative); 

사용 윈폼에 의존 그들의 C 드라이브에 추가되었습니다.

나는 나는 마지 못해

+0

이미 시도했지만 아무 소용이 없습니다.또한 이미지의 속성을 편집하고 Build Action을 리소스 포함 및 Copy to Output Directory로 복사하도록 설정했지만 여전히 아무 일도 일어나지 않았습니다. – iamnobody

+0

거기에 체크 했습니까? Console.out.println (File.Exists ("logo.jpg"))과 같은 것을함으로써 ? – Kurru

+0

false를 반환합니다. 그러나 파일은 이미 내 resource.resx 및 내 리소스 폴더에 있습니다. 나는 지금 정말로 혼란 스럽다. 이 문제를 어떻게 해결할 수 있습니까? BTW, 시간 Kurru 주셔서 감사합니다. :) – iamnobody

0

... 응용 프로그램 폴더에 있지이 같은 중요한 파일의 잘못된 관행을 생각 -하지만 성공적으로 - 한 :

이이 작업을 수행
if (!File.Exists("singleright.png")) 
{ 
object obj = Properties.Resources.singleright; 
System.Drawing.Bitmap rs = (System.Drawing.Bitmap)(obj); 
rs.Save("singleright.png"); 
} 
insertionPoint.InlineShapes.AddPicture("singleright.png", ref LinkToFile, ref SaveWithDocument); 

- 작동 및 내 컴퓨터에 Word - Addin을 게시했을 때. 그러나 나는 아직도 그것을 좋아하지 않는다. 리소스를 직접 사용할 수 있어야하는 클라이언트 컴퓨터의 리소스에서 이미지 파일을 저장할 필요가 없습니다.

0

동일한 상황이 발생하여 이전에 이미지를 저장하지 않고도 InlineShapes 이미지 리소스를 직접 사용할 수있는 방법을 찾지 못했습니다.

이 파일을 저장할 멋진 폴더는 My.Computer.FileSystem.SpecialDirectories.Temp입니다.

0

나는이 게시물을보고 리소스 파일에서 이미지를 추가하는 일이 바로 발생합니다. 방법을 찾았고 나를 위해 일하며 로컬 컴퓨터에 저장하지 않았습니다.

// PictureContentContorl       
    Microsoft.Office.Tools.Word.PictureContentControl ct; 
    // Removing the control if already exists 
         Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument).Controls.Remove("HeaderLogo"); 
    // adding control to a range rng 
          ct = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument).Controls.AddPictureContentControl(rng, "HeaderLogo"); 
          ct.Image = Properties.Resources.my_logo; 
          ct = null; 

누군가에게 도움이 될 수 있습니다.