Создаем превью PDF файла в PHP.

Создаем превью PDF файла в PHP.

Доброго времени суток! В данной статье я покажу Вам, как можно создать превью (изображения первой страницы) из 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);
    }
}

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

Источник

Статьи по теме

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Back to top button