Java Tika检测自定义metadat文件
我创建了一个简单的类,它使用tika库从PDF、html、XLS、DOC等文件中提取元数据 文件可以具有自定义元数据。我需要检测到这一点,并忽略第一步! 但我知道如何用蒂卡做到这一点! 这是我提取所有元数据的简单代码:Java Tika检测自定义metadat文件,java,apache-tika,Java,Apache Tika,我创建了一个简单的类,它使用tika库从PDF、html、XLS、DOC等文件中提取元数据 文件可以具有自定义元数据。我需要检测到这一点,并忽略第一步! 但我知道如何用蒂卡做到这一点! 这是我提取所有元数据的简单代码: import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.PrintWriter; import org.apache.tika.metadata
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.PrintWriter;
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.ContentHandler;
public class TikaParse {
public static String resPFldMeta = new String();
public static String resPFldMetaValue = new String();
@SuppressWarnings("deprecation")
public static String ParseFieldMetadata(String filename) throws Exception {
int j;
FileInputStream is = null;
File f = new File(filename);
is = new FileInputStream(f);
ContentHandler contenthandler = new BodyContentHandler(-1);
Metadata metadata = new Metadata();
metadata.set(Metadata.RESOURCE_NAME_KEY, f.getName());
AutoDetectParser parser = new AutoDetectParser();
parser.parse(is, contenthandler, metadata,new ParseContext());
String[] metadataNames = metadata.names();
// get field name of all metadata
for(j=0;j<metadataNames.length-1; j++){
resPFldMeta += "\""+(metadataNames[j]).trim()+"\",";
}
resPFldMeta += "\""+(metadataNames[j]).trim()+"\"";
return resPFldMeta;
}
//.....
}
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileWriter;
导入java.io.PrintWriter;
导入org.apache.tika.metadata.metadata;
导入org.apache.tika.parser.AutoDetectParser;
导入org.apache.tika.parser.ParseContext;
导入org.apache.tika.sax.BodyContentHandler;
导入org.xml.sax.ContentHandler;
公共类提卡帕斯酒店{
公共静态字符串resPFldMeta=新字符串();
公共静态字符串resPFldMetaValue=新字符串();
@抑制警告(“弃用”)
公共静态字符串ParseFieldMetadata(字符串文件名)引发异常{
int j;
FileInputStream为空;
文件f=新文件(文件名);
is=新文件输入流(f);
ContentHandler ContentHandler=新的BodyContentHandler(-1);
元数据=新元数据();
set(metadata.RESOURCE\u NAME\u KEY,f.getName());
AutoDetectParser=新的AutoDetectParser();
parser.parse(is,contenthandler,metadata,new ParseContext());
String[]metadataNames=metadata.names();
//获取所有元数据的字段名
对于(j=0;ji想解释更多..我需要转义自定义metadat字段,因为我有一个pdf文件,其中包含一个ModDate--文本字段的自定义属性。它类似于ModDate标准属性名!!当我在advanced metdata中删除此自定义属性并使用此pdf执行我的应用程序时,我有一个正确的元数据结果..但是如果我在不更改元数据的情况下执行我的应用程序,我会遇到由parse methode引起的错误