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ファイルに含めるための回避策があります。
お願いします。ありがとう!
(これはちょっと無関係です)MS Word Interop Assemblyの代わりにOpenXML SDKを使用する特別な理由はありますか? –
@AzazulHaq私はMS Word Interop AssemblyがMS Officeをあなたのマシンにインストールする必要があると思いますので、これを避けてください。 –