2011-05-05 3 views
-1
private static void UpdateFontSettings(WordprocessingDocument content, WordprocessingDocument template) 

    { 
     if (content != null && content.MainDocumentPart != null && content.MainDocumentPart.FontTablePart != null && 
      template != null && template.MainDocumentPart != null && template.MainDocumentPart.FontTablePart != null) 
     { 
      IEnumerable<OpenXmlPart> partsToDelete = from idPartPair in content.MainDocumentPart.FontTablePart.Parts 
                select idPartPair.OpenXmlPart; 

      content.MainDocumentPart.FontTablePart.DeleteParts(partsToDelete); 

      StreamReader streamReader = null; 
      StreamWriter streamWriter = null; 

      try 
      { 
       streamReader = new StreamReader(template.MainDocumentPart.FontTablePart.GetStream()); 
       streamWriter = new StreamWriter(content.MainDocumentPart.FontTablePart.GetStream(FileMode.Create)); 
      } 
      catch 
      { 
       if (streamReader != null) 
       { 
        streamReader.Close(); 
       } 

       throw; 
      } 

      using (streamWriter) 
      { 
       streamWriter.Write(streamReader.ReadToEnd()); 
      } 

      if (streamReader != null) 
      { 
       streamReader.Close(); 
      } 
     } 
    } 
+0

예외는 어디에서 발생합니까? –

+3

손상된 콘텐츠를 제공하는 경우 __yes__에 이상이 있습니다. 무엇이 잘못되었는지, 왜 틀렸다고 생각하는지, 그리고 그렇게해야한다고 생각할 때를 말해야합니다. – unholysampler

+1

또한 try..catch 블록에서 using (streamWriter) 부분을 사용하면 streamReader를 닫을 수 있습니다. –

답변

0

StreamWriter을 만들 때 인코딩 유형을 설정하는 것이 좋습니다. 나는 대부분의 시스템에서 ANSI로 기본 설정되어 있다고 생각하지만, UTF8 또는 다른 것을 요구할 수도있다.

관련 문제