C# 将Word转换为HTML,然后在网页上呈现HTML
我有一个艰难的项目在我的管道中,我不知道从哪里开始。我的老板希望能够在HTML中显示Word文档,并且它看起来与Word文档相同 在一次又一次地尝试让我在弹出窗口或灯箱中显示word文档后,他一直在剥离word的内容,将其转换为HTML,将其保存在数据库中,然后在网页上显示为HTML 你们能不能给我一些好的弹药,看看展示word文档是否更好(不那么麻烦,更少的存储空间,更安全等等) 或者,如果很容易将word文档转换为HTML,我也可以这样做 我目前拥有的技术有实体框架、LINQ、MVC、C#和Razor 我们目前使用的是HTmlAgilityPack,但它去掉了所有格式,不允许文档显示得很好。我们使用(我认为我们使用的是Aspose words)来执行类似的任务,它工作得很好。(涉及成本) 我建议,转换为HTML会导致文档格式最差。 我们使用的一种解决方案是生成文档的Jpeg图像并显示它C# 将Word转换为HTML,然后在网页上呈现HTML,c#,ms-word,C#,Ms Word,我有一个艰难的项目在我的管道中,我不知道从哪里开始。我的老板希望能够在HTML中显示Word文档,并且它看起来与Word文档相同 在一次又一次地尝试让我在弹出窗口或灯箱中显示word文档后,他一直在剥离word的内容,将其转换为HTML,将其保存在数据库中,然后在网页上显示为HTML 你们能不能给我一些好的弹药,看看展示word文档是否更好(不那么麻烦,更少的存储空间,更安全等等) 或者,如果很容易将word文档转换为HTML,我也可以这样做 我目前拥有的技术有实体框架、LINQ、MVC、C#和
如果您需要能够执行查找和复制/粘贴文本等操作,我建议您将文档转换为.pdf格式,并在客户机安装的标准pdf查看器中以内联方式显示它。如果您的老板一心想以HTML格式显示它,然后,将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);
如果您的老板不想为第三方转换器买单,您可以尝试使用Office自己处理转换。Interop命名空间[插入关于这是一个多么糟糕的想法的废话]…在这种情况下,可能对您非常有用。如果您使用的是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 automation services您也可以通过它获得更多支持我使用过,它可以将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编辑器中)。查看其余的属性
您可以在和上找到更多这种方法的示例。转换为PDF是最佳选择吗?还有免费的Aspose.Words Express,它能做我需要做的事情吗?或者我需要购买许可证吗?而且每个word文档都有图像,Aspose是否允许我抓取这些图像并将其放入图像文件夹?这取决于-如果输出为pdf格式-它将嵌入图像-图像是处理HTML解决方案的一个非常棘手的部分。我将尝试说服他再次使用pdf。我们看看会怎么样。唉,不,继续说服老板。我会调查的。再次感谢。您可以使用:任务计划、MS WORD宏(用于将.doc保存到.html)和简单批处理文件(用于将文件复制到IIS服务器)这些WORD文档是任意的还是都遵循特定的模式?我看到你在另一条评论中提到所有的文档都有图像。我只是好奇他们是否都遵循特定的模式或模板。@randcd没有遵循任何模式。这是一系列如何编辑由10-30个不同的人创建的文档。在浏览器中编辑docx(或它的某些格式副本,如html)是一项要求吗?@JasonPlutext编辑不是一项要求。他们希望只向特定的人显示它的一部分,并且觉得通过HTML更容易实现这一点,所以只需要在HTML中显示它。这允许我从文件中抓取图像吗?我不能使用任何不在word文档中显示图像的选项。当然,请检查此处的完整示例。您可以查看.mht格式以将图像和所有内容存储在单个文件中。或者干脆拉上拉链。