Уменьшение разрешения изображений в файле PDF с PHP и TCPDF - PullRequest
0 голосов
/ 16 января 2020

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

Используя некоторые онлайн-инструменты для конвертирования, я могу уменьшить отсканированные файлы PDF до 80% без потери читаемость. (Это означает, что файлы сжимаются)

Я использую TCPDF для обработки файлов PDF, но я не смог найти прямой способ уменьшить размеры изображений без искажения макета PDF.

Можно ли этого добиться с помощью TCPDF (или любые другие библиотеки приветствуются)

Обратите внимание: я не создаю файл PDF. Это делается сканером. Мне нужно сжать уже созданный файл PDF с изображениями в нем.

Ответы [ 2 ]

2 голосов
/ 16 января 2020

Вы можете сжать изображение перед созданием PDF, например:

compressedImage($source, $path, $quality); //before create pdf

// Compress image function
function compressedImage($source, $path, $quality) {

            $info = getimagesize($source);

            if ($info['mime'] == 'image/jpeg'){
                $image = imagecreatefromjpeg($source);

            }elseif ($info['mime'] == 'image/gif'){
                $image = imagecreatefromgif($source);

            }elseif ($info['mime'] == 'image/png'){ 
                $image = imagecreatefrompng($source);
            }

            imagejpeg($image, $path, $quality);
            return $path;

    }

Или использовать класс из tcpdf, например

public  
setJPEGQuality( $quality )
//------------------//
SetCompression( $compress = true )
Activates or deactivates page compression. When activated, the internal representation of each page is compressed, which leads to a compression ratio of about 2 for the resulting document. Compression is on by default. Note: the Zlib extension is required for this feature. If not present, compression will be turned off.
1 голос
/ 16 января 2020

Вы можете реализовать двумя способами:

  1. Вы можете сначала уменьшить размер изображения с помощью библиотеки этого типа , а затем сгенерировать файл PDF. или
  2. Вы можете установить ширину и высоту изображения при генерации PDF через tcpdf. например:
Image( $file, $x = '', $y = '', $w = 0, $h = 0, $type = '', $link = '', $align = '', $resize = false, $dpi = 300, $palign = '', $ismask = false, $imgmask = false, $border = 0, $fitbox = false, $hidden = false, $fitonpage = false, $alt = false, $altimgs = array() ) 

См. здесь c здесь

...