提问人:Mathemagician 提问时间:7/16/2023 最后编辑:Mathemagician 更新时间:7/17/2023 访问量:52
使用 Imagick 将多个图像转换为 pdf
Convert multiple images to a pdf using Imagick
问:
在下面的代码中,代码是通过 Ajax 发送的,代码是响应。问题是所有图像都在创建的 pdf 文件的单个页面中,我希望每个图像都在单独的页面中。$_POST['images']
$images = $_POST['images'];
$pdf = new Imagick();
$pdf->setFormat('pdf');
foreach ($images as $dataURL) {
$data = substr($dataURL, strpos($dataURL, ',') + 1);
$image = base64_decode($data);
$imagick = new Imagick();
$imagick->readImageBlob($image);
$pdf->addImage($imagick);
}
$pdf->resetIterator();
$pdf = $pdf->appendImages(true);
header('Content-Type: applicaton/pdf');
echo $pdf->getImagesBlob();
$pdf->destory();
答:
0赞
Mathemagician
7/17/2023
#1
该函数采用两个参数:filename 和 adjoin。如果 adjoin 设置为 true,则每个图像都是 pdf(文档)的单独页面。此外,如果我们调用此函数并将 adjoin 设置为 true,那么当 PDF 被回显时,每个图像都在一个单独的页面上。使用它,我们可以有类似于以下代码的内容:Imagick::writeImages
$images = $_POST['images'];
$pdf = new Imagick();
$pdf->setFormat('pdf');
foreach ($images as $dataURL) {
$data = substr($dataURL, strpos($dataURL, ',') + 1);
$image = base64_decode($data);
$imagick = new Imagick();
$imagick->readImageBlob($image);
$pdf->addImage($imagick);
}
// First we create a temporary file and write the pdf to it
$temp_name = '/tmp/output.pdf';
$pdf->writeImages($temp_name, true); // adjoin is true
unlink($temp_name); // Delete the temporary file
header('Content-Type: applicaton/pdf');
echo $pdf->getImagesBlob();
$pdf->destory();
请注意,我们已经删除了
$pdf->resetIterator();
$pdf = $pdf->appendImages(true);
在上面的代码中
评论