Я создаю PDF с некоторыми изображениями в нем. Поскольку изображения имеют большой размер, размер созданного PDF также будет очень большим. Есть ли способ динамически уменьшить размер изображения при присоединении его к PDF.
Я попробовал что-то подобное из Вот
`header('Content-Type: image/jpeg');`
`include('SimpleImage.php');`
`$image = new SimpleImage();`
`$image->load($imgPath);`
`$image->resizeToWidth(150);`
`$image->output();`
note1: $ imgPath передается из цикла, и я использую MPDF для создания PDF.
Если вы посмотрите в коде Simple_Image, который вы используете, вы увидите imagecopyresampled
функция в resize
метод. Это называется в свою очередь resizeToWidth
метод — так что ваш образ пересэмплируется.
Это работает хорошо и довольно быстро.
$img = imagecreatefromjpeg('image.jpg');
$originalWidth = imagesx($image);
$originalHeight = imagesy($image);
$scale = min($previewWidth/$originalWidth, $previewHeight/$originalHeight);
$newWidth = ceil($scale*$originalWidth);
$newHeight = ceil($scale*$originalHeight);
$newPic = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($newPic, $image,0, 0, 0, 0,$newWidth, $newHeight, $originalWidth, $originalHeight);
ob_start();
imagejpeg($newPic, NULL, 70);
$jpg = ob_get_clean();
ob_clean();
$fp = fopen('newPic.jpg','w');
fwrite($fp,$jpg);
fclose($fp);
Вот мой заголовок, и вот как я использовал mpdf надеюсь, это поможет вам
$htmlTable_header='<style></style><table width="100%" border="0" style="border-collapse:collapse;margin-top:-40px;font-family:arial !important; font-size:11px;" cellspacing="0" cellpadding="0">
<tr>
<td width="10"> </td>
<td width="150" valign="top"><img src="http://localhost/abc/images/abc_logo.png" width="150" height="100" border="0" alt="" title="abc" />';
$mpdf->SetHTMLHeader($htmlTable_header);
$mpdf->SetHTMLFooter($htmlTable_footer);
$mpdf->WriteHTML($htmlTable_body);
$mpdf->SetDisplayMode('fullpage');
$mpdf->Output('service_report_pdf/'.$_REQUEST['id'].'.pdf',F);