Aspose.Word将DOCX转换为HTML将失去MERGEFIELD,IF条件,页眉和页脚,表格单元格的宽度

问题描述

我正在尝试编写一个在线文档编辑器,其中TinyMCE 5作为编辑器,Aspose.Word v20.8作为转换器。

但是当我使用Aspose.Word将DOCX转换为HTML5时,它在TinyMCE中无法按预期呈现。 我现在可以知道,例如,HTML的标题,页脚,MergeFields,IF,TableStart:TableEnd sofar松动了。 我需要HTML包含所有数据,因为我需要再次将其转换回DOCX。

生成HTML5的代码为:

var doc = new Document({Stream_Of_DOCX});
var options = new HtmlSaveOptions();
options.SaveFormat = SaveFormat.Html;
options.Encoding = System.Text.Encoding.UTF8;
options.UpdateFields = true;
options.ExportRoundtripInformation = true;
options.ExportImagesAsBase64 = true;
options.ExportFontsAsBase64 = true;
options.ExportPageSetup = true;
options.ExportDocumentProperties = true;
options.ExportHeadersFootersMode = ExportHeadersFootersMode.PerSection;
options.HtmlVersion = HtmlVersion.Html5;

doc.Save($"{fileName}.html",options);

将HTML5转换回DOCX的代码是模型。HTML是TinyMCE文本区域:

var doc = new Document();
var builder = new DocumentBuilder(doc);
builder.InsertHtml(model.Html);
doc.Save($"{fileName}.docx");

有人可以帮助我使用一些代码示例吗? 或者,也许有一个更好的主意来完成任务。 主要思想是能够在线编辑DOCX文件,而不必下载并重新以某些Windows服务作为客户端重新上传。

解决方法

如果启用ExportRoundtripInformation选项,则Aspose.Word在保存到HTML时会保留页眉和页脚。在这种情况下,Aspose.Words使用特殊的CSS属性写入页眉和页脚内容,Aspose.Words可以理解这些内容:

<div style="-aw-headerfooter-type:header-primary; clear:both">
    <p style="margin-top:0pt; margin-bottom:0pt; line-height:normal">
        <span>header</span>
    </p>
</div>

此外,Aspose.Words保留一些字段(PAGE,NUMPAGES,NOTEREF,REF,AUTOR和TITLE)。例如,PAGE字段的输出如下:

<span style="-aw-field-start:true"></span><span style="-aw-field-code:' PAGE   \\* MERGEFORMAT '"></span><span style="-aw-field-separator:true"></span><span>1</span><span style="-aw-field-end:true"></span>

Aspose.Words会在读取HTML并将其作为字段加载到模型中时识别出这些内容。我也记录了WORDSNET-21037请求,以保留其他类型的字段。

我对TinyMCE并不熟悉,但是我怀疑Aspose.Words用于往返MS Word功能的自定义属性已删除,这就是为什么在您的案例中不保留Header和Footer的原因。

披露:我在Aspose.Words团队工作。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...