使用Apache tika删除PDFont缓存

时间:2016-10-07 06:28:26

标签: pdfbox apache-tika

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

我的应用程序最终导致大量内存泄漏,并且在调查它时,这来自PDFBox依赖项中的PDFFont类缓存。我没有兴趣从pdf缓存Fontmetrics和其他字体格式问题,因为我只想提取文本。

我正在使用tika 1.12。有谁知道如何解决这个问题。这就是我使用Autodetect的方式:

        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();

1 个答案:

答案 0 :(得分:0)

所以我捏造了一种解决方法,每次文件处理完毕后都会调用System.gc();,这样可以很好地回答这个问题。但