使用 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 文件。
您可以通过两种方式实现:
- 您可以先通过 this 类型的库缩小图像大小,然后生成 pdf 文件。或者,
- 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.
在我们公司,我们需要将扫描的 PDF 文件存储在基于 PHP 的系统上。通常大多数扫描的 PDF 文件都过大,因为其中的图像以非常高的质量存储。
使用一些在线转换工具,我可以将扫描的 PDF 文件最多减少 80%,而不会失去可读性。 (意味着文件是可压缩的)
我使用 TCPDF 处理 PDF 文件,但我找不到一种直接的方法来减小图像大小而不扭曲 PDF 布局。
是否可以使用 TCPDF(或欢迎使用任何其他库)实现此目的
请注意:我不创建 PDF 文件。它是由扫描仪完成的。我需要压缩已创建的包含图像的 PDF 文件。
您可以通过两种方式实现:
- 您可以先通过 this 类型的库缩小图像大小,然后生成 pdf 文件。或者,
- 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.