Я хочу эту функциональность в своем приложении PHP:
Когда пользователь загружает документ (PDF, DOCX, DOC, PPT, расширения PPTC), после загрузки пользователь получает общее количество страниц документа.
Но без использования функции exec()
.
В PHP можно делать некоторые форматы. DOCx и PPTx просты:
Для файлов Word:
function PageCount_DOCX($file) { $pageCount = 0; $zip = new ZipArchive(); if($zip->open($file) === true) { if(($index = $zip->locateName('docProps/app.xml')) !== false) { $data = $zip->getFromIndex($index); $zip->close(); $xml = new SimpleXMLElement($data); $pageCount = $xml->Pages; } $zip->close(); } return $pageCount; }
и для PowerPoint
function PageCount_PPTX($file) { $pageCount = 0; $zip = new ZipArchive(); if($zip->open($file) === true) { if(($index = $zip->locateName('docProps/app.xml')) !== false) { $data = $zip->getFromIndex($index); $zip->close(); $xml = new SimpleXMLElement($data); print_r($xml); $pageCount = $xml->Slides; } $zip->close(); } return $pageCount; }
Старые документы Office – это совсем другая история. Вы узнаете о том, как это сделать здесь: Как получить количество страниц в Word Document на Linux?
Что касается файлов PDF, я предпочитаю использовать FPDI, даже если для этого требуется лицензия для анализа новых форматов файлов PDF. Вы можете использовать это просто так:
function PageCount_PDF($file) { $pageCount = 0; if (file_exists($file)) { require_once('fpdf/fpdf.php'); require_once('fpdi/fpdi.php'); $pdf = new FPDI(); // initiate FPDI $pageCount = $pdf->setSourceFile($file); // get the page count } return $pageCount; }
К сожалению, вы не можете получить количество страниц в Office без предварительного разбиения на страницы. Это невозможно сделать без помощи других приложений, таких как MS Office, OpenOffice или других. Даже хуже 10-страничный текстовый документ, созданный с помощью MS Word, может быть открыт как 11-страничный документ в OpenOffice из-за различий в разбивке на страницы. Практически для получения общего количества страниц файла .doc самым надежным решением является использование MS Word. Вы можете выполнить эту работу через Office Automation, но это довольно дорогостоящее задание для компьютеров, поскольку для всего документа требуется процесс разбивки на страницы. Также вам нужно установить MS Word на компьютер / сервер.
Вы можете относительно легко получить общее количество страниц в документе PDF. Информация о количестве страниц легко доступна в формате PDF. Большинство библиотек анализатора / чтения PDF предоставят вам простой API для вашей цели.