2017-02-16 18 views
1

.docxファイルを読んで電子メールの本文としてその内容を電子メール本文として添付ファイルとして送信したい。OpenXml Word文書からヘッダ付きHTMLへの変換

このため、私はdocxファイルをhtmlに変換するためにopenXMLとOpenXmlPowerToolsを使用しています。 ヘッダーフッターイメージを持つドキュメントを取得するまで、これはほとんど正常に動作しています。ここで

は、同様に画像を変換、コードの上にHTML形式

using (WordprocessingDocument doc = WordprocessingDocument.Open(stream, true)) 
       { 
        HtmlConverterSettings convSettings = new HtmlConverterSettings() 
        { 
         FabricateCssClasses = true, 
         CssClassPrefix = "cls-", 
         RestrictToSupportedLanguages = false, 
         RestrictToSupportedNumberingFormats = false, 
         ImageHandler = imageInfo => 
         { 
          DirectoryInfo localDirInfo = new DirectoryInfo(imageDirectoryName); 
          if (!localDirInfo.Exists) 
          { 
           localDirInfo.Create(); 
          } 

          ++imageCounter; 
          string extension = imageInfo.ContentType.Split('/')[1].ToLower(); 
          ImageFormat imageFormat = null; 
          if (extension == "png") 
          { 
           extension = "jpeg"; 
           imageFormat = ImageFormat.Jpeg; 
          } 
          else if (extension == "bmp") 
          { 
           imageFormat = ImageFormat.Bmp; 
          } 
          else if (extension == "jpeg") 
          { 
           imageFormat = ImageFormat.Jpeg; 
          } 
          else if (extension == "tiff") 
          { 
           imageFormat = ImageFormat.Tiff; 
          } 

          // If the image format is not one that you expect, ignore it, 
          // and do not return markup for the link. 
          if (imageFormat == null) 
          { 
           return null; 
          } 

          string imageFileName = imageDirectoryName + "/image" + imageCounter.ToString() + "." + extension; 

          try 
          { 
           imageInfo.Bitmap.Save(imageFileName, imageFormat); 
          } 
          catch (System.Runtime.InteropServices.ExternalException) 
          { 
           return null; 
          } 

          XElement img = new XElement(Xhtml.img, new XAttribute(NoNamespace.src, imageFileName), imageInfo.ImgStyleAttribute, imageInfo.AltText != null ? new XAttribute(NoNamespace.alt, imageInfo.AltText) : null); 
          return img; 
         } 
        }; 

        XElement html = OpenXmlPowerTools.HtmlConverter.ConvertToHtml(doc1, convSettings); 

に.docxの変換するために私のコードは正常に動作しますが、文書には、ヘッダーを持っており、それらが変換されない場合はフッタ。

ヘッダーとフッターをhtmlファイルに含めるための回避策があります。

お願いします。ありがとう!

+0

(これはちょっと無関係です)MS Word Interop Assemblyの代わりにOpenXML SDKを使用する特別な理由はありますか? –

+2

@AzazulHaq私はMS Word Interop AssemblyがMS Officeをあなたのマシンにインストールする必要があると思いますので、これを避けてください。 –

答えて

0

OpenXmlPowerToolsは、docxドキュメントをHTMLに変換するときにヘッダーとフッタを無視するため、結果のHTMLには表示されません(githubのbrowse the source code)。

おそらく、「ページ」の概念はHTMLには適用されないため、ドキュメントヘッダーと同等のものはありません。

関連する問題