Я хочу сравнить два документа PDF (не только содержимое, но и другую информацию, такую как нижние колонтитулы и стили заголовка).Как сравнить два pdf-документа с использованием Apache Tika
Я узнал, что мы можем использовать 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");
}
}
Как мы можем извлечь больше информации, такие как заголовок расстояние первой секции, высоту изображения и ширину и т.д., и сравнить их с другим PDF с помощью Apache Тик.
Спасибо за ваш ответ. Мне также интересно, что файлы docx имеют стиль, заголовок, нижний колонтитул в соответствующих xml. Файл pdf позаботится об этих вещах или позаботится об этих вещах, можем ли мы извлечь эти данные или нет. Посмотрев на представление структурированных данных Tika, похоже, что у него нет такой информации? Ответьте, пожалуйста. – Prakhar
Tika only extract Текстовое содержимое не является стилем. – SANN3
Хорошо, это заставляет меня спросить, можем ли мы получить информацию, такую как размер шрифта, имя, цвет и т. Д. Для текста в pdf, используя Tika? – Prakhar