大型HTML文档转换为PDF

3
我正在使用一个asp.net应用程序,该应用程序从HTML生成大型PDF文档。与典型用法相比,内容可能更为复杂(详细的网格类型列表、CSS样式,超过40页)。我们尝试过的所有库都无法满足要求。通常情况下,一个40页的文档在一台强大的多核机器上渲染需要超过一分钟的时间。
我们能够将生成与Web应用程序分离,并在某些情况下预生成文档。但是,内容更改的频率要求更快的解决方案。
那么,有没有人有使用可以在几秒钟内输出内容繁重的40页文档的PDF生成组件的经验?还是我们的期望值不切实际?
注:我不想在这里公开表现不佳的组件,因为我们正在寻求供应商的支持以进行改进。我已经查看了StackOverflow上发布的先前问题,没有一个问题涉及到这种类型或大小的文档。

1
很有趣的是,当你将HTML(从浏览器)打印到PDF生成器(如PDFCreator)时,你会得到什么样的性能。顺便说一句,因为你没有提供任何关于你的供应商的信息,这使得提供答案更加困难,而且这个帖子对其他可能处于类似位置的人来说也就更加无用了。 - jdigital
1
明天任务清单上的一项任务是按照您的建议获取一些通过桌面工具打印到PDF的指标。关于讨论供应商,我不愿意在我们牢固地确立了x在我们特定情况下表现更好之前这样做。如果事实上所有供应商同样无能,那么暗示某个特定供应商在我们的情况下表现不佳是不公平的。我并没有排除(如我原来的问题中所提到的)我们的期望实际上是不切实际的可能性。当然,我们会更新问题或添加答案,以反映我们发现的任何有用结果。 - Mark Storey-Smith
1个回答

2
一个选择可能是不将html转换为PDF并采用另一种方法。我们使用ActiveReports报告工具生成PDF,使用子报告处理多数据集报告时非常强大,并且完全与Visual Studio集成。
这意味着您需要重建报告以产生在屏幕上看到的相同数据。有时这不是什么坏事,因为您可以针对打印样式化报告。
可以通过后端服务和/或电子邮件生成PDF,或即时生成以供浏览器使用。

我相信还有其他报告工具可供选择,值得检查一下,甚至 SQL Server Reporting Services 也可能有所帮助,因为它也可以输出 PDF。 - Mark Redman
谢谢您的建议。您尝试过这两个选项中的任何一个,并输出我们需要的大小,即样式化、文本密集型、嵌套表格/网格超过40页吗? - Mark Storey-Smith
1
分带报告工具是为表格数据而建立的,子报告只是报告中的报告。如果有一个或两个数据源,40多页不是问题,像任何数据检索一样,需要优化。可用分组、页码、页面大小、报告/组/页/页眉/页脚等规则。您可以在报告上添加图像和各种其他组件,并进行样式设置。它绝对比HTML转PDF更好。 - Mark Redman
我们已经对这个过程进行了分析,并确定最终的转换是唯一的“无法解决”的问题。我所引用的数字是针对最终调用PDF组件的,不包括数据检索和HTML生成。感谢您的建议和提到子报告...让我意识到在某些情况下,较大的PDF是由多个较小的PDF组合而成。这使我们有了预先生成子报告并合并PDF以创建更大的复合文档的选择。 - Mark Storey-Smith
是的,生成单独的报告并合并它们也是构建复杂报告的好方法(报告工具不会没有自己的缺陷),有许多库和工具可以进行合并等操作。像itextSharp这样的库非常适合我所谓的单页组合,即将文本行和图像放置在新的或现有的PDF页面上,但对于表格数据或跨多个页面运行的数据效果不太好。 - Mark Redman
我们会重新审视这个问题以充实我们的发现,但基本上你的答案是正确的;我们需要转换为本地PDF生成,而不是转换。例如,SRS每秒可以产生约50页,而我们使用转换只能得到1页/秒。 - Mark Storey-Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接