GhostScript PDF в PCL Черно-белый без оттенков серого

У меня есть процесс преобразования PDF-файлов в PCL для автоматической печати, но качество оставляет желать лучшего. Вот тестовый код, который я должен показать плохое качество:

gs -dBATCH -dNOPAUSE -q -sDEVICE=ljetplus -sOutputFile=grayscaletest.pcl -f grayscaletest.pdf

Вот как Grayscaletest.pdf выглядит до: GhostScript PDF в PCL Черно-белый без оттенков серого И как Grayscaletest.pcl выглядит после: GhostScript PDF в PCL Черно-белый без оттенков серого

Я понимаю, что он делает это из-за устройства ljetplus, но это единственное устройство, которое я нашел, которое будет работать для того, что мне нужно. Итак, я хочу преобразовать все оттенки серого в черный. Я попробовал решение, найденное здесь (Гитхаб) и здесь (суперпользователь), но ничего не сделал. Я даже не могу заставить это решение работать из PDF в PDF, оно остается прежним.

Версия GhostScript 9.06. Любая помощь в улучшении качества с помощью ljetplus или просто преобразовании всего в черно-белое без оттенков серого будет оценена по достоинству.

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
Включение UTF-8 в jsPDF с помощью Angular
Включение UTF-8 в jsPDF с помощью Angular
Привет, разработчики, я предполагаю, что вы уже знаете, как экспортировать pdf через jsPDF. Если ответ отрицательный, то вы можете ознакомиться с моей...
0
0
954
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ну, это черно-белый вывод, он был полутонирован для получения 1-битного вывода из 8-битного ввода. Независимо от того, что вы делаете, если ваше устройство поддерживает только 1-битный вывод, вам всегда придется применять какое-то экранирование для представления оттенков серого или цвета.

Вы не даете никаких подсказок относительно того, почему ljetplus — единственное устройство, которое вы можете использовать. Не зная, почему это будет трудно дать какой-либо конкретный совет.

Однако....

Первым делом обновите свою версию Ghostscript. Текущая версия — 9.27, той, которую вы используете, больше 6 лет.

Экран выглядит грубым, разрешение ljetplus по умолчанию составляет 300 dpi, подходит ли оно для вашего принтера? Если нет, вы захотите установить более высокое разрешение, это даст вам более качественный экран. В наши дни большинство устройств PCL имеют разрешение 600 dpi или выше.

Предполагая, что ваш PDF-файл не содержит полутонов, следующее, что нужно сделать, — это поэкспериментировать с параметрами экранирования, доступными в Ghostscript. Вы можете попробовать переключатели, описанные здесь:

https://www.ghostscript.com/doc/9.27/Use.htm#Rendering_parameters

Вы также можете использовать экранирование PostScript, но это сложнее реализовать, если вы уже не понимаете PostScript. Есть также стохастические экраны, доступные в Ghostscript, но я не знаю, насколько комфортно вы работаете с PostScript, и я не хочу идти по этому пути.

Вы, конечно, можете использовать Ghostscript для рендеринга в растровое изображение с высоким разрешением, смешать его с монохромным с помощью манипуляций с изображением по вашему выбору, а затем вывести обратно в PDF или PostScript, или в формат изображения, который у Ghostscript есть программа для чтения (например, viewpbm. ps в каталоге ghostpdl/lib).

ImageMagick, вероятно, может сделать все вышеперечисленные шаги за вас, а затем, когда у вас есть монохромный входной файл, вы можете просто запустить его через Ghostscript, чтобы получить выходной файл PCL.

ljetplus был единственным устройством, которое работало. Он должен работать на многих разных принтерах, и не все имеют одинаковую версию PCL. Когда я использую другие устройства, такие как pxlmono, это просто дает мне много страниц символов ASCII на большинстве принтеров, на которых я тестировал. Вероятно, я смогу убедить нашего системного администратора обновить GhostScript, но это может занять некоторое время. Мы рассмотрели ImageMagick в начале этого проекта, возможно, стоит изучить его снова. Вы правы, полагая, что у меня очень мало знаний о кодировании PS, но я готов его изучить. Я буду обновлять с тем, что я пытаюсь.

