我正在编写代码,通过使用开放的 XML 电动工具将 Docx 文件的内容作为 HTML 获取,现在我想将其转换回另一个 docx 文件。将内容获取为 HTML 的步骤工作正常,但是当我从该 HTML 生成 docx 文件时,无法打开该文件并引发此错误
此文件是在 word 2007 的预发布版本中创建的,无法在此版本中打开
从测试 docx 生成的 HTML 是
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
charset="UTF-8" />
<title>My Page Title</title>
<meta
name="Generator"
content="PowerTools for Open XML" />
<style>span { white-space: pre-wrap; }
p.pt-Normal {
line-height: 107.9%;
margin-bottom: 8pt;
text-align: justify;
font-family: ;
font-size: 11pt;
margin-top: 0;
margin-left: 0;
margin-right: 0;
}
span.pt-DefaultParagraphFont {
font-family: ;
font-size: 11pt;
font-style: normal;
font-weight: normal;
margin: 0;
padding: 0;
}
span.pt-DefaultParagraphFont-000000 {
font-family: Calibri;
font-size: 11pt;
font-style: normal;
font-weight: normal;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div>
<p
dir="rtl"
class="pt-Normal">‏<span
lang="fa-IR"
class="pt-DefaultParagraphFont">‏با سلام خدمت ‏</span><span
lang="fa-IR"
class="pt-DefaultParagraphFont">‏<<‏</span><span
class="pt-DefaultParagraphFont-000000">‎PERSONS.lname‎</span><span
lang="fa-IR"
class="pt-DefaultParagraphFont">‏>>‏</span><span
lang="fa-IR"
class="pt-DefaultParagraphFont">‏ ‏</span><span
lang="fa-IR"
class="pt-DefaultParagraphFont">‏<<‏</span><span
class="pt-DefaultParagraphFont-000000">‎PERSONS.fname‎</span><span
lang="fa-IR"
class="pt-DefaultParagraphFont">‏>>‏</span></p>
<p
dir="rtl"
class="pt-Normal">‏<span
lang="fa-IR"
class="pt-DefaultParagraphFont">‏مدیر محترم ‏</span><span
lang="fa-IR"
class="pt-DefaultParagraphFont">‏<<‏</span><span
class="pt-DefaultParagraphFont-000000">‎OFFICE.name‎</span><span
lang="fa-IR"
class="pt-DefaultParagraphFont">‏>>‏</span></p>
</div>
</body>
</html>
我的代码将上述 html 保存为 docx
using (WordprocessingDocument wordDoc =
WordprocessingDocument.Create(dest_doc_path, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
string htmlcontent = htmlTXT.Text;
using (Stream stream = mainPart.GetStream())
{
byte[] buf = (new UTF8Encoding()).GetBytes(htmlcontent);
stream.Write(buf, 0, buf.Length);
}
MessageBox.Show("DONE", "done", MessageBoxButton.OK);
}