Получить метаданные из файлов Open Office

Мне нужно изменить только метаданные файла Open Office. Как я могу сделать это без загрузки всего файла в память (file.odt)? Мне нужно работать только с файлом: meta.xml и меткой: ... метаданные...

Я использую Apache ODF Toolkit 0,5-инкубации. Мой код загружает файл meta.xml, но я не могу получить метаданные:

OdfPackage pkg = OdfPackage.loadPackage(new File("file.odt"));
Node d = pkg.getDom("meta.xml").getElementsByTagName("office:document-meta").item(0);

for(int i =0; i<d.getAttributes().getLength();i++) {
  String nombre = d.getAttributes().item(i).getNodeName();
  String valor = d.getAttributes().item(i).getNodeValue();
  System.out.println("Clave: " + nombre + " valor: " + valor);
} 

1 ответ

Если вы хотите работать с различными форматами файлов, Apache Tika - ваш лучший выбор. Tika предоставляет общий интерфейс для извлечения текста и метаданных из большого числа форматов и скрывает от вас сложность различных типов и форматов.

В командной строке, чтобы извлечь метаданные из этого примера файла, который вы сделаете

java -jar tika-app-1.4.jar --metadata quick.odt

И вы получите огромное количество метаданных:

Author: Jesper Steen Møller
Character Count: 43
Content-Length: 7042
Content-Type: application/vnd.oasis.opendocument.text
Creation-Date: 2005-09-06T23:34:00
Edit-Time: PT2M0S
Image-Count: 0
Keywords: Pangram, fox, dog
Last-Modified: 2005-09-06T23:49:00
Last-Save-Date: 2005-09-06T23:49:00
Object-Count: 0
Page-Count: 1
Paragraph-Count: 1
Table-Count: 0
Word-Count: 9
cp:subject: Gym class featuring a brown fox and lazy dog
creator: Jesper Steen Møller
date: 2005-09-06T23:49:00
dc:creator: Jesper Steen Møller
dc:description: Gym class featuring a brown fox and lazy dog
dc:language: en-US
dc:subject: Pangram, fox, dog
dc:title: The quick brown fox jumps over the lazy dog
dcterms:created: 2005-09-06T23:34:00
dcterms:modified: 2005-09-06T23:49:00
description: Gym class featuring a brown fox and lazy dog
editing-cycles: 5
generator: OpenOffice.org/1.9.125$Win32 OpenOffice.org_project/680m125$Build-8947
initial-creator: Nevin Nollop
language: en-US
meta:author: Jesper Steen Møller
meta:character-count: 43
meta:creation-date: 2005-09-06T23:34:00
meta:image-count: 0
meta:initial-author: Nevin Nollop
meta:object-count: 0
meta:page-count: 1
meta:paragraph-count: 1
meta:save-date: 2005-09-06T23:49:00
meta:table-count: 0
meta:word-count: 9
modified: 2005-09-06T23:49:00
nbCharacter: 43
nbImg: 0
nbObject: 0
nbPage: 1
nbPara: 1
nbTab: 0
nbWord: 9
resourceName: quick.odt
subject: Gym class featuring a brown fox and lazy dog
title: The quick brown fox jumps over the lazy dog
xmpTPg:NPages: 1

С Java вы можете получить то же самое с чем-то простым

TikaConfig tika = TikaConfig.getDefaultConfig();
Metadata metadata = new Metadata();
ParseContext context = new ParseContext();

InputStream input = TikaInputStream.get(new File("test.ods"));

tika.getParser().parse(input, null, metadata, context);

И вы получите метаданные на объекте метаданных

Вы можете использовать пакет OdfDocument, предоставленный org.odftoolkit. Вы можете получить зависимость здесь => https://mvnrepository.com/artifact/org.odftoolkit/odfdom-java

Вы можете проанализировать свой документ

OdfDocument odfDocument = OdfDocument.loadDocument(new URL(URLPath).openStream());

И получить метаданные, например,

wordCount = odfDocument.getOfficeMetadata().getDocumentStatistic().getWordCount();
Другие вопросы по тегам