使用 Apache Tika 进行进度报告?
Progress reporting with Apache Tika?
我正在使用带有 Java 的 Apache Tika 从 PDF 和 Zip 文件中提取文本。现在在处理大文件时,我想向我的应用程序添加进度报告。为此,我需要估计提取大小来计算完成的百分比(通过将其与写入输出的字节数相匹配)。
我搜索了很多,但在任何地方都找不到与此相关的任何内容。
apache tika 是否提供任何类型的进度报告?
有什么解决方法吗?
编辑:
我正在使用来自组 org.apache.tika
的 apache tika tika-parsers
、tika-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
class中的输入字符串包装起来,并将读取的字节与总内容字节进行匹配以获得百分比。
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 从 PDF 和 Zip 文件中提取文本。现在在处理大文件时,我想向我的应用程序添加进度报告。为此,我需要估计提取大小来计算完成的百分比(通过将其与写入输出的字节数相匹配)。
我搜索了很多,但在任何地方都找不到与此相关的任何内容。
apache tika 是否提供任何类型的进度报告? 有什么解决方法吗?
编辑:
我正在使用来自组 org.apache.tika
的 apache tika tika-parsers
、tika-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
class中的输入字符串包装起来,并将读取的字节与总内容字节进行匹配以获得百分比。
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;
}