java - pdfbox - 性能调优
问题描述
如何增强下面的代码以减少时间,下面的代码在加载 PDF 后不应用任何业务逻辑需要 384 毫秒。
有什么建议么 ?
MultipartFile file= ...;
byte[] pdfByte = file.getBytes();
PDDocument pdfDoc = PDDocument.load(new ByteArrayInputStream(pdfByte));
List<PDSignature> signatures = pdfDoc.getSignatureDictionaries();
pdfDoc.close();
解决方案
从评论中可以看出,真正的问题是如何加快获取签名字节的速度。使用此代码防止再次读取文件:
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 加载会创建另一个缓冲副本。
推荐阅读
- javascript - 递归调用java script animate函数,每次循环后时间处理
- deep-linking - Google Home App中帐户链接的最佳用户体验是什么
- coq - Coq 证明 p
=q
- postgresql - 我可以从 Cloud Run 连接到 Compute Engine 中托管的 Postgres 实例吗?(不是云 SQL)
- java - 在java中创建二维字符数组
- javascript - 相邻兄弟选择器 element.querySelector("+element") 无效
- python - 查找分组列的唯一值?
- excel - 需要帮助简化或改进 excel 中的加权分布公式(数学/excel/编程菜鸟)
- c# - 在 C# Winform 中通过动作创建后调用对象
- html - 如何使文本在按钮中间居中?