OpenXML Powertools HtmlConverter在使用OpenXML SDK创建文档时失败

3

我使用OpenXML SDK 2.5编写了一个Word文档,当我在MS Office中预览时,该文档具有预期的外观和格式。

现在我需要将此文档转换为HTML文档。我了解到OpenXML Powertools中的HtmlConverter,并尝试使用它,但是在使用OpenXML Power Tools进行Docx到Html转换时,出现了NullReferenceException,指出Part为空值参数。

为了调查问题,我在MS Word中创建了一个内容完全相同的新Word文档;这些文件成功地转换为Html。因此,问题出在我用C#创建的文档上。我发现两个文档的文件大小不同(用MS Word创建的文档更大,用OpenXML SDK创建的文档似乎更小);我将两个文件重命名为ZIP以检查其内容,下面分别显示了使用MS Office创建的文档的document.xml标记在顶部,以及使用OpenXML SDK创建的文档标记在底部:

enter image description here

我怀疑HtmlConverter失败是由于这些标记变化引起的。我的假设是否正确?如果是,如何在文档中添加这些额外的标记。以下是我用于创建Word文件的代码。

using (WordprocessingDocument wordDocument = WordprocessingDocument.Create(@"D:\15052018.docx", WordprocessingDocumentType.Document)) 
{
    MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();
    mainPart.Document = new Document();
    Body body = mainPart.Document.AppendChild(new Body());
    Paragraph para = body.AppendChild(new Paragraph());
    Run run = para.AppendChild(new Run());
    RunProperties rpr = new RunProperties(new RunFonts() { Ascii = "Times New Roman" });
    run.PrependChild<RunProperties>(rpr);
    run.AppendChild(new Text("Welcome"));
    wordDocument.Save();
    wordDocument.Close();
}

对于HTML转换,

using (WordprocessingDocument doc = WordprocessingDocument.Open(@"D:\15052018.docx", true))
{
    HtmlConverterSettings settings = new HtmlConverterSettings() { PageTitle = "My Page Title" };
    var html = HtmlConverter.ConvertToHtml(wDoc: doc, htmlConverterSettings: settings);
    File.WriteAllText(@"D:\Test1.html", html.ToStringNewLineOnAttributes());
}
1个回答

2
为了查看文件的差异,我建议您将使用SDK创建的文件与使用Word创建的文件进行比较。您可以使用Open XML生产力工具来完成此操作。安装该工具,请按照以下步骤进行:
  1. 前往下载链接
  2. 点击红色下载按钮。
  3. 在下一个屏幕上,只需勾选OpenXMLSDKToolV25.msi旁边的框。
  4. 然后点击下一步,下载将自动开始在您的浏览器中。
安装完成后,启动该工具。
要比较两个OpenXml文件,请单击中间的“比较文件”按钮,差异将显示出来。

enter image description here

一旦您的文件处于比较模式下打开,选择右侧部分选择器区域中的主文档部分,然后单击“查看部分差异”按钮。

enter image description here

这将显示不同的XML内容。如果您点击“查看包代码”,它将生成C#代码,以便在需要时可以填补两个文件之间的差异。
专业提示-要仅生成构建由Word创建的文件所需的代码,请使用“打开文件”按钮在Productivity Tool中以非比较模式打开它。然后点击“反射代码”,以生成重建与您的Word生成文件完全相同的C#代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接