将Word转换为HTML,然后在网页上呈现HTML

本文关键字:HTML 网页 Word 转换 然后 | 更新日期: 2023-09-27 18:27:59

我有一个艰难的项目正在筹备中,我不知道从哪里开始。我的老板希望能够用HTML显示Word文档,并且它看起来和Word文档一样。

在一次又一次地尝试让我在弹出窗口或灯箱中显示单词文档后,他坚持剥离单词的内容,将其转换为HTML,将其保存在数据库中,然后在网页上显示为HTML。

你们能不能给我一些好的弹药,看看展示word文档是否更好(不那么麻烦,存储空间更小,更安全等等)。

或者,如果将word文档转换为HTML对我来说很容易的话。

我目前拥有的技术有实体框架、LINQ、MVC、C#、Razor。

我们目前使用的是HTmlAgilityPack,但这去掉了所有的格式,不允许文档很好地显示。

将Word转换为HTML,然后在网页上呈现HTML

我们使用http://www.aspose.com/(我认为我们使用的是Aspose词)来执行类似的任务,而且效果很好。(涉及成本)

我建议将文档转换为HTML格式是最糟糕的。我们使用的一种解决方案是生成文档的Jpeg图像并显示它。

如果你需要能够执行查找和复制/粘贴文本等操作,我建议你将文档转换为.pdf,并在客户端安装的任何标准pdf查看器中内联显示。

如果您正在使用DOCX,您可以随时使用Microsoft的Open XML SDK,它非常易于使用和清理。样本取自MSDN

// This example shows the simplest conversion. No images are converted.
// A cascading style sheet is not used.
byte[] byteArray = File.ReadAllBytes("Test.docx");
using (MemoryStream memoryStream = new MemoryStream())
{
    memoryStream.Write(byteArray, 0, byteArray.Length);
    using (WordprocessingDocument doc =         WordprocessingDocument.Open(memoryStream, true))
    {
        HtmlConverterSettings settings = new HtmlConverterSettings()
        {
            PageTitle = "My Page Title"
        };
        XElement html = HtmlConverter.ConvertToHtml(doc, settings);
        // Note: the XHTML returned by ConvertToHtmlTransform contains objects of type
        // XEntity. PtOpenXmlUtil.cs defines the XEntity class. See
        // http://blogs.msdn.com/ericwhite/archive/2010/01/21/writing-entity-references-using-linq-to-xml.aspx
        // for detailed explanation.
        //
        // If you further transform the XML tree returned by ConvertToHtmlTransform, you
        // must do it correctly, or entities do not serialize properly.
        File.WriteAllText("Test.html", html.ToStringNewLineOnAttributes());
    }
}

您可能还想看看Word自动化服务http://blogs.office.com/b/microsoft-word/archive/2009/12/16/word-automation-services_3a00_-what-it-does.aspx

如果你的老板执意要用HTML显示它,那么将单词doc生成的HTML放入数据库是项目中最困难的部分。

你有几个工作流程可供选择,但它们是这样的:

  1. 用户保存到.Doc到.HTML>>用户通过您创建的应用程序将文档上传到数据库>>web应用程序从数据库中提取HTML显示在网页上

  2. 用户保存。文档>>用户通过您创建的应用程序上传文档>>应用程序动态转换文档,然后将HTML插入数据库>>web应用程序从数据库中提取HTML显示在网页上

  3. 用户保存并上传.Doc文件到数据库>>当网页请求时,web应用程序会提取文档并实时转换

  4. 等等等等

不幸的是,无论你选择哪种工作流程,你都会有点愚蠢@DaveBish建议使用第三方工具,我完全同意这是处理转换的最佳方式(如果你不要求用户将文档保存为HTML)。此外,请注意,当您转换为HTML时,Word文档中的图像可能会出现问题(它们不会保留在生成的文件中,这意味着在web开发方面会有更多/sarcasm/fun)。

如果你的老板不想为第三方转换器买单,你可以尝试用Office自己处理转换。Interop命名空间[插入关于这是一个可怕想法的废话等等]。。。在这种情况下,这个答案可能对你很有用。

您也可以通过Free Spire.Doc获得更多支持

我使用过GemBox.Document,它可以将Word文档中的图像嵌入HTML文件本身
例如,像这样:

MemoryStream docxStream = null; // Your DOCX file's path or stream.
DocxLoadOptions docxOptions = new DocxLoadOptions();
// Load DOCX file.
DocumentModel document = DocumentModel.Load(docxStream, docxOptions);
MemoryStream htmlStream = new MemoryStream();
HtmlSaveOptions htmlOptions = new HtmlSaveOptions();
htmlOptions.EmbedImages = true;
htmlOptions.HtmlType = HtmlType.HtmlInline;
// Save HTML file.
document.Save(htmlStream, htmlOptions);

此外,通过使用HtmlType.HtmlInline,我可以获得可以放置在现有页面上的HTML内容(如在查看器或所见即所得编辑器中)。查看其余的HtmlSaveOptions属性。

您可以在ASP.NET MVC中的Word和HTML之间的转换以及Word编辑器中找到更多这种方法的示例。

这是一篇旧文章,但我刚刚写了一个应用程序,可以将Word文档转换为可用的网页。该应用程序提供了OP中的一些要求。

该应用程序是WordWebNav(WWN)。它是免费的,开源的。

WWN提供了一个Word VBA程序,可将Word文档转换为Word HTML。

WWN还提供了一个Python程序,可以将Word HTML转换为可用的网页:

  • 它为Word HTML添加了缺失的功能,例如导航窗格
  • WWN还修复了Word HTML中的一些常见错误,例如,列表格式错误和段落过宽

Python程序使用CLI,并且可以从外部调用。