TheLittlePeace 28.05.2019 21:25

Что ж, PXL — это совершенно другой язык, чем PCL, он более современный. Если вы используете «наименьший общий знаменатель» для всех своих принтеров, я боюсь, что вы столкнетесь с ухудшением качества по сравнению с исходным управлением принтерами. Если у вас нет парка старых принтеров, я был бы удивлен, если бы многие из них действительно имели разрешение 300 dpi. Если вы используете более 600 dpi принтеров с разрешением 300 dpi, то вы получите одну четверть количества оттенков серого, которые можно было бы использовать, что, очевидно, будет выглядеть хуже, чем необходимо.

KenS 29.05.2019 09:06

У нас есть прекрасное сочетание действительно старых и действительно новых принтеров, и неизвестно, где их можно напечатать :) Я попробовал переключатели, которые вы связали, и ни один из них не сработал (вероятно, потому, что он все еще в 1-бит). Существуют ли какие-либо устройства, на которых я мог бы попытаться использовать эту печать как минимум в 8-битном режиме, которые работают с любым принтером с поддержкой PCL? Возможно, в более новой версии, чтобы я мог использовать это, чтобы убедить системного администратора?

TheLittlePeace 30.05.2019 15:11

В более новых версиях Ghostscript нет новых устройств для PCL, PCL — «зрелая» технология, поэтому нам не нужны новые устройства. Доступные устройства включают cdeskjet, cdj550, cdjcolor, cdjmono, deskjet, djet500, djet500c, laserjet, lj250, ljet2p, ljet3, ljet3d, ljet4, ljet4d, ljetplus. Я считаю, что все это принтеры PCL, есть также pjxl, pjxl300, pxlcolor и pxlmono, которые являются устройствами PCL XL. Боюсь, я не знаю, какой из них поддерживает цвет или оттенки серого навскидку. Я бы предложил увеличить разрешение до 600 в качестве первого шага.

KenS 30.05.2019 16:38

Что касается обновления версии Ghostscript, то в используемой вами версии есть ряд критических уязвимостей, включая удаленное выполнение кода. Ваш системный администратор должен серьезно подумать об обновлении в срочном порядке. Вы также должны добавить -dSAFER в свою командную строку, если вы этого не сделаете, даже обновление до новой версии вам не поможет.

KenS 30.05.2019 16:39

Изменение его на 600 DPI, безусловно, помогло. Я даже не думал об этом по умолчанию с очень низким DPI, и я не сложил два и два. Спасибо!

TheLittlePeace 30.05.2019 16:43

Я рад, что это помогло!

KenS 30.05.2019 18:14

Хорошо, есть новая проблема, вызванная изменением разрешения, возможно, я просто делаю это неправильно - у меня есть немного PS, чтобы немного настроить поля, чтобы принтер не обрезал верх: -c "< </PageOffset [0-30]>> setpagedevice". Когда я не устанавливаю разрешение, это работает как шарм. Когда я указываю -r600, он полностью игнорирует мой PS-код... Я пытался изменить порядок команд, но безрезультатно. Есть ли другой способ, которым я должен установить разрешение?

TheLittlePeace 03.06.2019 15:31

Это должно сработать, но теперь вы смешиваете PostScript и PDF, так что в какой-то степени все ставки сняты. Вы можете попробовать не устанавливать разрешение с помощью -r и установить его с помощью вызова setpagedevice, добавив /HWResolution [600 600] в этот словарь.

KenS 03.06.2019 15:38

Ни то, ни другое не сработало ... Я собираюсь опубликовать это как новый вопрос, так как он отклонился от оригинала. Я понял, что какие это делает, но не как это исправить.

TheLittlePeace 04.06.2019 15:56

Другие вопросы по теме