首页 > 解决方案 > pdfbox - 性能调优

问题描述

如何增强下面的代码以减少时间,下面的代码在加载 PDF 后不应用任何业务逻辑需要 384 毫秒。

有什么建议么 ?

MultipartFile file= ...;
byte[] pdfByte = file.getBytes();
PDDocument pdfDoc = PDDocument.load(new ByteArrayInputStream(pdfByte));
List<PDSignature> signatures = pdfDoc.getSignatureDictionaries();
pdfDoc.close();

标签: javaspringpdfbox

解决方案


从评论中可以看出,真正的问题是如何加快获取签名字节的速度。使用此代码防止再次读取文件:

COSString contents = (COSString) signature.getCOSObject().getDictionaryObject(COSName.CONTENTS);
byte [] signatureBytes = contents.getBytes();

在 PDFBox 2.0.22 中将有一个PDSignature.getContents()不带参数的新方法,它不会第二次读取 PDF。

要加快速度的另一件事是像这样加载 PDF:

PDDocument pdfDoc = PDDocument.load(pdfByte);

因为从 InputStream 加载会创建另一个缓冲副本。


推荐阅读