【发布时间】:2014-02-10 17:53:55
【问题描述】:
我想比较两个 pdf 文档(不仅是内容,还包括页眉页脚和样式等其他信息)。
我知道我们可以使用 Apache tika 进行比较。我学会了解析 pdf 文档并能够提取一些元数据信息,例如标题、作者。
我现在可以这样做 -
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
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.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
public class CompareDocs {
public CompareDocs() {
super();
}
private void parseResource(String resourceName) {
System.out.println("Parsing resource : " + resourceName);
InputStream inputStream = null;
try {
try {
inputStream = new BufferedInputStream(new FileInputStream(new File(resourceName)));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Parser parser = new AutoDetectParser();
ContentHandler contentHandler = new BodyContentHandler();
Metadata metadata = new Metadata();
parser.parse(inputStream, contentHandler, metadata, new ParseContext());
for (String name : metadata.names()) {
String value = metadata.get(name);
System.out.println("Metadata Name: " + name);
System.out.println("Metadata Value: " + value);
}
System.out.println("Title: " + metadata.get("title"));
System.out.println("Author: " + metadata.get("Author"));
System.out.println("content: " + contentHandler.toString());
} catch (IOException e) {
e.printStackTrace();
} catch (TikaException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws Exception {
CompareDocs apacheTikaParser = new CompareDocs();
apacheTikaParser.parseResource("C:\\Users\\prakhar\\Desktop\\beautiful_code.pdf");
}
}
我们如何提取更多信息,例如第一部分的标题距离、图像高度和宽度等,并使用 Apache Tika 将这些信息与另一个 pdf 进行比较。
【问题讨论】:
标签: java apache pdf apache-tika