Ghostscript - получить "pdfsettings = / ebook" в отдельные аргументы? - PullRequest
0 голосов
/ 21 января 2019

Я создаю PDF для RIP-движка.Иногда мне приходится конвертировать все шрифты в контуры, и, возможно, 1/1000 этих PDF-файлов застрянет при копировании.Для преобразования в контуры я использую:

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dNoOutputFonts -sOutputFile outlined_output.pdf input.pdf

Когда это происходит, я ранее просто открывал PDF в Acrobat и использовал вместо этого PitStop для конвертации в контуры, поскольку я думал, что проблема заключалась в способе контурирования Ghostscript.

Теперь я заметил, что если я просто открою тот же самый PDF-файл, который застрял при копировании в Acrobat 9 Standard, и сохраню его в другом месте, он будет просто скопирован.

Затем я попробовал кучу gs-команд и обнаружил, что если я использую -dPDFSETTINGS = / screen или / ebook, то все будет нормально, но не при использовании / printer или / prepress.Из соображений качества / screen и / ebook не в порядке.

Я пытался понять, что отличается от ebook и принтера.

/ ebook

gs   -q   -dNODISPLAY   -c ".distillersettings /ebook get {exch ==only ( ) print ===} forall quit" | sort

Дает:

/AutoRotatePages /All
/CannotEmbedFontPolicy /Warning
/ColorACSImageDict << /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.76 /ColorTransform 1 >>
/ColorConversionStrategy /sRGB
/ColorImageDownsampleType /Average
/ColorImageResolution 150
/CompatibilityLevel 1.5
/CreateJobTicket false
/DoThumbnails false
/EmbedAllFonts true
/GrayACSImageDict << /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.76 /ColorTransform 1 >>
/GrayImageDownsampleType /Average
/GrayImageResolution 150
/MonoImageDownsampleType /Subsample
/MonoImageResolution 300
/NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats]
/PreserveEPSInfo false
/PreserveOPIComments false
/PreserveOverprintSettings false
/UCRandBGInfo /Remove

И / принтер

gs   -q   -dNODISPLAY   -c ".distillersettings /ebook get {exch ==only ( ) print ===} forall quit" | sort

Дает:

/AutoRotatePages /None
/CannotEmbedFontPolicy /Warning
/ColorACSImageDict << /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] /QFactor 0.4 /ColorTransform 1 >>
/ColorConversionStrategy /UseDeviceIndependentColor
/ColorImageDownsampleType /Average
/ColorImageResolution 300
/CompatibilityLevel 1.7
/CreateJobTicket true
/DoThumbnails false
/EmbedAllFonts true
/GrayACSImageDict << /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] /QFactor 0.4 /ColorTransform 1 >>
/GrayImageDownsampleType /Average
/GrayImageResolution 300
/MonoImageDownsampleType /Subsample
/MonoImageResolution 1200
/NeverEmbed []
/PreserveEPSInfo true
/PreserveOPIComments true
/PreserveOverprintSettings true
/UCRandBGInfo /Preserve

Теперь я подумал, могу ли я взять параметры / ebook в аргументы командной строки иотрегулируйте или удалите одну за другой, пока я не найду правильную команду, которая сделает pdf rip хорошим.Как я могу прочитать из примеров в Интернете, -dAutoRotatePages = / None является правильным аргументом.Добавление «-d» вместе с «=» выглядит правильно?Кроме того, NeverEmbed, ColorACSImageDict и GrayACSImageDict должны вызываться из "-c" (https://www.ghostscript.com/doc/9.22/VectorDevices.htm#note_13)

EDIT: новая команда, основанная на рекомендациях KenS:

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite
-dAutoRotatePages=/All \
-dCannotEmbedFontPolicy=/Warning \
-dColorConversionStrategy=/sRGB \
-dColorImageDownsampleType=/Average \
-dColorImageResolution=150 \
-dCompatibilityLevel=1.5 \
-dCreateJobTicket=false \
-dDoThumbnails=false \
-dEmbedAllFonts=true \
-dGrayImageDownsampleType=/Average \
-dGrayImageResolution=150 \
-dMonoImageDownsampleType=/Subsample \
-dMonoImageResolution=300 \
-dPreserveEPSInfo=false \
-dPreserveOPIComments=false \
-dPreserveOverprintSettings=false \
-dUCRandBGInfo=/Remove \
-sOutputFile=final_output.pdf \
-c '<</ColorACSImageDict << /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.76 /ColorTransform 1 >>  <</GrayACSImageDict << /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.76 /ColorTransform 1 >> <</NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats] >> setdistillerparams' \
-f outlined_output.pdf

Эта команда создает PDF, который все ещезастревает. Так что же я делаю не так, где-то неправильно форматирование? Как должны выглядеть аргументы, чтобы они были в точности похожи на / ebook?

У кого-то есть прямые предположения о том, в чем может быть разница между / ebook и /принтер, который может привести к зависанию PDF-файла?

С наилучшими пожеланиями Niclas

1 Ответ

0 голосов
/ 21 января 2019

PDFSETTINGS содержатся в ghostpdl / Resource / Init / gs_pdfwr.ps, так что вы можете увидеть, как они установлены.

Вам не нужно (и не следует) помещать каждый фрагментPostScript в собственной скобке -c / -f.Откройте PostScript с помощью -c, отправьте нужную программу PostScript, а затем закройте ее с помощью -f.

Не используйте .setpdfwrite, или, если необходимо, не используйте его несколько раз, что выиграло 'Это не поможет.

Я бы предложил взять последнюю имеющуюся у вас командную строку, а затем удалить команды по одной, пока ваш файл не заработает.Тогда вы узнаете, какая настройка вызывает у вас проблему.

Я бы также посоветовал вам, как только вы узнаете об этом, открыть отчет об ошибке с файлом образца и командной строкой, в которых обнаружена проблема, чтобы кто-нибудьможет исправить это ....

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

[РЕДАКТИРОВАТЬ]

Если я правильно вас понял, PDF-файл, созданный Ghostscript, застревает при отправке этого PDF-файла.«другому потребителю PDF».

Так что вам действительно нужно определить, что именно не нравится устройству.

Я предполагаю, что если вы используете pdfwriteбез параметров (например, gs -sDEVICE=pdfwrite -o out.pdf <input.pdf>) результирующий файл PDF работает как положено?

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

В этот момент возьмите нужные вам PDFSETTINGS и либо примените каждый из переключателей по отдельности, либо установите -dPDFSETTINGS, а затем поверните off элемент управления, вызывающий проблему, путем установки его после установки PDFSETTINGS.

...