两个星期以来我有问题。我正在开发一个在线新闻系统。 PDF新闻文件很大(例如150 MB)。结果,由于连接量问题,用户将无法轻松下载这些文件以进行读取。 作为一种解决方案,我选择将PDF文件分为几个小尺寸(平均150 kb)的压缩图像,并构建一个新的小尺寸PDF文件。这是带有PdfToImage和Imagick库的脚本:
<?php
ini_set('max_execution_time', 1000);
require __DIR__.'/vendor/autoload.php';
function compress($path) {
$im = new Imagick($path);
$im->optimizeImageLayers();
$im->setImageCompression(Imagick::COMPRESSION_JPEG);
$im->setImageCompressionQuality(25);
$im->writeImages($path, true);
}
$pdf = new Spatie\PdfToImage\Pdf('filePDF.pdf');
foreach (range(1, $pdf->getNumberOfPages()) as $pageNumber) {
$path = './images/page'.$pageNumber.'jpg';
$pdf->setPage($pageNumber)
->saveImage($path);
compress($path);
}
// Images to pdf
$i = 1;
$path = './images/page';
$images = array();
while(true) {
$filename = $path . $i . 'jpg';
if(!file_exists($filename)) {
break;
}
$images[] = $filename;
$i++;
}
$pdf = new Imagick($images);
$pdf->setImageFormat('pdf');
$pdf->writeImages('output.pdf', true);
echo "Completed...";
?>
此解决方案遇到了几个问题:
请,我想在您的帮助下解决此问题。请给我建议一个可能的解决方案。谢谢。