2

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

我基本上是在尝试创建超过 600 页的文档。但是我使用的工具处理这个非常慢。

我第一次尝试使用Novacode的 DocX。创建此包含 600 多页的文档最多需要 3 分钟。我了解到函数“InsertDocument”可能存在问题,因此我试图找到不同的解决方案。

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

我可以使用图像的 URL,但是如果 Internet 连接断开,图像将不会显示。

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

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

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

4

2 回答 2

1

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

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

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

如果可能的话,您应该更喜欢编写良好的 HTML 内容,即“打印机友好”、没有太多嵌套级别、优化图像、具有单个 CSS 文件等。此外,如果您提供 URL 作为输入path 那么我认为最好先嵌入 base64 图像然后链接,以避免发出额外的 Web 请求。

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

于 2019-12-31T06:14:35.690 回答
0

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

如果在某个时候你决定考虑商业图书馆,也许你可以试试 Amyuni PDF Creator .Net。Amyuni PDF Creator .Net 提供“逐页”模式,在处理超长 PDF 文档时可以节省资源。这个想法是在每个页面生成后立即将其保存到输出文件中,也许在内存中保留几页以防需要修改。

查看这些链接以获取更多详细信息:

通常的免责声明适用

于 2012-06-06T14:22:37.293 回答