Создаем превью PDF файла в PHP.
![Создаем превью PDF файла в PHP.](/images/articles/php-create-pdf-files-cover.png)
Доброго времени суток! В данной статье я покажу Вам, как можно создать превью (изображения первой страницы) из PDF файла на PHP.
Где это может пригодиться? Допустим, Вы создаете онлайн-библиотеку, в которой при добавлении новой книги (в нашем случае в формате PDF) из нее генерируется изображение первой страницы - превью.
Итак, для создания превью из PDF файла будем использовать библиотеки Imagick и Gostscript.
Код программы:
<?php
// путь к файлам с превью
function coverImagePath(string $pdfFileName)
{
$poster = pathinfo($pdfFileName, PATHINFO_FILENAME);
return __DIR__ . "/covers/$poster.jpg";
}
// здесь создаем превью
// параметр файла - пусть к PDF-файлу
function createPoster(string $pdfFile)
{
$firstPage = '[0]'; // первая страница
$im = new Imagick($pdfFile . $firstPage); // читаем первую страницу из файла
$im->setImageFormat('jpg'); // устанавливаем формат jpg
file_put_contents(coverImagePath($pdfFile), $im); // сохраняем файл в папку
$im->clear(); // очищаем используемые ресурсы
}
// получаем все файлы в папке
const RootDir = '/home/myrusakov/Documents';
$files = new DirectoryIterator(RootDir);
// проходимся по ним
foreach($files as $file)
{
// если файл - . или .. - пропускаем
if($file->isDot())
continue;
// получаем полный путь к файлу
$filePath = RootDir . DIRECTORY_SEPARATOR . $file->getFilename();
if($file->isFile() && $file->getExtension() === 'pdf')
{
$posterFile = new SplFileInfo(coverImagePath($filePath));
if($posterFile->isFile()) continue;
createPoster($filePath);
print($filePath . PHP_EOL);
}
}
Таким образом,после запуска программы мы получим превью - изображение первой страницы каждого файла.
-
-
Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.