繁体   English   中英

使用OpenXml将HTML文本内容转换为Word

[英]Html Text Content to Word using OpenXml

我有一个富文本框,其中包含html格式的文本,并且我们可以插入复制的图像。 我尝试了AlternativeFormatImportPart和AltChunk方法。 它正在生成文档,但出现以下错误。 请让我知道我在这里想念什么。

在此处输入图片说明 在此处输入图片说明

  
 MemoryStream ms;// = new MemoryStream(new UTF8Encoding(true).GetPreamble().Concat(Encoding.UTF8.GetBytes(h)).ToArray()); ms = new MemoryStream(HtmlToWord(fileContent)); //MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(h)); // Create alternative format import part. AlternativeFormatImportPart chunk = mainDocPart.AddAlternativeFormatImportPart( "application/xhtml+xml", altChunkId); chunk.FeedData(ms); AltChunk altChunk = new AltChunk(); altChunk.Id = altChunkId; 

 public static byte[] HtmlToWord(String html) { const string filename = "test.docx"; if (File.Exists(filename)) File.Delete(filename); var doc = new Document(); using (MemoryStream generatedDocument = new MemoryStream()) { using (WordprocessingDocument package = WordprocessingDocument.Create( generatedDocument, WordprocessingDocumentType.Document)) { MainDocumentPart mainPart = package.MainDocumentPart; if (mainPart == null) { mainPart = package.AddMainDocumentPart(); new Document(new Body()).Save(mainPart); } HtmlConverter converter = new HtmlConverter(mainPart); converter.ExcludeLinkAnchor = true; converter.RefreshStyles(); converter.ImageProcessing = ImageProcessing.AutomaticDownload; //converter.BaseImageUrl = new Uri(domainNameURL + "Images/"); converter.ConsiderDivAsParagraph = false; Body body = mainPart.Document.Body; var paragraphs = converter.Parse(html); for (int i = 0; i < paragraphs.Count; i++) { body.Append(paragraphs[i]); } mainPart.Document.Save(); } return generatedDocument.ToArray(); } } 

MemoryStream的AlternativeFormatImportPart中存在一些问题,文档的格式设置不正确。 因此,采用了另一种方法,即使用HtmlToWord方法将html内容保存到word中,并使用FileStream读取文件内容并提供AlternativeFormatImportPart。

string docFileName;
HtmlToWord(fileContent, out docFileName);
FileStream fileStream = File.Open(docFileName, FileMode.Open);                
// Create alternative format import part.
AlternativeFormatImportPart chunk =mainDocPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.WordprocessingML, altChunkId);
chunk.FeedData(fileStream);
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM