Запрос Ghostscript для параметров / настроек по умолчанию для устройства вывода (например, «pdfwrite» или «tiffg4»)

Вэтот ответ на «параметры командной строки GhostScript для преобразования EPS в PDF»;; указано, что разрешение по умолчанию дляpdfwrite Устройство Ghostscript имеет размер 720х720, что мне изначально показалось невероятным!

Есть ли способ перечислить параметры по умолчанию устройства Ghostscript?

Ответы на вопрос(1)

Решение Вопроса

tScript, вы также можете отправлять ему фрагменты PostScript, которые не вызывают отрисовку элементов страницы, но которые запрашивают его о его внутреннем состоянии.

Если вы хотите знать, какие настройки по умолчаниюDisplay когда вы спрашиваете это черезgs some.pdf чтобы просто отобразить PDF на экране, вы можете попробовать это:

gs \
   -c "currentpagedevice {exch ==only ( ) print == } forall"

На Windows это становится:

gswin32c.exe ^
   -c "currentpagedevice {exch ==only ( ) print == } forall"

Результатом является список/SomeName somevalue пары, которые описывают настройки, используемые для отображения страниц на текущем экране.

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

gs \
   -o /dev/null \
   -dNODISPLAY \
   -c "currentpagedevice {exch ==only ( ) print == } forall"

Или в Windows:

gswin32c.exe ^
   -o nul ^
   -dNODISPLAY ^
   -c "currentpagedevice {exch ==only ( ) print == } forall"

Но это изменит возвращаемые значения запроса, потому что вы (непреднамеренно) изменили настройки устройства вывода:

gs -c "currentpagedevice {exch ==only ( ) print == } forall" | grep Resolution

Результат:

HWResolution [86.5426483 86.5426483]
/.MarginsHWResolution [1152.0 1152.0]

Сравните это с

gs \
   -o /dev/null \
   -dNODISPLAY \
   -c "currentpagedevice {exch ==only ( ) print == } forall" \
| grep Resolution

Результат:

/HWResolution [72.0 72.0]
/.MarginsHWResolution [72.0 72.0]

Поэтому, пожалуйста, избегайте этой ловушки. Я успешно впал в это несколько лет назад и даже давно не замечал этого ...

Теперь, если вы хотите запросить настройки по умолчанию для устройства записи PDF, запустите это:

gs \
  -o /dev/null \
  -sDEVICE=pdfwrite \
  -c "currentpagedevice {exch ==only ( ) print == } forall" \
| tee ghostscript-pdfwrite-default-pagedevice-settings.txt

Теперь у вас есть все настройки дляpdfwrite устройство в файле * .txt. и вы можете повторить это с некоторыми другими интересными устройствами Ghostscript, а затем сравнить их для всех их детальных различий:

for _dev in \
  pswrite ps2write pdfwrite \
  tiffg3 tiffg4 tiff12nc tiff24nc tiff32nc tiff48nc tiffsep \
  jpeg jpeggray jpegcmyk \
  png16 png16m png256 png48 pngalpha pnggray pngmono; \
do \
  gs \
    -o /dev/null \
    -sDEVICE=${_dev} \
    -c "currentpagedevice {exch ==only ( ) print == } forall" \
   | sort \
   | tee ghostscript-${_dev}-default-pagedevice-settings.txt; \
done

Довольно интересно сравнить настройки, скажем, дляpswrite а такжеps2write устройства, подобные этому (а также обнаруживают параметры, доступные для одного, но не другого устройства):

sdiff -sbB ghostscript-ps*write-default-pagedevice-settings.txt

Update:

Как вы можете себе представить, это также отличный способ сравнить разные версии Ghostscript и отследить, как настройки по умолчанию могли изменяться для разных устройств в последних выпусках. Это особенно интересно, если вы хотите узнать обо всех недавно реализованных цветовых профилях и поддержке ICC, которые теперь присутствуют в Ghostscript.

Кроме того, чтобы избежать возвращения просто-dict- для определенных значений ключей используйте=== вместо== макро.=== действует как== но также печатаетcontent словарей.

Итак, вот пример выходных данных дляpdfwrite устройство. Помните, Ghostscriptpdfwrite Устройство предназначено для обеспечения в основном той же функциональности, что иAdobe Acrobat Distiller (с дополнительной функцией, что он принимает не только PostScript в качестве входных данных, но и PDF, так что вы можете сортироватьredistill существующие файлы PDF с целью их ремонта, улучшения или иного манипулирования ими). Следовательно, Ghostscriptpdfdevice чтит большую частьsetdistillerparams Оператор, который также поддерживает оригинальный Distiller:

gs \
  -o /dev/null \
  -sDEVICE=pdfwrite \
  -c "currentpagedevice {exch ==only ( ) print === } forall" \
| sort

/%MediaDestination 0
/%MediaSource 0
/.AlwaysEmbed []
/.HWMargins [0.0 0.0 0.0 0.0]
/.IgnoreNumCopies false
/.LockSafetyParams false
/.MarginsHWResolution [720.0 720.0]
/.MediaSize [612.0 792.0]
/.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]
/ASCII85EncodePages false
/AllowIncrementalCFF false
/AllowPSRepeatFunctions false
/AlwaysEmbed []
/AntiAliasColorImages false          [*]
/AntiAliasGrayImages false           [*]
/AntiAliasMonoImages false           [*]
/AutoFilterColorImages true
/AutoFilterGrayImages true
/AutoPositionEPSFiles true
/AutoRotatePages /PageByPage
/BeginPage {--.callbeginpage--}
/Binding /Left                       [*]
/BitsPerPixel 24
/BlueValues 256
/CalCMYKProfile (None)               [*]
/CalGrayProfile (None)               [*]
/CalRGBProfile (None)                [*]
/CannotEmbedFontPolicy /Warning      [*]
/CenterPages false
/ColorACSImageDict << /Blend 1 /VSamples [2 1 1 2] /QFactor 0.9 /HSamples [2 1 1 2] >>
/ColorConversionStrategy /LeaveColorUnchanged
/ColorImageDepth -1
/ColorImageDict << /Blend 1 /VSamples [2 1 1 2] /QFactor 0.9 /HSamples [2 1 1 2] >>
/ColorImageDownsampleThreshold 1.5
/ColorImageDownsampleType /Subsample
/ColorImageFilter /DCTEncode
/ColorImageResolution 150
/ColorValues 16777216
/Colors 3
/CompatibilityLevel 1.4
/CompressEntireFile false
/CompressFonts true
/CompressPages true
/ConvertCMYKImagesToRGB false
/ConvertImagesToIndexed true
/CoreDistVersion 5000
/CreateJobTicket false               [*]
/DSCEncodingToUnicode []
/DefaultRenderingIntent /Default
/DetectBlends true                   [*]
/DetectDuplicateImages true
/DeviceGrayToK true
/DeviceLinkProfile ()
/DoNumCopies false
/DoThumbnails false                  [*]
/DocumentTimeSeq 0
/DocumentUUID ()
/DownsampleColorImages false
/DownsampleGrayImages false
/DownsampleMonoImages false
/EmbedAllFonts true
/EmitDSCWarnings false               [*]
/EncodeColorImages true
/EncodeGrayImages true
/EncodeMonoImages true
/EncryptionR 0
/EndPage {--.callendpage--}          [*]
/FirstObjectNumber 1
/FitPages false
/ForOPDFRead false
/GraphicICCProfile ()
/GraphicIntent 0
/GraphicsAlphaBits 1
/GrayACSImageDict << /Blend 1 /VSamples [2 1 1 2] /QFactor 0.9 /HSamples [2 1 1 2] >>
/GrayImageDepth -1
/GrayImageDict << /Blend 1 /VSamples [2 1 1 2] /QFactor 0.9 /HSamples [2 1 1 2] >>
/GrayImageDownsampleThreshold 1.5
/GrayImageDownsampleType /Subsample
/GrayImageFilter /DCTEncode
/GrayImageResolution 150
/GrayValues 256
/GreenValues 256
/HWResolution [720.0 720.0]
/HWSize [6120 7920]
/HaveCIDSystem false
/HaveTransparency true
/HaveTrueTypes true
/HighLevelDevice true
/ImageICCProfile ()
/ImageIntent 0
/ImageMemory 524288                  [*]
/ImagingBBox null
/InputAttributes << 59 << /PageSize [612 792] >> 36 << /PageSize [649 918] >> 13 << /PageSize [595 842] >> 49 << /PageSize [354 499] >> 26 << /PageSize [2004 2835] >> 3 << /PageSize [792 1224] >> 62 << /PageSize [595 792] >> 39 << /PageSize [612 936] >> 16 << /PageSize [297 420] >> 52 << /PageSize [1460 2064] >> 29 << /PageSize [709 1001] >> 6 << /PageSize [2448 3168] >> 42 << /PageSize [396 612] >> 19 << /PageSize [105 148] >> 55 << /PageSize [516 729] >> 32 << /PageSize [2599 3677] >> 9 << /PageSize [1684 2384] >> 45 << /PageSize [1417 2004] >> 22 << /PageSize [1296 1728] >> 58 << /PageSize [612 1008] >> 35 << /PageSize [918 1298] >> 12 << /PageSize [842 1191] >> 48 << /PageSize [499 709] >> 25 << /PageSize [2835 4008] >> 2 << /PageSize [612 792] >> 61 << /PageSize [612 792] >> 38 << /PageSize [323 459] >> 15 << /PageSize [420 595] >> 51 << /PageSize [2064 2920] >> 28 << /PageSize [1001 1417] >> 5 << /PageSize [1585 2448] >> 64 << /PageSize [0 0 524287 524287] >> 41 << /PageSize [283 420] >> 18 << /PageSize [148 210] >> 54 << /PageSize [729 1032] >> 31 << /PageSize [354 499] >> 8 << /PageSize [2384 3370] >> 44 << /PageSize [2004 2835] >> 21 << /PageSize [864 1296] >> 57 << /PageSize [1224 792] >> 34 << /PageSize [1298 1837] >> 11 << /PageSize [1191 1684] >> 47 << /PageSize [709 1001] >> 24 << /PageSize [2592 3456] >> 1 << /PageSize [792 1224] >> 60 << /PageSize [612 792] >> 37 << /PageSize [459 649] >> 14 << /PageSize [595 842] >> 50 << /PageSize [2920 4127] >> 27 << /PageSize [1417 2004] >> 4 << /PageSize [1224 1585] >> 63 << /PageSize [792 1224] >> 40 << /PageSize [612 936] >> 17 << /PageSize [210 297] >> 53 << /PageSize [1032 1460] >> 30 << /PageSize [499 709] >> 7 << /PageSize [2016 2880] >> 43 << /PageSize [2835 4008] >> 20 << /PageSize [648 864] >> 56 << /PageSize [363 516] >> 33 << /PageSize [1837 2599] >> 10 << /PageSize [73 105] >> 46 << /PageSize [1001 1417] >> 23 << /PageSize [1728 2592] >> 0 << /PageSize [612.0 792.0] >> >>
/Install {--.callinstall--}
/InstanceUUID ()
/IsDistiller true
/KeyLength 0
/LZWEncodePages false
/Margins [0.0 0.0]
/MaxClipPathSize 12000
/MaxInlineImageSize 4000
/MaxPatternBitmap 0
/MaxSeparations 3
/MaxShadingBitmapSize 256000
/MaxSubsetPct 100
/MaxViewerMemorySize -1
/MonoImageDepth -1
/MonoImageDict << /K -1 >>
/MonoImageDownsampleThreshold 1.5
/MonoImageDownsampleType /Subsample
/MonoImageFilter /CCITTFaxEncode
/MonoImageResolution 300
/Name (pdfwrite)
/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]
/NoEncrypt ()
/NoT3CCITT false
/NumCopies null
/OPM 1
/OffOptimizations 0
/Optimize false                      [*]
/OutputAttributes << 0 << >> >>
/OutputDevice /pdfwrite
/OutputFile (/dev/null)
/OutputICCProfile (default_rgb.icc)
/OwnerPassword ()
/PDFA 0
/PDFACompatibilityPolicy 0
/PDFEndPage -1
/PDFStartPage 1
/PDFX false
/PDFXBleedBoxToTrimBoxOffset [0.0 0.0 0.0 0.0]
/PDFXSetBleedBoxToMediaBox true
/PDFXTrimBoxToMediaBoxOffset [0.0 0.0 0.0 0.0]
/PageCount 0
/PageDeviceName null
/PageOffset [0 0]
/PageSize [612.0 792.0]
/ParseDSCComments true
/ParseDSCCommentsForDocInfo true
/PatternImagemask false
/Permissions -4
/Policies << /PolicyReport {--dup-- /.LockSafetyParams --known-- {/setpagedevice --.systemvar-- /invalidaccess signalerror} --if-- --pop--} /PageSize 0 /PolicyNotFound 1 >>
/PreserveCopyPage true               [*]
/PreserveDeviceN true
/PreserveEPSInfo true                [*]
/PreserveHalftoneInfo false          [*]
/PreserveOPIComments true            [*]
/PreserveOverprintSettings true
/PreserveSMask true
/PreserveSeparation true
/PreserveTrMode true
/PrintStatistics false
/ProcessColorModel /DeviceRGB
/ProduceDSC true
/ProofProfile ()
/ReAssignCharacters true
/ReEncodeCharacters true
/RedValues 256
/RenderIntent 0
/RotatePages false
/SeparationColorNames []
/Separations false
/SetPageSize false
/SubsetFonts true
/TextAlphaBits 1
/TextICCProfile ()
/TextIntent 0
/TransferFunctionInfo /Preserve
/UCRandBGInfo /Preserve
/UseCIEColor false
/UseFastColor false
/UseFlateCompression true
/UsePrologue false                   [*]
/UserPassword ()
/WantsToUnicode true
/sRGBProfile (None)                  [*]

