अन्य उत्तर पहले से ही कवर "शब्दकोशों क्या हैं?" आपके प्रश्न का हिस्सा। अब चलिए पर जाएं "घोस्टस्क्रिप्ट उन्हें कैसे एक्सेस कर सकता है?"
शायद प्रश्न होना चाहिए: "मैं (एक पावर उपयोगकर्ता, डेवलपर, एक गीक ...) कैसे पहुंच सकता हूं?" (Ghostscript हो सकता है)
आप बाहर किसी भी सुलभ शब्दकोश की सामग्री है कि अपने पोस्टस्क्रिप्ट दुभाषिया के लिए जाना जाता है मुद्रित कर सकते हैं एक सरल पोस्टस्क्रिप्ट कार्यक्रम एक लाइनर लिख कर - या द्वारा बस कार्यक्रम के साथ दुभाषिया (Ghostscript) बुला कमांडलाइन पर कोड सौंप दिया गया (-c ...
)।
आपको इसके लिए संबंधित शब्दकोश का नाम केवल जानने की जरूरत है।
आइए, एक दिलचस्प जैसे आंतरिक Ghostscript शब्दकोश पर नजर डालते हैं, .distillersettings
कहा जाता है:
gs \
-dNODISPLAY \
-c ".distillersettings {exch ==only () print ==} forall quit"
परिणाम:
/default -dict-
/prepress -dict-
/PSL2Printer -dict-
/ebook -dict-
/screen -dict-
/printer -dict-
यह पहली नज़र में बहुत आपको बता नहीं सकता है। लेकिन आप उस शब्दकोश में कुछ प्रमुख नामों को पहचान सकते हैं: /prepress
, /printer
, /screen
, /ebook
...
इन सभी में से आप -sDEVICE=pdfwrite
(घोस्टस्क्रिप्ट 'डिस्टिलर'-समान कार्यक्षमता) द्वारा किए गए आउटपुट चाहते समय सेटिंग के प्री-डिफ़ाइंड सेट के लिए एक भूतस्क्रिप्ट कमांडलाइन पर उपयोग कर सकते हैं। सेटिंग्स के ऐसे सेट के लिए पूछने के लिए, बस कमांडलाइन पर -dPDFSETTINGS=/printer
जोड़ें।
दूसरी नज़र में अब आप देखेंगे कि .distillersettings
शब्दकोश की सामग्री अनिवार्य रूप से 6 और शब्दकोशों का एक सेट है। यह 'शब्दकोशों का शब्दकोश' है।
शब्दकोश सामग्री डिफ़ॉल्ट रूप से मुद्रित नहीं होती है (ऊपर पोस्टस्क्रिप्ट कोड के साथ नहीं)। लेकिन यदि आप उन्हें चाहते हैं, तो आप उपरोक्त आदेश में मानक पोस्टस्क्रिप्ट भाषा ऑपरेटर ==
के बजाय ===
नामक एक घोस्टस्क्रिप्ट-विशिष्ट प्रक्रिया का उपयोग कर सकते हैं। यह प्रक्रिया ==
के समान व्यवहार करती है, यह निष्पादित करती है कि यह शब्दकोशों का विस्तार करता है और सभी कुंजी प्रिंट करता है: उनमें वर्णित मूल्य जोड़े।
कि ===
प्रक्रिया के साथ सावधान रहें:-dict-
आप विस्तार करने के लिए veeeeeery लंबा हो सकता है की कोशिश कर रहे हैं और आप अपने दृष्टि ढीली हो जायेगी। :-)
हमारे वर्तमान मामले में लेकिन यह अभी भी प्रबंधनीय है:
gs \
-dNODISPLAY \
-c ".distillersettings {exch ==only () print ===} forall quit"
आउटपुट है:
/default << /Optimize false /DoThumbnails false /PreserveEPSInfo true /ColorConversionStrategy /LeaveColorUnchanged /DownsampleMonoImages false /EmbedAllFonts true /CannotEmbedFontPolicy /Warning /PreserveOPIComments true /GrayACSImageDict << /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.9 /Blend 1 >> /DownsampleColorImages false /PreserveOverprintSettings true /CreateJobTicket false /AutoRotatePages /PageByPage /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] /ColorACSImageDict << /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.9 /Blend 1 >> /DownsampleGrayImages false /UCRandBGInfo /Preserve >>
/prepress << /DoThumbnails true /MonoImageResolution 1200 /ColorImageDownsampleType /Bicubic /PreserveEPSInfo true /ColorConversionStrategy /LeaveColorUnchanged /GrayImageDownsampleType /Bicubic /EmbedAllFonts true /CannotEmbedFontPolicy /Error /PreserveOPIComments true /GrayImageResolution 300 /GrayACSImageDict << /ColorTransform 1 /QFactor 0.15 /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >> /ColorImageResolution 300 /PreserveOverprintSettings true /CreateJobTicket true /AutoRotatePages /None /MonoImageDownsampleType /Bicubic /NeverEmbed [] /ColorACSImageDict << /ColorTransform 1 /QFactor 0.15 /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >> /CompatibilityLevel 1.4 /UCRandBGInfo /Preserve >>
/PSL2Printer << /DoThumbnails false /CompatibilityLevel 1.2 /TransferFunctionInfo /Preserve /MonoImageResolution 1200 /PreserveEPSInfo true /CompressFonts true /ColorImageDownsampleType /Bicubic /GrayImageDownsampleType /Bicubic /ColorConversionStrategy /LeaveColorUnchanged /EmbedAllFonts true /ColorACSImageDict << /ColorTransform 1 /QFactor 0.15 /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >> /CannotEmbedFontPolicy /Error /PreserveOPIComments true /CompressPages true /GrayImageResolution 600 /GrayACSImageDict << /ColorTransform 1 /QFactor 0.15 /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >> /ColorImageResolution 600 /PreserveOverprintSettings true /AutoRotatePages /None /MonoImageDownsampleType /Bicubic /ASCII85EncodePages true /MaxViewerMemorySize 8000000 /NeverEmbed [] /PreserveHalftoneInfo true /UCRandBGInfo /Preserve >>
/ebook << /DoThumbnails false /MonoImageResolution 300 /ColorImageDownsampleType /Bicubic /PreserveEPSInfo false /ColorConversionStrategy /sRGB /GrayImageDownsampleType /Bicubic /EmbedAllFonts true /CannotEmbedFontPolicy /Warning /PreserveOPIComments false /GrayImageResolution 150 /GrayACSImageDict << /ColorTransform 1 /QFactor 0.76 /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] >> /ColorImageResolution 150 /PreserveOverprintSettings false /CreateJobTicket false /AutoRotatePages /All /MonoImageDownsampleType /Bicubic /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] /ColorACSImageDict << /ColorTransform 1 /QFactor 0.76 /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] >> /CompatibilityLevel 1.4 /UCRandBGInfo /Remove >>
/screen << /DoThumbnails false /MonoImageResolution 300 /ColorImageDownsampleType /Average /PreserveEPSInfo false /ColorConversionStrategy /sRGB /GrayImageDownsampleType /Average /EmbedAllFonts true /CannotEmbedFontPolicy /Warning /PreserveOPIComments false /GrayImageResolution 72 /GrayACSImageDict << /ColorTransform 1 /QFactor 0.76 /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] >> /ColorImageResolution 72 /PreserveOverprintSettings false /CreateJobTicket false /AutoRotatePages /PageByPage /MonoImageDownsampleType /Average /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] /ColorACSImageDict << /ColorTransform 1 /QFactor 0.76 /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] >> /CompatibilityLevel 1.3 /UCRandBGInfo /Remove >>
/printer << /DoThumbnails false /MonoImageResolution 1200 /ColorImageDownsampleType /Bicubic /PreserveEPSInfo true /ColorConversionStrategy /UseDeviceIndependentColor /GrayImageDownsampleType /Bicubic /EmbedAllFonts true /CannotEmbedFontPolicy /Warning /PreserveOPIComments true /GrayImageResolution 300 /GrayACSImageDict << /ColorTransform 1 /QFactor 0.4 /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >> /ColorImageResolution 300 /PreserveOverprintSettings true /CreateJobTicket true /AutoRotatePages /None /MonoImageDownsampleType /Bicubic /NeverEmbed [] /ColorACSImageDict << /ColorTransform 1 /QFactor 0.4 /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] >> /CompatibilityLevel 1.4 /UCRandBGInfo /Preserve >>
फिर भी इतना अच्छा नहीं। तो आइए बेहतर इसे पाने का प्रयास करें। जिस तरीके से हम इसे कर सकते हैं, वह हमारे पोस्टस्क्रिप्ट कोड को संशोधित करना है: हम इसे अब .distillersettings
शब्दकोश तक पहुंचने के लिए बताते हैं और इससे चाबियों में से एक का मूल्य प्राप्त करते हैं (चलो /screen
का उपयोग करें)। के बाद से हम जानते हैं कि मूल्य एक और शब्दकोश है, हम जानते हैं कि हम कुंजी का एक और सेट मिल जाएगा: जो हम उसी तरह हम पहले किया था फ़ॉर्मेट करने के लिए सक्षम हो जाएगा मान युग्म:
gs \
-q \
-dNODISPLAY \
-c ".distillersettings /screen get {exch ==only () print ===} forall quit"
अब इस अच्छे लग रहा है, नहीं करता है यह नहीं है? अपने तेज आंख पहले से ही देखा है हो सकता है
/DoThumbnails false
/MonoImageResolution 300
/ColorImageDownsampleType /Average
/PreserveEPSInfo false
/ColorConversionStrategy /sRGB
/GrayImageDownsampleType /Average
/EmbedAllFonts true
/CannotEmbedFontPolicy /Warning
/PreserveOPIComments false
/GrayImageResolution 72
/GrayACSImageDict -dict-
/ColorImageResolution 72
/PreserveOverprintSettings false
/CreateJobTicket false
/AutoRotatePages /PageByPage
/MonoImageDownsampleType /Average
/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]
/ColorACSImageDict -dict-
/CompatibilityLevel 1.3
/UCRandBGInfo /Remove
:: अपने आप को देखें कुंजी मूल्यों के कुछ फिर से शब्दकोशों हैं। आप उपरोक्त आदेश को फिर से रहस्यों को हल करने कि /GrayACSImageDict -dict-
और की तरह छुपा रख सकते हैं दूसरा ==
के स्थान पर एक ===
के साथ इस समय का उपयोग करने के लिए स्वतंत्र हैं ...
किसी भी मामले में, अब आप जानते हैं कि आप क्या बचाने के बस -dPDFSETTINGS=/screen
का उपयोग कर के बजाय सभी एकल इस /screen
शब्दकोश में एम्बेडेड मापदंडों गणना करके टाइपिंग ...
और तुम भी पता है कि एकल मान आप ओवरराइड करने के लिए कि आप सामान्य 'स्क्रीन' गुणवत्ता उत्पादन करना चाहिए की जरूरत है, लेकिन पर अंतर के साथ सभी फ़ॉन्ट एम्बेड किए गए:
gs \
-o out.pdf \
-sDEVICE=pdfwrite \
-dPDFSETTINGS=/screen \
-c "<</NeverEmbed [ ] /AlwaysEmbed [/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 input.pdf
आप Ghostscript internals के बारे में बहुत सारी रोचक चीजों का पता लगा सकते हैं, अगर आप केवल उन शब्दकोशों का नाम जानते हैं जो इसका उपयोग करते हैं।:-)
विस्तृत उत्तर के लिए बहुत धन्यवाद, @pipitas! यदि आपके पास समय है, तो क्या आप "_the दुभाषिया [] को एक नाम_ ढूंढने" का एक छोटा 'भूत-स्क्रिप्ट' टर्मिनल उदाहरण भी जोड़ सकते हैं (जो "_dusdict' को" systemdict'_ "से पहले खोजा जा सकता है, और संभवतः एक ऑपरेटर ओवरराइटिंग)? बहुत धन्यवाद फिर - चीयर्स! – sdaau
@sdaau: मेरा अन्य उत्तर आपको दिखाता है कि शब्दकोश '.distillersettings' में नाम/कुंजी'/स्क्रीन' को कैसे देखना है: यह '.distillersettings/स्क्रीन get' के रूप में सरल है। 'Get' ऑपरेटर ऑपरेंड स्टैक पर कुंजी (यदि पाया गया) का मान रखता है (यदि कोई' अपरिभाषित 'त्रुटि नहीं मिलेगी)। अब जब कुंजी का मूल्य ढेर पर है, तो बाकी कोड स्निपेट बस इसे वहां लाता है, इसे थोड़ा और अधिक अच्छी तरह से दिखने के लिए थोड़ा सा प्रारूप बनाता है और इसकी सामग्री को प्रिंट करता है ... –
बहुत धन्यवाद, @pipitas - बहुत सराहना की! – sdaau