You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

循环中使用PDFBox加载多份PDF时始终获取第一份内容的问题求助

PDF多文件加载异常的解决方向

针对你遇到的问题——遍历MultipartFile列表加载PDF时,文档信息、页数始终返回第一份文件的结果,以下是具体排查和解决建议:

  • 检查MultipartFile列表的构造正确性
    输出每个MultipartFile实例的hashCode(),确认列表中的对象不是重复引用。如果存在重复添加同一个实例的情况,即使文件名显示不同,实际读取的还是同一文件内容。

  • 改用输入流方式加载PDF
    替换PDDocument.load(multipartFile.getBytes())为PDDocument.load(multipartFile.getInputStream()),直接通过输入流加载文件,避免字节数组可能带来的缓存或复用问题。修改后代码:

    try (PDDocument document = PDDocument.load(multipartFile.getInputStream())) {
        System.out.println(multipartFile.getBytes().length);
        System.out.println(multipartFile.getOriginalFilename());
        System.out.println(document.hashCode());
        System.out.println(document.getDocumentInformation().getTitle());
        System.out.println(document.getNumberOfPages());
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    
  • 验证文件字节内容的唯一性
    对每次迭代中multipartFile.getBytes()生成MD5哈希值并打印,确认不同MultipartFile对应的字节内容确实存在差异,排除字节数组被意外覆盖的可能。

  • 排查PDFBox的资源污染
    虽然try-with-resources会自动关闭PDDocument,但可以尝试在代码块末尾手动调用document.close()做双重保障,或者检查是否存在静态的PDFBox配置(如全局的MemoryUsageSetting)导致上下文复用。

内容的提问来源于stack exchange,提问作者pellumb baboci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:02:48