我目前有一页PDF(http://reljac.com/so_1/all.pdf),它是几张纸质收据的基本扫描件。如果你看PDF,文字清晰易读。原件是扫描8.5“x 11”纸(无所谓)
我创建了一个非常简单的文件,使用以下代码将PDF转换为.jpg:
<?php
$im = new imagick('all.pdf[0]');
$im->setImageFormat('jpg');
$im->setImageCompression(imagick::COMPRESSION_LOSSLESSJPEG);
$im->setImageCompressionQuality(80);
header('Content-Type: image/jpeg');
echo $im;
?>
当我运行它(http://reljac.com/so_1/pdf_jpg.php)时,生成的图像难以辨认。
我现在正在使用两台服务器,一位告诉我:
版本:ImageMagick 6.2.8 10/06/10 Q16 文件:/usr/share/ImageMagick-6.2.8/doc/index.html
另一个:
版本:ImageMagick 6.6.0-4 2012-05-02 Q16 http://www.imagemagick.org
两台服务器都创建了类似的质量.jpg
我已经更改了几个设置,包括:
$im->setImageCompressionQuality(40);
$im->setImageCompressionQuality(100);
$im->setImageCompressionQuality(80);
$im->setImageCompression(imagick::COMPRESSION_JPEG);
(来自http://www.php.net/manual/en/imagick.constants.php的各种其他人)我尝试添加$im->scaleImage(600,0);
似乎没有什么比这更清晰了。我希望最终结果是原始PDF的清晰.jpg - 它不必填满屏幕,它只需要清晰易读。原始PDF可能有不同的大小,因此我需要记住,源并不总是8.5“x 11”。
我还能做些什么来提高最终图像的质量,还是我应该期待的最好的?我是否需要以其他方式处理这些文件以获得更好的图像?
更新 根据@ VadimR的回答,我现在使用以下内容:
$src = 'all.pdf';
$src_parts = pathinfo($src);
shell_exec('pdfimages ' . $src . ' ' . $src_parts['filename']);
shell_exec('convert ' . $src_parts['filename'] . '-000.pbm -resize 25% -sharpen -2 ' . $src_parts['filename'] . '.jpg');
$myImage = imagecreatefromjpeg($src_parts['filename'] . '.jpg');
header("Content-type: image/jpeg");
imagejpeg($myImage);
imagedestroy($myImage);
shell_exec('rm ' . $src_parts['filename'] . '-000.pbm');
这会产生一个漂亮,清晰的图像。
答案 0 :(得分:2)
ImageMagick将PDF渲染委托给Ghostscript,因此,如果需要,不仅可以指定IM,还可以指定GS版本。其次,我认为最好从命令行开始,只有在达到适当的质量后才能将其放入php代码中。
提供质量(或多或少)的命令:
convert -density 300 all.pdf out.jpg
这里我们设置渲染分辨率300 dpi。注意,它与
不一样convert all.pdf -density 300 out.jpg
因为此处的渲染速度为72 dpi,因此使用300 dpi分配质量差的结果(即不进行重新采样)。
但是,我认为更好的方法是提取扫描按原样,即不进行转换:
pdfimages all.pdf all
给出全000.pbm图像 - 每个样本1位,3424 * 4400像素。我绝对不能同意,“文字清晰易读” - 有些数字只能被猜到。
然后使用convert
命令重新取样,并尝试改进,例如
convert all-000.pbm -resize 25% -sharpen 2 out.jpg
答案 1 :(得分:-1)
使用 pdfimages 提取扫描页面的图像(是的,它可以从单个PDF文档中提取100张图像中的100张)并将其保存为pbm或ppm文件是一个更好的选择或技术
&#34;如果您不知道自己在做什么,那么其他所有操作和/或重复转换等都可以/绝对可以降低原创性,有时甚至可以降低图像的质量,图片。例如,有人建议使用JPEG格式,确实是一种松散的压缩/编码方法。然而,原始图像格式如pbm或mono用于灰度,黑色和黑色。 24/16/8位彩色图像的白色和/或1位图像和ppm。&#34;
仅对原始图像进行操作,最后使用Jbig2enc将pbm图像转换为PDF文件,使用leptocica的converttopdf实用程序转换为彩色页面。
不要使用调整大小来减少输出页面/ PDF文件的大小,学会使用更好的压缩和/或编码技术!