2013-04-12 3 views
1

Я использую Ghostscript 9.07 для преобразования PDF-файла с цвета на серый с использованием пакетного скрипта. Сценарий работает и преобразуется из цвета в серый, но только для первой страницы. В каждом PDF-файле, который я попробовал (12 PDF-файлов), стратегия преобразования возвращается, чтобы оставить цвет неизменным после первой страницы.ошибка преобразования цвета после одной страницы с использованием ghostscript

Сценарий:

C:\working-environment\gs9.07\bin\gswin64c -o C:\Test\converted.pdf -sDEVICE=pdfwrite -dLastPage=20 -dColorConversionStrategy=/Gray -dProcessColorModel=/DeviceGray C:\Test\original.pdf 

Примечание: Я бегу сценарий на Windows 7 ПК в качестве администратора. Параметр -dLastPage устанавливается, потому что у меня очень длинные PDF-файлы (более 500 страниц).

Ошибка:

Unable to convert color space to Gray. reverting strategy to LeaveColorUnchanged. 

Примечание: я использовал руководство Oracle и Postgress, потому что я хочу, чтобы увидеть производительность тоже.

ответ

2

Почти наверняка на «последующей» странице используется цветовое пространство, которое, как сообщает вам сообщение, не может быть преобразовано в DeviceGray. Не видя файл (и я действительно не хочу использовать файл с 500 + страницами в качестве примера), я не могу сказать вам, что вызывает у вас проблему. Если вы можете сделать небольшой файл, который показывает это, я буду смотреть на него.

Обратите внимание: это не ошибка, это предупреждение. Ошибка приведет к отмене задания.

Новое управление цветом в следующем выпуске Ghostscript должно означать, что это больше не происходит.

[EDIT]

Для меня этот файл дает предупреждение на первой странице, независимо от того, использую ли я текущий код или освобожденный 9.07. Поскольку проблема с цветовым пространством происходит в конце содержимого страницы, все содержимое до этого действительно преобразуется в серый цвет, но последующий контент отсутствует.

Проблема возникает из-за того, что в файле PDF используется// Разделение/Все цветовое пространство, чтобы нарисовать «метки принтеров» на странице. Текущий код не может преобразовать цветовое пространство/Separation и не может его сохранить, и поэтому он возвращается к «оставить цвет неизменным». Поскольку маркировка принтеров является последней вещью на странице, и потому что/All маркирует все пластины и, следовательно, кажется черным, кажется, что вся страница была преобразована, но это не так.

Разбирая файл на 3 отдельные страницы, вы получаете то, что кажется тремя отдельными «правильными» страницами, но на самом деле каждый из них частично преобразован и по-прежнему содержит метки принтеров в/Separation/All.

Текущий код в репозитории Ghostscript Git, когда он настроен на использование новой схемы CMS, преобразовывает этот файл без предупреждений и обрабатывает многостраничный файл якобы правильно, но этот код еще не завершен. Он должен быть выпущен с GS 9.08.

+0

Спасибо за быстрый ответ, вот [тест PDF] (https://www.dropbox.com/s/fghiwjbyk619va2/test .pdf) - всего 3 страницы.Если я разбиваю каждую страницу на один файл, конвертируйте отдельные файлы, а затем снова объединяем их в один файл, но это не может быть лучшим и наиболее эффективным решением. Если я запустил свой сценарий на весь документ, стратегия преобразования цвета вернется обратно, чтобы оставить цвет неизменным после того, как SUCESSFULLY конвертирует первую страницу. –

+0

@ michael.niix PDF не существует, поэтому вы не можете проверить ни один из этих ответов, используя ваш источник – baxx

3

У меня была такая же проблема с Ghostscript 9.06. Используя pdftops -level3sep, чтобы преобразовать документ в цвета CMYK, прежде чем передавать его в Ghostscript, он решил это для меня. Пример в Баш:

gs -o converted.pdf -sDEVICE=pdfwrite -dColorConversionStrategy=/Gray \ 
    -dProcessColorModel=/DeviceGray <(pdftops -level3sep input.pdf -) 

Также попробуйте:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH \ 
    -dAutoRotatePages=/None -dUseCIEColor -sOutputFile=output.pdf input.pdf 
+0

Были проблемы с gs 9.10. Ваш ответ спас меня. Спасибо! –

+0

ни один из них не работал для меня, Ubuntu 14.04 с ghostscript 9.10. – baxx

+0

Возможно, вы хотели бы открыть отчет об ошибке. Кастинг для частичных решений/обходных решений/kludges - не лучший способ работать, если есть проблема, я бы гораздо лучше понял и исправлю это. Я не могу этого сделать, не увидев файл. Тем не менее, первое, что вы должны попробовать, это обновить ** текущую ** версию Ghostscript, которая составляет 9,16, 9,10, составляет 2 года, и, конечно же, исправления ошибок, о которых сообщалось. – KenS