较新的 PDFBox 版本加载 PDF 速度较慢
Newer PDFBox versions loads PDF slowly
所以我正在努力将使用 PDFBox 1.8 的遗留框架迁移到 PDFBox 2.x
但是,我观察到使用新版本加载 pdf 所需的时间激增,几乎翻了一番(旧版本为 100 毫秒,新版本为 200 毫秒)。现在我们 运行 的应用程序对延迟非常敏感。
我尝试寻找延迟增加的问题,但没有成功。只是想得到社区的帮助,看看是否有任何可能的方法来解决这个问题。唯一涉及的代码行是 -
PDDocument pdfDoc = PDDocument.load(new File(pdfFilePath));
我已经尝试过的是-
- 使用
memoryUsageSettings
并将其设置为无限制,使用临时文件,以及主内存和临时文件的组合。
- 比较 2.x 包括最新版本在内的多个版本的统计数据,似乎都比旧版本更高。
提前致谢!!
打开第一个文档时会进行初始化(字体、颜色空间、一些 class 加载),另请参阅 PDFBOX-3988 中的讨论。使用此代码(取自 PDFDebugger 源代码)以便它们在第一次加载之前完成。
// trigger premature initializations for more accurate rendering benchmarks
// See discussion in PDFBOX-3988
if (PDType1Font.COURIER.isStandard14())
{
// Yes this is always true
PDDeviceCMYK.INSTANCE.toRGB(new float[] { 0, 0, 0, 0} );
PDDeviceRGB.INSTANCE.toRGB(new float[] { 0, 0, 0 } );
IIORegistry.getDefaultInstance();
FilterFactory.INSTANCE.getFilter(COSName.FLATE_DECODE);
}
所以我正在努力将使用 PDFBox 1.8 的遗留框架迁移到 PDFBox 2.x 但是,我观察到使用新版本加载 pdf 所需的时间激增,几乎翻了一番(旧版本为 100 毫秒,新版本为 200 毫秒)。现在我们 运行 的应用程序对延迟非常敏感。
我尝试寻找延迟增加的问题,但没有成功。只是想得到社区的帮助,看看是否有任何可能的方法来解决这个问题。唯一涉及的代码行是 -
PDDocument pdfDoc = PDDocument.load(new File(pdfFilePath));
我已经尝试过的是-
- 使用
memoryUsageSettings
并将其设置为无限制,使用临时文件,以及主内存和临时文件的组合。 - 比较 2.x 包括最新版本在内的多个版本的统计数据,似乎都比旧版本更高。
提前致谢!!
打开第一个文档时会进行初始化(字体、颜色空间、一些 class 加载),另请参阅 PDFBOX-3988 中的讨论。使用此代码(取自 PDFDebugger 源代码)以便它们在第一次加载之前完成。
// trigger premature initializations for more accurate rendering benchmarks
// See discussion in PDFBOX-3988
if (PDType1Font.COURIER.isStandard14())
{
// Yes this is always true
PDDeviceCMYK.INSTANCE.toRGB(new float[] { 0, 0, 0, 0} );
PDDeviceRGB.INSTANCE.toRGB(new float[] { 0, 0, 0 } );
IIORegistry.getDefaultInstance();
FilterFactory.INSTANCE.getFilter(COSName.FLATE_DECODE);
}