使用 PHP 和 TCPDF 降低 PDF 文件中图像的分辨率

Reducing resolution of images in a PDF file with PHP and TCPDF

在我们公司,我们需要将扫描的 PDF 文件存储在基于 PHP 的系统上。通常大多数扫描的 PDF 文件都过大,因为其中的图像以非常高的质量存储。

使用一些在线转换工具,我可以将扫描的 PDF 文件最多减少 80%,而不会失去可读性。 (意味着文件是可压缩的)

我使用 TCPDF 处理 PDF 文件,但我找不到一种直接的方法来减小图像大小而不扭曲 PDF 布局。

是否可以使用 TCPDF(或欢迎使用任何其他库)实现此目的

请注意:我不创建 PDF 文件。它是由扫描仪完成的。我需要压缩已创建的包含图像的 PDF 文件。

您可以通过两种方式实现:

  1. 您可以先通过 this 类型的库缩小图像大小,然后生成 pdf 文件。或者,
  2. tcpdf生成pdf时可以设置图片的宽高。如下所示:
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() ) 

查看文档 here

您可以在创建 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 的 class,例如

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.