[*] Note:

According to the official documentation, the following settings (which are supported by Adobe Acrobat Distiller) currently on Ghostscript can be set and queried, but setting them does have no effect:

/AntiAliasColorImages /AntiAliasGrayImages /AntiAliasMonoImages /AutoPositionEPSFiles /Binding /CalCMYKProfile /CalGrayProfile /CalRGBKProfile /CannotEmbedFontPolicy /ConvertImagesToIndexed /CreateJobTicket /DetectBlends /DoThumbnails /EmitDSCWarnings /EndPage /ImageMemory /LockDistillerParams /Optimize /PreserveCopyPage /PreserveEPSInfo /PreserveHalftoneInfo /PreserveOPIComments /sRGBProfile /StartPage /UsePrologue
 15 июн. 2012 г., 19:02
@sdaau: я несколько обновил и расширил исходный ответ ...
 21 июн. 2012 г., 00:21
@sdaau: вы могли бы объединить это, а также спросить"What are dictionaries in PostScript?" :-)
 20 июн. 2012 г., 23:58
@sdaau: Вам также интересно узнать, как вы можете запросить Ghostscript на содержание его внутреннегоdictionaries ?
 sdaau12 июн. 2012 г., 20:18
Вау, удивительно - большое спасибо за это, @pipitas! Я так и не понял, что такое «интерпретатор PostScript» значит до сих пор - невероятно полезно документировать эти командные подходы ... Еще раз большое спасибо - ура!
 20 июн. 2012 г., 05:16
@sdaau: другое, вероятно, полезное обновление выше.

Ваш ответ на вопрос