我在我的项目中使用了Imagick扩展。这对我来说是新的。
以下是我的代码。
$pdfPath = $config['upload_path'] . '/' . $fileName;
$im = new imagick();
$im->setResolution(300, 300);
$im->readImage($pdfPath);
$im->setImageFormat('jpeg');
$im->setImageCompression(imagick::COMPRESSION_JPEG);
$im->setImageCompressionQuality(100);
$im->writeImage($config['upload_path'] . '/' . str_replace('pdf', 'jpeg', $fileName));
$im->clear();
$im->destroy();
答案 0 :(得分:3)
您需要将图像背景颜色设置的选项设置为白色。在这里,我添加了$ im-> - > flattenImages(); 在这里,您可以找到解决方案https://www.binarytides.com/convert-pdf-image-imagemagick-php/
这
permissions
要
$pdfPath = $config['upload_path'] . '/' . $fileName;
$im = new imagick();
$im->setResolution(300, 300);
$im->readImage($pdfPath);
$im->setImageFormat('jpeg');
$im->setImageCompression(imagick::COMPRESSION_JPEG);
$im->setImageCompressionQuality(100);
$im->writeImage($config['upload_path'] . '/' . str_replace('pdf', 'jpeg', $fileName));
$im->clear();
$im->destroy();
我不确定这对你有帮助。
答案 1 :(得分:1)
我认为问题在于我们从pdf输入每英寸点数的分辨率,并在制作jpeg时将其输出为每英寸像素数。
这个代码可以保证正确的宽高比,而且我可以看出我用来测试的pdf。但它根本不是很清楚,我无法阅读任何文字。这是我用的。
$pdfPath = $config['upload_path'] . '/' . $fileName;
$img = new imagick();
$img->setResolution(300, 300);
$img->readImage($pdfPath); //Open after yuo set resolution.
$img->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH); //Declare the units for resolution.
$img->setImageFormat('jpeg');
$img->setImageCompression(imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(100);
$img->writeImage($config['upload_path'] . '/' . str_replace('pdf', 'jpeg', $fileName));
$img->clear();
$img->destroy();
根据我的阅读,您可能需要在计算机上安装Ghostscript,并且从命令行执行脚本似乎更受欢迎,并提供更好的结果和性能。
我发现这篇文章看起来它载有一堆图像格式的信息以及imagemagik如何处理它们。它有一些PDF格式。
http://www.imagemagick.org/Usage/formats/#tiff
我可能会查看一个PHP PDF库,其中包含已经内置的所有内容。重新发明轮子毫无意义。可能已经内置了一个函数来完成你想要做的事情。