2013-02-26 2 views
1

Docx.dll을 사용하여 docx 생성기를 만들고 있습니다. 지금까지 나는 이미지와 텍스트를 문서에 삽입 할 수있었습니다. 이미지와 단락은 정렬되지 않습니다. 이미지 텍스트에 줄 바꿈을해야합니다. 어떻게해야합니까? Google에서 찾아보고이 링크가 Adding Images to Documents in Word 2007 by Using the Open XML SDK 2.0 인 것을 발견했습니다. 코드가 작동하고 doc라는 단어도 생성되지만 docx 파일은 열리지 않습니다.C에서 docx 파일의 이미지에 텍스트 줄 바꿈하는 방법 #

어떻게 C#에서 'In Front Of Text'텍스트를 줄 바꿈합니까?

public static DocX CreateDocumentFile(List<CompanyInfo> info) 
    { 

     DocX document = DocX.Load(@"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\RetailWrite.docx"); 

     foreach (var companies in info) 
     { 

      Formatting fm = new Formatting(); 

      /*Inserting Image*/ 
      Novacode.Image img = document.AddImage(@"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\logos\slime.png"); 
      Novacode.Paragraph companyLogo = document.InsertParagraph(""); 
      Picture pic1 = img.CreatePicture(); 
      companyLogo.InsertPicture(pic1, 0); 


      Novacode.Paragraph CompanyName = document.InsertParagraph(companies.Name.ToString()); 
      CompanyName.StyleName = "COMPANY"; 


      Novacode.Paragraph CompanyPosition = document.InsertParagraph(companies.Position.ToString()); 
      CompanyPosition.StyleName = "posit"; 


      Novacode.Paragraph CompanyDescription = document.InsertParagraph(companies.Description.ToString()); 
      CompanyDescription.StyleName = "descrip"; 

      Novacode.Paragraph blankPara = document.InsertParagraph(" "); 
      Novacode.Paragraph blankPara2 = document.InsertParagraph(" "); 
     } 

     return document; 
    } 
+0

작업중인 코드를 게시 할 수 있습니까? 그리고 질문을 올리는 방법을 배우려면 FAQ를 읽어보십시오. – Shail

+0

코드를 추가했습니다. –

답변

0

문제의 해결 방법 : MS-Word의 Interop을 사용하여 이미지간에 단어 줄 바꿈을 적용했습니다.

public static void FormatImages() 
    { 
     Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); 
     string filePath = @"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\Temp.docx"; 
     Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(filePath, false); 

     object save_changes = false; 
     foreach (Microsoft.Office.Interop.Word.InlineShape item in wordApp.ActiveDocument.InlineShapes) 
     { 
      if (item != null) 
      { 
       if (item.Type == Microsoft.Office.Interop.Word.WdInlineShapeType.wdInlineShapePicture) 
       { 
        item.Select(); 
        Microsoft.Office.Interop.Word.Shape shape = item.ConvertToShape(); 
        shape.WrapFormat.Type = WdWrapType.wdWrapFront; 
       } 
      } 
     } 

     doc.SaveAs(@"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\RetailWrite.docx"); 
     doc.Close(save_changes); 
     wordApp.Quit(save_changes); 
     if (System.IO.File.Exists(@"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\Temp.docx")) 
     { 
      System.IO.File.Delete(@"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\Temp.docx"); 
     } 
    } 
+0

이것은 해결책은 아니지만 해결 방법입니다. 웹 서버에 Word를 설치하지 않을 경우 DocX 및 유사한 라이브러리가 사용됩니다. – Sebazzz

+0

@Sebazzz 오랜만에 IT 세상을 처음 접했습니다. 나에게 그것은 "해결책"이었고, 그것은해야 할 일을했다. :) 그렇지만, Word에서 일하는 것은 서버에서 두통이 될 수 있습니다. 나는 사무실 도구를위한 더 많은 확장 작업을 할 때 큰 어려움을 겪었다. 다시는 그것을하지 않았습니다. 나는 좋은 프로그래머가 아닐 수도있다 :) –

관련 문제