我正在使用 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。
如果有人正在寻找解决方案,你可以使用 嵌入式文件提取器 类。
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)