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



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

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

都得到相同的结果。

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


PHP版本local: PHP Version 5.5.11
server: PHP Version 5.3.29


GD版本:Both:捆绑(2.1.0兼容)

GD FreeType Version:
Local: 2.4.8
版本:2.4.9


libPNG版本:Local: 1.5.9
Server: 1.2.49


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

我不知道还能试什么

谢谢你的回答,我昨天看到了那个帖子,我尝试了不同的图像格式,但我一直在等待库的播放。

最后,注释掉关于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模块

最新更新