使用 Apache tika 删除 PDFont 缓存

2024-03-21

我试图仅从许多不同的代码(rtf doc pdf)中提取文本。我很自然地转向 Apache Tika,因为它可以自动检测文档并相应地提取文本。我只对文本感兴趣,对格式等不感兴趣。

我的应用程序最终出现了严重的内存泄漏,经过调查,这是来自 PDFBox 依赖项的 PDFFont 类的缓存。我对从 pdf 中缓存 Fontmetrics 和其他字体格式问题不感兴趣,因为我只想提取文本。

我正在使用蒂卡1.12。有谁知道如何解决这个缓存问题。这就是我使用自动检测的方式:

        AutoDetectParser parser = new AutoDetectParser();

        BodyContentHandler handler = new BodyContentHandler(-1);
        Metadata metadata = new Metadata();
        FileInputStream inputstream = new FileInputStream(new File(child.getPath()));
        ParseContext context = new ParseContext();              
        parser.parse(inputstream, handler, metadata, context);
        String s=null;
        s =handler.toString();
        handler=null;
        context=null;
        inputstream.close();
        PDFont.clearResources();

所以我捏造了一个解决方法,然后打电话给System.gc();每次文件处理完毕时,这都会很不错,但并不能真正回答问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Apache tika 删除 PDFont 缓存 的相关文章

随机推荐