DOMPDF 图像在服务器中处理时质量较差

DOMPDF images have poor quality when processing in server

我正在一个网站上工作,该网站具有不同的 jQuery 形式,输出到 html 结果页面,此 html 使用 DOMPDF 库转换为 pdf 文件。在本地转换时没有问题,但是在服务器上转换时,生成的pdf图像质量比原始图像低,有白色划痕和模糊(如果需要,我可以上传示例)。

经过一些研究,我尝试了以下解决方案:
- 尝试了不同的图像格式(jpg、png、gif)
- 尝试了 "DOMPDF_PDF_BACKEND" 的不同值(要使用的渲染后端)(CPDF、PDFLib、GD)
- 尝试了不同的 "DOMPDF_DPI" 值
- "DOMPDF_ENABLE_REMOTE" 值设置为 "true"
- 尝试使用不同的应用程序打开生成的 pdf(ubuntu pdf 查看器、adobe acrobat pdf、gimp、photoshop)

结果都一样。

还查看了本地和服务器中的 phpinfo():

PHP版本
本地:PHP 版本 5.5.11
服务器:PHP 版本 5.3.29

GD版本:
两者:捆绑(2.1.0 兼容)

GD FreeType 版本:
本地:2.4.8
版本:2.4.9

libPNG 版本:
本地:1.5.9
服务器:1.2.49


我不知道还有什么参数可以比较。

我不知道还能尝试什么。

提前致谢。

感谢您的回答,我昨天看到 post,我尝试了不同的图像格式,但我一直在等待使用库。

最后,注释掉有关imagick图像处理的代码“//使用PECL imagick + ImageMagic处理透明PNG图像”解决了问题,这是由于图像包含透明度(alpha),例如png和gif。

// Use PECL imagick + ImageMagic to process transparent PNG images
}elseif (extension_loaded("imagick")) {
  $imagick = new Imagick($file);
  $imagick->setFormat('png');

  // Get opacity channel (negative of alpha channel)
  $alpha_channel = clone $imagick;
  $alpha_channel->separateImageChannel(Imagick::CHANNEL_ALPHA);
  $alpha_channel->negateImage(true);
  $alpha_channel->writeImage($tempfile_alpha);

  // Cast to 8bit+palette
  $imgalpha_ = imagecreatefrompng($tempfile_alpha);
  imagecopy($imgalpha, $imgalpha_, 0, 0, 0, 0, $wpx, $hpx);
  imagedestroy($imgalpha_);
  imagepng($imgalpha, $tempfile_alpha);

  // Make opaque image
  $color_channels = new Imagick();
  $color_channels->newImage($wpx, $hpx, "#FFFFFF", "png");
  $color_channels->compositeImage($imagick, Imagick::COMPOSITE_COPYRED, 0, 0);
  $color_channels->compositeImage($imagick, Imagick::COMPOSITE_COPYGREEN, 0, 0);
  $color_channels->compositeImage($imagick, Imagick::COMPOSITE_COPYBLUE, 0, 0);
  $color_channels->writeImage($tempfile_plain);

  $imgplain = imagecreatefrompng($tempfile_plain);

}

然后它会使用“}else{”选项提取没有 alpha 通道的图像。

您还可以在 php.ini

中禁用 imagick 模块