Конвертировать PDF (с прозрачностью * и * CMYK) в jpg

Мне нужно сгенерировать jpg-изображения из файлов PDF (только первая страница). Файлы PDF создаются пользователем, поэтому они могут содержать что угодно. В настоящее время я использую следующий код:

// Load PDF. $i = new Imagick; // Create thumbnail of first page of PDF. $i->setResolution(150, 150); $i->loadImage("test.pdf[0]"); $i->thumbnailImage(640, 480, true); // Remove transparency, fill transparent areas with white rather than black. $i->setImageBackgroundColor("white"); $i->setImageAlphaChannel(11); // Imagick::ALPHACHANNEL_REMOVE $i->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN); // Output. $i->writeImage("test.jpg"); 

Это работает так, как ожидается, что прозрачность становится белой, а не черной. Тем не менее, у меня возникли проблемы с некоторыми созданными jpg-изображениями, поэтому я запускал jpeginfo на них:

 $ jpeginfo -c test.jpg 

test.jpg 960 x 480 32bit JFIF N 9481 Неподдерживаемый запрос преобразования цвета [ОШИБКА]

Оказывается, что некоторые исходные PDF-файлы действительно используют CMYK и, по-видимому, не конвертируются в RGB при сохранении как jpg. Поэтому я изменил свой код на следующее (добавив одну строку), чтобы явно преобразовать в RGB:

 // Load PDF. $i = new Imagick; // Create thumbnail of first page of PDF. $i->setResolution(150, 150); $i->loadImage("test.pdf[0]"); $i->thumbnailImage(640, 480, true); // Remove transparency, fill transparent areas with white rather than black. $i->setImageBackgroundColor("white"); $i->setImageAlphaChannel(11); // Imagick::ALPHACHANNEL_REMOVE $i->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN); // Convert to RGB to prevent creating a jpg with CMYK colors. $i->setImageColorspace(Imagick::COLORSPACE_RGB); // Output. $i->writeImage("test.jpg"); 

Это создает jpeg с цветовым профилем RGB , все в порядке. Однако, по какой-то неясной причине, это приводит к образам с черным фоном . Другими словами: проблема прозрачности вернулась. Почему Imagick делает это, и что более важно, каково решение проблемы прозрачности и проблемы CMYK ?

Solutions Collecting From Web of "Конвертировать PDF (с прозрачностью * и * CMYK) в jpg"