10

我的管道中有一个艰巨的项目,我不知道从哪里开始。我的老板希望能够以 HTML 格式显示 Word 文档,并且它看起来与 Word 文档相同。

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

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

或者,如果我可以很容易地将 word 文档转换为 HTML 方式来做到这一点。

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

我们目前使用 HTmlAgilityPack,但这会去除所有格式,并且无法很好地显示文档。

4

6 回答 6

7

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

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

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

于 2013-08-15T16:13:12.273 回答
6

如果您使用 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

于 2013-08-15T16:39:48.417 回答
1

如果您的老板一心想用 HTML 显示它,那么将由 word doc 生成的 HTML 导入您的数据库是项目中最难的部分。

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

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

  2. 用户保存 .Doc >> 用户通过您创建的应用上传文档 >> 应用即时转换文档,然后将 HTML 插入数据库 >> Web 应用从数据库中提取 HTML 以显示在网页上

  3. 用户将 .Doc 文件保存并上传到数据库 >> Web 应用程序拉取文档并在网页请求时动态转换它

  4. 等等等等

不幸的是,无论您选择哪种工作流程,您都会遇到一些愚蠢的事情。@DaveBish 建议使用 3rd 方工具,我完全同意这是处理转换的最佳方式(如果您不要求用户将他们的文档保存为 HTML)。另外,请注意,当您转换为 HTML 时,Word 文档中的图像可能会出现问题(它们不会保留在生成的文件中,这意味着 /sarcasm/ 在 Web 开发方面为您带来更多乐趣)。

如果您的老板不想为第 3 方转换器买单,您可以尝试使用 Office.Interop 命名空间自行处理转换在这种情况下,这个答案可能对你很有用。

于 2013-08-15T16:25:48.833 回答
0

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

于 2015-06-28T18:23:05.930 回答
0

我使用过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 内容(例如在查看器或 WYSIWYG 编辑器中)。查看其余的HtmlSaveOptions属性。

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

于 2020-03-31T05:34:30.613 回答
0

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

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

WWN 提供了一个 Word VBA 程序,可以将 Word-docs 转换为 Word-HTML。

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

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

Python 程序使用 CLI,可以在外部调用。

于 2021-08-03T20:56:38.857 回答