парсинг — чтение PDF-ключевых слов с переполнением стека

Кто-нибудь знает простой способ «прочитать» / извлечь ключевые слова из файла .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

Спасибо за все предложения;)

0

Решение

наконец, после некоторого «кодирования» и некоторого прочтения об общем разборе, я нашел способ извлечь то, что мне нужно.
На самом деле я открываю файл .pdf и сохраняю его как строку, затем анализирую строку и извлекаю содержимое после ключевых слов.

$file = "/directory/of/file/example.pdf";
$stringedPDF = file_get_contents($file, true);
preg_match('/(?<=Keywords )\S+/i', $stringedPDF, $match);
return $match[0];

Я почти уверен, что мы можем выполнить некоторые «настройки», потому что «метаданные» всегда находятся «в конце» файла. Было бы хорошо взять только «последнюю» часть файла без сохранения всего файла в строку, это сэкономит много времени, особенно при большом размере файла .pdf.

1

Другие решения

Вы можете попробовать ниже код из источник

$parser = new \Smalot\PdfParser\Parser();
$pdf    = $parser->parseFile('document.pdf');
$text   = $pdf->getDetails();
0

По вопросам рекламы [email protected]