在任何文档中使用apache Tika检测图像?

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

我正在使用 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

有没有更好的解决方案来实现这个目标?我使用的是Scala。

apache-tika
1个回答
0
投票

如果有人正在寻找解决方案,你可以使用 嵌入式文件提取器 类。

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)
© www.soinside.com 2019 - 2024. All rights reserved.