Преобразование PDF в JPEG генерирует смехотворно большие / TMP файлы (используя GMAGICK) - PullRequest
0 голосов
/ 21 января 2019

Итак, у меня есть php-скрипт, который берет PDF и конвертирует его в изображения JPEG.До сегодняшнего дня все было хорошо, но сегодня я получил этот PDF, который по какой-то причине стал причиной генерации очень больших файлов в моем каталоге /tmp (например, ~ 14 гигабайт, а сам файл PDF ~ 18 МБ).

Вот этот PDF-файл:

https://www.ciamarket.lt/sites/default/files//failai/leidinys_01.15-28-compressed.pdf

А вот соответствующий код:

<?php
$userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36';

    $response = $this
        ->httpClient
        ->request(
            'GET',
            $url,
            [
                'headers' => [
                    'User-Agent' => $userAgent,
                ],
            ]
        );

    $contents = $response->getBody()->getContents();

    $tmpFilePath = tempnam(sys_get_temp_dir(), 'brochure_s');

    $tmpFile = fopen($tmpFilePath, 'r+');
    fwrite($tmpFile, $contents);

while (true) {
try {
    $image = new \Gmagick();
    $image->setResolution($width, $height);

    $image->readimage($tmpFilePath . '[' . $i . ']');

    $image->setImageFormat('jpeg');
    $image->setCompressionQuality(75);
    $image->resizeImage($width, $height, \Gmagick::FILTER_LANCZOS, 1, false);

    $imageBlob = $image->getImageBlob();

    $this
       ->uploader
       ->uploadData(
                        $imageBlob,
                        $brochureId,
                        '',
                        'jpg'
    );

    $image->destroy();
} catch (\Throwable $t) {
    break;
}
}

Я извлек соответствующие биты из своего скрипта.

Я думаю, что строка 28 отвечает за создание огромного файла.

Есть идеи, как это можно решить?

...