java - 使用 Apache Tika 进行进度报告?

标签 java pdf zip filesize apache-tika

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

我进行了很多搜索,但在任何地方都找不到与此相关的任何内容。

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

编辑: 我正在使用来自 org.apache.tika 组的 apache tika tika-parserstika-server 的 java 库。并通过Java直接调用它们,代码如下。

AutoDetectParser parser = new AutoDetectParser();
ParseContext context = getParseContext(extractionPolicy, parser);
Metadata metadata = new Metadata();
parser.parse(inputStream, handler, metadata, context);
return metadata;

最佳答案

我的做法是错误的。为了报告进度,我没有估计输出字节和提取大小,而是计算了输入流上的读取字节数。

将输入字符串包装在 AWS SDK 或 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;
}

关于java - 使用 Apache Tika 进行进度报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58306621/

相关文章:

php - dompdf 加载失败

c# - iTextSharp - 是否可以为同一单元格和行设置不同的字体颜色?

javascript - 来自压缩文件的动态字体?

python - 无法使用 SSZipArchive 在 iOS9 中解压缩大型 zip 文件 (3.3GB)

arrays - 在 ruby​​ 中压缩不均匀数组

java - 没有onPageSelected的Android viewpager调用setcurrentitem

java - MapReduce字数统计,可在数据集中找到特定的字

java - itextpdf HTML 到包含西里尔字母的 PDF

java - 如果 netstat 另有说明,为什么我会得到 "java.net.BindException: Only one usage of each socket address"?

java - 通过使用 Google Apps 创建的网站向用户发送电子邮件需要哪个主机名?