【问题标题】:Generating a large number of small pdf files生成大量小pdf文件
【发布时间】:2020-07-14 10:21:30
【问题描述】:

目前,我需要生成大量的小pdf文件(大约18000个pdf文件)

每个生成大约需要 1.x - 2 秒,简单来说,假设它需要 2 秒

所以,18000 * 2 秒 = 36000 秒 = 10 小时 时间太长了

我生成pdf的方式是每次调用FOP java可执行文件生成一个pdf文件,提供xml、xsl(转成FOP xml格式)。

java 的工作方式是,每次我调用 FOP 时,它都会创建一个 java VM 进程(java)来运行它。 我在想这是否会浪费很多时间,因为创建和删除 java vm 进程 18,000 次以生成 18,000 个 pdf 文件。

我对Java VM进程不熟悉,但猜想资源可以被Java VM重用和管理,这样多次重新创建Java VM进程开销不大?

如果重新创建 Java VM 进程的开销很大,那么编写另一个 Java 程序来直接调用 FOP API 函数(而不是调用 FOP 可执行文件)并执行循环还有办法吗?

非常感谢任何建议。

【问题讨论】:

    标签: java pdf-generation apache-fop


    【解决方案1】:

    您可以将执行 FOP 转换的调用构建到任何 Java 程序中,并且运行一长串 XML/XSL/PDF 将减少每个 PDF 的 VM 启动,而且由于 JIT 编译,它会加速第 2 次及后续运行。一些示例代码位于Apache FOP website

    嵌入式方法的另一种可能性是将您的 FOP 转换服务器构建为RMI server,这样您的 FOP 服务就可以被多次调用,并且客户端应用程序具有您所有输入数据的逻辑,服务器执行 PDF 生成。

    【讨论】:

    • 非常感谢,我喜欢RMI的想法^_^
    猜你喜欢
    • 2020-12-15
    • 2011-03-17
    • 2013-05-22
    • 1970-01-01
    • 2014-06-05
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    相关资源
    最近更新 更多