Кто-нибудь знает простой способ «прочитать» / извлечь ключевые слова из файла .pdf?
Этот файл не защищен паролем и сгенерирован на том же сервере с использованием класса FPDF.
Я знаю, что есть какой-то «мощный» (не бесплатный) инструмент для манипулирования .pdf, который предоставляет простой способ получить все метаданные.
Я также знаю, что .pdf хранит все метаданные внутри << >> символ, используя специальный символ / перед именем метаданных, чтобы идентифицировать это.
Что мне нужно, это строка после «/ Ключевые слова» и хранить в переменной.
Есть идеи разобрать и получить только эту строку?
(в настоящее время я пишу строку JSON внутри ключевых слов, поэтому это выглядит так: ([{"FirstName":"7bis","LastName":"lastName","email":"[email protected]"}])
)
Открытие файла PDF с помощью текстового редактора выглядит так:
/F1 6 0 R
>>
/XObject <<
>>
>>
endobj
7 0 obj
<<
/Keywords ([{"FirstName":"7bis","LastName":"lastName","email":"[email protected]"}])
/Producer (FPDF 1.81)
/CreationDate (D:20160531084015)
>>
endobj
Спасибо за все предложения;)
наконец, после некоторого «кодирования» и некоторого прочтения об общем разборе, я нашел способ извлечь то, что мне нужно.
На самом деле я открываю файл .pdf и сохраняю его как строку, затем анализирую строку и извлекаю содержимое после ключевых слов.
$file = "/directory/of/file/example.pdf";
$stringedPDF = file_get_contents($file, true);
preg_match('/(?<=Keywords )\S+/i', $stringedPDF, $match);
return $match[0];
Я почти уверен, что мы можем выполнить некоторые «настройки», потому что «метаданные» всегда находятся «в конце» файла. Было бы хорошо взять только «последнюю» часть файла без сохранения всего файла в строку, это сэкономит много времени, особенно при большом размере файла .pdf.
Вы можете попробовать ниже код из источник
$parser = new \Smalot\PdfParser\Parser();
$pdf = $parser->parseFile('document.pdf');
$text = $pdf->getDetails();