У меня есть сценарий, где мне нужно согласовать два документа, документ Word (.docx) и PDF. Эти два должны быть «indentical» друг к другу (PDF-файл является только PDF-версией файла DOCX); что они должны содержать один и тот же текст, содержание и т. д.Получение абзаца от Tika для Word и PDF
В частности, мне нужно убедиться, что оба документа содержат одинаковое количество абзацев. Поэтому мне нужно прочитать DOCX, получить количество абзацев, затем прочитать PDF-файл и захватить его количество абзацев. Если оба числа одинаковы, тогда я в бизнесе.
Похоже, что Apache Tika (Я интересуюсь 1.3) является правильным инструментом для работы здесь. Я вижу в this source file, что Тика поддерживает понятие подсчета абзацев, но пытается выяснить, как получить счет из обоих документов. Вот моя лучшая попытка, но я захлебываясь подключения некоторых конечных точек:
InputStream docxStream = new FileInputStream("some-doc.docx");
InputStream pdfStream = new FileInputStream("some-doc.pdf");
ContentHandler handler = new DefaultContentHandler();
Metadata docxMeta = new Metadata();
Metadata pdfMeta = new Metadata();
Parser parser = new OfficeParser();
ParseContext pc = new ParseContext();
parser.parse(docxStream, handler, docxMeta, pc);
parser.parse(pdfStream, handler, pdfMeta, pc);
docxStream.close();
pdfStream.close();
int docxParagraphCount = docxMeta.getXXX(???);
int pdfParagraphCount = pdfMeta.getXXX(???);
if(docxParagraphCount == pdfParagraphCount)
setInBusiness(myself, true);
Так я спрашиваю: у меня установить это правильно или я способ покинуть базу? Если вы находитесь вне базы, одолжите мне помощь, чтобы вернуть меня в нужное русло. И если я правильно настроил ситуацию, то как мне получить желаемые счета из двух экземпляров Metadata
? Заранее спасибо.
Высоких - благодаря @Gagravarr (+1) - быстрому вопрос - в вашем ответе вы найдете сайт 'Office.PARAGRAPH_COUNT'. Должен ли второй быть чем-то вроде 'Pdf.PARAGRAPH_COUNT' или работает' Office.PARAGRAPH_COUNT' для обоих типов документов? Если да, то как/почему? Я предполагаю, что я просто предвидел тип PDF, определяющий его собственные свойства, а не 'Office.PARAGRAPH_COUNT' применительно ко всем документам. Например, как я могу узнать, для каких типов документов 'Office.PARAGRAPH_COUNT' ** не работает **? И т.д. Еще раз спасибо! – 2013-02-20 23:04:38
Пространство имен метаданных, охватывающее количество абзацев, определено в [Класс Office] (http://tika.apache.org/1.3/api/org/apache/tika/metadata/Office.html). Одна из вещей, которые делает Тика, - это нормализация метаданных на общий набор определений, поэтому вам не нужно знать особенности каждого формата – Gagravarr