【问题标题】:How to convert office file to image如何将office文件转换为图像
【发布时间】:2017-03-06 06:07:14
【问题描述】:

我正在搜索前两天的内容,但没有找到任何东西。

我的要求是在我的 Web 应用程序 (C#.Net) 中创建一个文档查看器,我不想为此使用任何第三方工具。我可以将文件转换为图像或 PDF 或任何可以在网页上轻松呈现的常见格式。我也不能使用 Introp 对象。

我们将不胜感激任何帮助

【问题讨论】:

  • .NET 框架不支持此功能,这就是为什么最简单的方法是使用 3rd 方工具,例如 GemBox.Document。如果您不想这样做,那么您将不得不自己创建它,我必须说这确实是非常复杂且耗时的任务。简而言之,您可以使用“System.IO.Packaging”读取您的文档(DOCX格式),您可以使用“System.Drawing”创建图像,但您需要自己实现完整的分页和渲染引擎。
  • @MarioZ:感谢您的解释,我知道这很复杂。你也给了我简短的参考开始

标签: c# asp.net byte filestream docx


【解决方案1】:

您在其中一个 cmets 中提到您想自己编写所有代码,但不知道从哪里开始。以下是我将如何去做...

首先,您需要熟悉 Microsoft Office 格式规范。你可以找到here(有技术规范的链接)。 Office 文档实际上是一个 .zip 文件,其中包含一个 XML 文件以及表示附件的任何二进制数据。只需将 .docx 文件重命名为 .zip,您就可以打开它并查看其中的 XML 和任何其他支持文档(xlsx 等也是如此......)。

然后您需要非常熟悉 PDF 或 HTML,因为您现在的工作是将各种 Office 文档结构转换为 PDF 或 HTML 结构,确保尊重页面布局、边距、顺序等。 ..

正如其他人所说,这是一项艰巨的任务,这就是当今存在第三方工具的原因。此外,每个第三方工具集都有其局限性,因为这在所有情况下都很难“正确”,并且会存在适用于一个文档而不是另一个文档的边缘情况(因为他们可能没有使用 Microsoft Word 来保存 . docx,也许他们使用 OpenOffice 和 OpenOffice 对标准的解释略有不同...)

【讨论】:

    【解决方案2】:

    如果您无法在解决方案中使用 COM/Interop 技术,您可以查看专门的第 3 方选项。我看到您不想使用它们,但是,.NET Framework 中没有现有的内置解决方案。在类似的线程中查看my answer,该线程描述了如何使用 3rd 方库(例如 DevExpress,因为我有使用它的经验)来完成完全相同的任务。此外,请查看Documents 演示,您可以在其中了解如何从不同类型的 MS Office 文档创建图像/缩略图。

    【讨论】:

      【解决方案3】:

      我相信您需要的是文档的中间表示,可以将其转换为图像以供查看者显示。

      让我试着用下图来解释:

      【讨论】:

      • 是的,您非常了解我的需求,您在准备流程文档方面做得很好。但主要问题是我不知道如何在没有任何第三方工具的情况下将文档转换为图像,我想自己编写第三方工具拥有的所有代码..但不知道如何开始
      • @AnubrijChandra,您是否考虑过寻找开源库并通过阅读代码了解它是如何完成这项工作的?只是一个建议,希望对您有所帮助。
      • 自己做所有事情可能会花费很多时间,甚至可能最终重新发明轮子。但这由您决定。
      • 抱歉,我在完成评论之前按了返回键。为了创建图像,您必须依赖 System.Drawing 命名空间中可用的 Graphics 对象。例如:Image img = new Bitmap(100, 200); Graphics g = Graphics.FromImage(img); g.DrawString("Sample Text", new Font("Consolas", 10), Brushes.Black, 10, 10 ); img.Save("out", ImageFormat.Jpeg); // Instead of specifying the file name, you can use the response stream and write the image
      【解决方案4】:

      您可以使用 smallpdf 或 OfficeToPDF 等工具来执行此操作。只需将它们集成到您的应用程序中即可。

      小PDF(https://smallpdf.com/library-detail)

      officetopdf (https://officetopdf.codeplex.com/)

      【讨论】:

        猜你喜欢
        • 2023-03-30
        • 1970-01-01
        • 2012-06-29
        • 2014-07-17
        • 1970-01-01
        • 2023-03-23
        • 2020-06-09
        • 2022-11-10
        • 2020-12-02
        相关资源
        最近更新 更多