apache-tika - 在任何文档中使用 apache Tika 检测图像?
问题描述
我正在使用Apache Tika提取上传文件的内容,我不想解析嵌入图像的文件。截至目前,我正在使用 ToXMLContentHandler 并尝试查找<img>
标签。
val parser = new AutoDetectParser()
val handler = new ToXMLContentHandler()
val metaData = new Metadata
parser.parse(stream, handler, metaData, getParseContext)
val xmlFileContent = XML.loadString(handler.toString)
val isDocHasImg = (xmlFileContent \\ "body" \\ "img").toList.nonEmpty
有没有更好的解决方案来实现这一目标?我正在使用斯卡拉。
解决方案
如果有人正在寻找解决方案,您可以使用EmbeddedDocumentExtractor类。
class EmbeddedImageFinder() extends EmbeddedDocumentExtractor {
override def shouldParseEmbedded(metadata: Metadata): Boolean = {
if(metadata.get("Content-Type").contains("image/")) {
isImageExists = true
}
false
}
override def parseEmbedded(stream: InputStream, handler: ContentHandler,
metadata: Metadata, outputHtml: Boolean): Unit = {}
}
然后将其添加到 ParserContext
context.set(classOf[EmbeddedDocumentExtractor], new EmbeddedImageFinder)
推荐阅读
- php - 基于两列的排名
- typescript - Typescript 接口/JSON 查询类型
- windows - 在 Windows 上使用 Spring Web 上传文件卡在大文件上
- mysql - 获取具有 Min() 值的记录的 id
- mysql - Mysql问题和使用函数last insert ID
- php - 如何在 Laravel 中扩展 PHPUnit?
- java - spark submit 抛出错误 java.lang.ClassNotFoundException: scala.runtime.java8.JFunction2$mcIII$sp
- python - 将 numpy 数组的每一行与第二个 numpy 数组的所有行相加(python)
- r - 基于规则的子集数据帧 - 序列
- c# - 记录不会插入表的最后一行