我的管道中有一个艰难的项目,我不知道从哪里开始。我的老板希望能够以HTML格式显示Word文档,它看起来与word文档相同。
经过一段时间尝试让我在弹出窗口或灯箱中显示word文档后,他不得不剥离将其转换为HTML的单词内容,将其保存在数据库中,然后将其显示为HTML在网页上。
你们可以给我一些好的弹药吗?如果显示word文档更好(更少繁琐,更少存储空间更安全等)。
或者,如果将单词文档转换为HTML方式非常容易,我可以这样做。
我目前拥有的技术是实体框架,LINQ,MVC,C#,Razor。
我们目前使用HTmlAgilityPack,但这会删除所有格式,并且不允许文档显示得很好。
答案 0 :(得分:7)
我们使用http://www.aspose.com/(我认为我们使用的是Aspose词)来执行类似的任务,并且它运行得很好。 (涉及成本)
我建议转换为HTML会给文档带来最糟糕的再现。 我们使用的一个解决方案是生成文档的Jpeg图像并显示该文档。
如果您需要能够执行查找和复制/粘贴文本等操作 - 我建议将文档转换为.pdf,并在客户端计算机安装的任何标准pdf查看器中内联显示。
答案 1 :(得分: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
答案 2 :(得分:1)
如果你的老板在HTML中显示它,那么将word doc生成的HTML放到你的数据库中是项目中最难的部分。
您有几个工作流程可供选择,但它们是这样的:
用户将.Doc保存为.HTML>>用户通过您创建的应用程序将doc上传到数据库>> Web应用程序从数据库中提取HTML以显示在网页上
用户保存.Doc>>用户通过您创建的应用上传文档>>该应用程序即时转换文档,然后将HTML插入数据库>> Web应用程序从数据库中提取HTML以显示在网页上
用户保存并上传.Doc文件到数据库>> Web应用程序提取文档并在网页请求时即时转换它
等等
不幸的是,无论您选择哪种工作流程,都会陷入困境。 @DaveBish建议使用第三方工具,我完全同意这是处理转换的最佳方式(如果您不要求用户将其文档保存为HTML)。另外,请注意,当您转换为HTML时,Word文档中的图像可能会出现问题(它们不会保留在生成的文件中,这意味着您在Web开发方面有更多/讽刺/乐趣)。
如果您的老板不想为第三方转换器买单,您可以尝试使用Office.Interop命名空间自行处理转换[插入关于如何这是一个可怕的想法等等等等)。 ..在这种情况下,this answer可能对你有很大用处。
答案 3 :(得分:0)
您还可以通过Free Spire.Doc获取更多支持
答案 4 :(得分: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
属性。
您可以在Convert between Word and HTML和Word Editor in ASP.NET MVC上找到这种方法的更多示例。
答案 5 :(得分:0)
这是一篇旧帖子,但我刚刚编写了一个应用程序,可以将 Word 文档转换为可用的网页。该应用在 OP 中提供了一些要求。
应用程序是 WordWebNav (WWN)。它是免费和开源的。
WWN 提供了一个 Word VBA 程序,可以将 Word-docs 转换为 Word-HTML。
WWN 还提供了一个 Python 程序,可以将 Word-HTML 转换为可用的网页:
Python 程序使用 CLI,可以从外部调用。