簡體   English   中英

Apache Tika 缺少許多元數據鍵值對

[英]Missing many metadata Key-value pairs with Apache Tika

我正在嘗試使用 Apache Tika 在 JAVA 中獲取文件的元數據。獲取該文件的代碼如下所示,

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;

import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class tika {

public static void main(final String[] args) throws IOException, SAXException, TikaException {
      File file = new File("C:\\HTML\\viewer\\files\\doc.doc");

      AutoDetectParser parser = new AutoDetectParser();
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(file);
      ParseContext context = new ParseContext();
      parser.parse(inputstream, handler, metadata, context);

      String[] metadataNames = metadata.names();
      System.out.println(metadataNames.length);
        for (String key : metadataNames) {
            String value = metadata.get(key);
            System.out.println(key + ": " + value);
        }
      
   }
}

問題是我只得到下面給出的兩個鍵值對,

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2
X-TIKA:Parsed-By: org.apache.tika.parser.EmptyParser
Content-Type: application/x-tika-msoffice

我收到了來自 SLF4J 的警告,我認為這對於獲得所需的輸出不是問題,如果是,請告訴我。

它是一個 Maven 項目,下面給出了我的依賴項,

<dependency>
  <groupId>org.apache.tika</groupId>
  <artifactId>tika-core</artifactId>
  <version>2.3.0</version>
</dependency>
<dependency>
  <groupId>org.apache.tika</groupId>
  <artifactId>tika-parsers</artifactId>
  <version>2.3.0</version>
  <type>pom</type>
</dependency>

我只得到“X-TIKA:Parsed-By”和“Content-Type”鍵值。 我想要更多元數據值,如作者、評論、大小等。

您必須使用特定的解析器來檢索 Microsoft 文檔屬性。

首先添加以下依賴項:

<dependency>
  <groupId>org.apache.tika</groupId>
  <artifactId>tika-core</artifactId>
  <version>2.3.0</version>
</dependency>
<dependency>
  <groupId>org.apache.tika</groupId>
  <artifactId>tika-parsers-standard-package</artifactId>
  <version>2.3.0</version>
</dependency>

接下來,您可以執行以下操作:

BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("C:\\HTML\\viewer\\files\\doc.doc"));
ParseContext pcontext = new ParseContext();

// Specific parser
OOXMLParser msOfficeParser = new OOXMLParser();
msOfficeParser .parse(inputstream, handler, metadata, pcontext);

System.out.println("Contents of the document:" + handler.toString());
System.out.println("Metadata of the document:");

String[] metadataNames = metadata.names();

for (String name : metadataNames) {
  System.out.println(name + ": " + metadata.get(name));
}

你會得到這樣的東西:

文檔元數據:cp:revision: 3
擴展屬性:AppVersion:16.0000 元:段落計數:1
元:字數:83 擴展屬性:應用程序:Microsoft Office
Word 元:最后作者:Microsoft Office 用戶

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM