Чтение метаданных PDF в PHP

Я пытаюсь прочитать метаданные, прикрепленные к произвольным файлам PDF: название, автор, тема и ключевые слова.

Есть ли библиотека PHP, желательно с открытым исходным кодом, которая может читать метаданные PDF? Если это так, или нет, как использовать библиотеку (или ее отсутствие) для извлечения метаданных?

Чтобы быть ясным, я не заинтересован в создании или изменении PDF-файлов или их метаданных, и мне не нужны тела PDF. Я просмотрел несколько библиотек, в том числе FPDF (которые все, кажется, рекомендуют), но, похоже, это только для создания PDF, а не для извлечения метаданных.

В основу Zend входит Zend_Pdf , что делает это очень просто:

$pdf = Zend_Pdf::load($pdfPath); echo $pdf->properties['Title'] . "\n"; echo $pdf->properties['Author'] . "\n"; 

Ограничения: работает только с файлами без шифрования меньше 16 МБ.

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

Попробуйте открыть pdf-файл в текстовом редакторе, синтаксический анализатор не должен принимать более пяти строк.

PDF Parser делает именно то, что вы хотите, и это довольно просто:

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

Вы можете попробовать его на демо-странице .

Сегодня я искал то же самое. И я столкнулся с небольшим классом PHP на http://de77.com/, который предлагает быстрое и грязное решение. Вы можете загрузить этот класс напрямую. Вывод кодируется в кодировке UTF-8.

Создатель говорит:

Вот класс PHP, который я написал, который можно использовать для получения заголовка и автора и нескольких страниц любого PDF-файла. Он не использует никакого внешнего приложения – просто чистый PHP.

 // basic example include 'PDFInfo.php'; $p = new PDFInfo; $p->load('file.pdf'); echo $p->author; echo $p->title; echo $p->pages; 

Для меня это работает! Все спасибо исключительно создателю класса … ну, может быть, только немного благодаря мне тоже для поиска класса;)

Вы можете использовать PDFtk для извлечения количества страниц:

 // Windows $bin = realpath('C:\\pdftk\\bin\\pdftk.exe'); $cmd = "cmd /c {$bin} {$path} dump_data | grep NumberOfPages | sed 's/[^0-9]*//'"; // Unix $cmd = "pdftk {$path} dump_data | grep NumberOfPages | sed 's/[^0-9]* 

Если ImageMagick доступен, вы также можете использовать:

 $cmd = "identify -format %n {$path}"; 

Выполнить в PHP через shell_exec () :

 $res = shell_exec($cmd); 
 <?php $sourcefile = "file path"; $stringedPDF = file_get_contents($sourcefile, true); preg_match('/(?<=Title )\S(?:(?<=\().+?(?=\))|(?<=\[).+?(?=\]))./', $stringedPDF, $title); echo $all = $title[0];