使用 Apache tika 删除 PDFont 缓存

Remove PDFont caching with Apache tika

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

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

我正在使用 tika 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();,这虽然有效,但并没有真正回答问题。