Apache Tika的进度报告?

问题描述 投票:0回答:1

我正在将Apache Tika与Java结合使用,以从PDF和Zip文件中提取文本。现在,在处理大文件时,我想向我的应用程序添加进度报告。为此,我需要估计提取大小以计算完成的百分比(通过将其与写入输出的字节数进行匹配)。

我搜索了很多东西,在任何地方都找不到与此相关的任何东西。

apache tika是否提供任何类型的进度报告?有什么解决方法吗?

编辑:我正在使用tika-parsers组中的Apache Tika tika-serverorg.apache.tika的Java库。然后使用以下代码通过Java直接调用它们。

AutoDetectParser parser = new AutoDetectParser();
ParseContext context = getParseContext(extractionPolicy, parser);
Metadata metadata = new Metadata();
parser.parse(inputStream, handler, metadata, context);
return metadata;
java pdf zip filesize apache-tika
1个回答
0
投票

我的想法是错误的。对于进度报告,而不是估计输出字节和提取大小,我对输入流中的读取字节进行了计数。

将输入字符串包装到AWS开发工具包或Apache Tika提供的CountingInputStream类中,并将读取的字节与总内容字节进行匹配以获取百分比。

CountingInputStream inputStream;
Long totalContentLength;

private int getProgressPercentage(){
    Long processedBytes = this.inputStream.getByteCount();
    if (0 < totalContentLength && processedBytes <= totalContentLength) {
        int percent = (int) ((processedBytes * 100.0 / totalContentLength));
        LOGGER.info("Processed bytes: {}, Total bytes: {}, Progress: {}%", processedBytes, totalContentLength, percent);
        return percent;
    }
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.