Я решил ту же проблему здесь, понизив -dCompatibilityLevel с версии 1.4 до версии 1.3
ОБНОВЛЕНИЕ : v1.3 превратит весь контент в PDF простоодин объект, это означает, что конечный пользователь не сможет ни выбирать тексты, ни извлекать изображения в своем средстве просмотра.
Чтобы продолжать использовать v1.4, я обнаружил уловку на ghostscript, которая помогает сохранитьТочность цветопередачи, которая заключается в отключении прозрачности PDF, конвертируется неточно, потому что RGB не имеет альфа-канала, поэтому информация теряется.
Поэтому, если вы используете: -dNOTRANSPARENCY, вы все равно можете использовать: -dCompatibilityLevel = 1.4, и это будет работать.
Точная команда:
gs -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -dCompatibilityLevel=1.4 -dNOTRANSPARENCY -dColorConversionStrategy=/sRGB -dProcessColorModel=/DeviceRGB -dColorConversionStrategyForImages=/DeviceRGB -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dUseCIEColor=true -sOutputFile=output.pdf input.pdf
Как яРаботая с PHP, я написал простой класс:
/**
* Convert color profiles - PDF to PDF
* Class Conversor
*/
class Conversor
{
/**
* Convert CMYK to RGB
*
* @param $input
* @param $output
* @return string
*/
public static function gsCmykToRgb($input, $output)
{
$gsScript = ('gs -sDEVICE=pdfwrite \
-dBATCH -dNOPAUSE \
-dCompatibilityLevel=1.4 \
-dNOTRANSPARENCY \
-dColorConversionStrategy=/sRGB \
-dProcessColorModel=/DeviceRGB \
-dColorConversionStrategyForImages=/DeviceRGB \
-dTextAlphaBits=4 \
-dGraphicsAlphaBits=4 \
-dUseCIEColor=true \
-sOutputFile='."$output".' '."$input");
exec($gsScript);
return realpath($output);
}
}
Вы можете найти все о ghostscript здесь: http://www.ghostscript.com/doc/9.05/Use.htm