在 C# 中生成数百页的 Word/PDF 太慢了

本文关键字:Word 百页 PDF | 更新日期: 2023-09-27 18:36:23

我在 C# 中生成文档时遇到速度问题。

我基本上是在尝试创建具有600 +页的文档。 但是我使用的工具处理这个问题的速度非常慢。

我第一次尝试使用Novacode的DocX。 创建此文档包含 600+ 页需要 3 分钟以上。 我了解到"插入文档"功能可能存在问题,因此我试图找到不同的解决方案。

我开始考虑将HTML文档打开到word中。 虽然这是一个快速的解决方案,但图像不会嵌入到文档中。HTML 语法 (src="data:image/png;base64,xxxx") 在 MS Word 中不受支持。

我可以使用图像的 URL,但如果互联网连接中断,图像将不会显示。

然后我开始研究一个HTML>PDF解决方案。 iTextSharp比DocX解决方案快一点,但仍然需要1-2分钟来生成这个文档。

我只是没有想法。 我不确定商业产品会更好,我不想花那么多钱,只是有同样的速度问题。

有没有人有过用 C# 创建 600+ 页的 Word/PDF 文档的经验,这相当快(1-5 秒)。

在 C# 中生成数百页的 Word/PDF 太慢了

如果您尝试从 Web 服务器执行此操作,则应注意此过程的资源消耗,因为例如,您可能很容易耗尽内存。

如果你在某个时候决定考虑商业库,也许你可以试试Amyuni PDF Creator .Net。Amyuni PDF Creator .Net提供"逐页"模式,可在处理特别长的PDF文档时节省资源。这个想法是在生成输出文件后立即将每个页面保存到输出文件中,也许在内存中保留几页以备

不时之需。

有关更多详细信息,请查看以下链接:

  • 萨特保存方法
  • 结束保存方法
  • 处理大型 PDF 文件

通常免责声明适用

您应该能够在该时间范围内创建一个格式丰富的 DOCX 文件,其中包含 600+ 页,但对于 PDF 文件,我不确定......这可能取决于您的文档内容。

无论如何,我能够在几秒钟(0-4秒)内使用GemBox.Document创建一个相当大的DOCX文件,也可以创建PDF文件,但它确实比DOCX输出花费更多时间。

您也可以非常快速地将HTML转换为DOCX或HTML转换为PDF,但这可能取决于HTML内容本身。

如果可能的话,你应该更喜欢写得很好的HTML内容,这些内容是"打印机友好"的,没有太多的嵌套级别,有优化的图像,有单一的CSS文件,等等。此外,如果您提供 URL 作为输入路径,那么我认为最好嵌入 base64 图像而不是链接,以避免发出额外的 Web 请求。

最后,我认为平面OPC XML与DOCX没有太大区别。基本上它们都生成相同的内容,只是 DOCX 文件被额外压缩,这是一个可以忽略不计的性能损失。