2011-11-16 12 views
47

मैं इस साफ आदेश मिल गया एक में एकाधिक PDF मर्ज करने के लिए, Ghostscript का उपयोग कर संपीड़ित करता है।Ghostscript पीडीएफ़ विलय करने के लिए परिणाम

इनपुट के रूप में एक फ़ाइल के साथ कमांड चलाना अभी भी एक छोटे आकार के आउटपुट फ़ाइल के परिणामस्वरूप होता है।

वहाँ Ghostscript पर एक विकल्प बस पृष्ठ भी कॉपी के रूप में वे किसी भी संपीड़न कर बिना विलय पर प्रकट है?

यदि नहीं, तो यह संभव है कि Ghostscript संपीड़न इतना अच्छा है कि यह गुणवत्ता में बिल्कुल कोई नुकसान होगा है?

उत्तर

53

यहाँ कुछ additional options जिसके द्वारा आप अपनी डिवाइस के रूप में pdfwrite का उपयोग कर पारित कर सकते हैं है। उस पृष्ठ के मुताबिक यदि आप कुछ भी पास नहीं करते हैं तो -dPDFSETTINGS यह /screen के करीब कुछ सेट हो जाता है, हालांकि यह अधिक विशिष्ट नहीं होता है। आप इसे -dPDFSETTINGS=/prepress पर सेट करने का प्रयास कर सकते हैं जो केवल 300 डीपीआई से ऊपर की चीजों को संपीड़ित करना चाहिए।

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=out.pdf in1.pdf in2.pdf 

एक अन्य विकल्प pdftk है:

pdftk in1.pdf in2.pdf cat output out.pdf 
+3

पीडीएफटीके की सिफारिश करने के लिए धन्यवाद। पीडीएफ फाइलों के सरल संयोजन के लिए यह सही लगता है। –

+1

FWIW: 'pdftk' CentOS/RHEL 7. –

+0

कूल के लिए उपलब्ध नहीं है .. !! वास्तव में –

29

आकार अनुकूलन है कि आप अप्रयुक्त वस्तुओं की Ghostscript की सफाई ऊपर से आ सकती है मनाया में से कुछ अपने हाल ही में प्राप्त फ़ॉन्ट अनुकूलन सुधार (आप एक बहुत हाल ही में उपयोग करते हैं जीएस का संस्करण?!?) और संभवतः छवि पुन:/डाउन-नमूनाकरण हो सकता है। इनपुट फ़ाइल (रों) अपने सभी वस्तुओं के साथ में

  1. पढ़ें और उन्हें चित्रमय पेज के लिए अपने आंतरिक प्रारूप में तब्दील: -

    Ghostscript, अगर पीडीएफ के लिए इस्तेमाल किया> पीडीएफ रूपांतरण, मूल रूप से इस तरह चल रही है अभ्यावेदन।

  2. मैनिपुलेशन ने आंतरिक प्रारूप में पृष्ठ सामग्री में कमांडलाइन पर पूछा।
  3. एक बिल्कुल नया पीडीएफ लिखें।

इसका मतलब यह है अधिकांश के लिए पीडीएफ कि -> पीडीएफ आपरेशन आप अलग अलग आदेश और पीडीएफ वस्तुओं के लिए नंबर, और यहां तक ​​कि वस्तु के आंतरिक कोड होगा परिवर्तित हो सकती है (अपनी आँखें किसी भी खोज नहीं है, भले ही इनपुट और आउटपुट पीडीएफ के बीच मतभेद)।

डिफॉल्ट रूप से Ghostscript भी किसी भी ऑब्जेक्ट स्ट्रीम को संकुचित करेगा जो मूल फ़ाइल में असंपीड़ित है (लेकिन यह एक लापरवाही संपीड़न है)।

अब आप अपने बहुत साधारण कमांडलाइन जो जोड़तोड़ के लिए किसी भी इच्छा शामिल नहीं है के लिए, Ghostscript मान लिया गया आप -dPDFSETTINGS=/default उपयोग करना चाहते हैं, परोक्ष इस पैरामीटर सेट और उसके अनुसार चल रही है।

अब /default पीडीएफएसटीटीएसएस हैं ?!

  1. पढ़ें मैनुअल: आपके पास दो विकल्प पता लगाने के लिए किया है। बड़े table in middle of this section एक सिंहावलोकन देता है। आप देख सकते हैं कि यह एक -dPDFSETTINGS=/default स्वयं में कई दर्जन अन्य विशिष्ट सेटिंग्स के लिए एक शॉर्टेंड है जो यह दर्शाता है। दिए गए दस्तावेज का लिंक विकास कोड के वर्तमान HEAD के लिए है और आपका वास्तव में उपयोग किया गया संस्करण पाठ्यक्रम से अलग हो सकता है।

  2. इस सेटिंग के विस्तृत अर्थ के लिए प्रश्न (स्वयं का) Ghostscript। प्रश्न के उत्तर मेरे उत्तर 'Querying Ghostscript for the default options/settings of an output device...' और प्रश्न 'What are PostScript dictionaries, and how can they be accessed (via Ghostscript)?' इस पर और अधिक जानकारी दें। संक्षेप में, अपने /default PDFSETTINGS के विवरण के लिए Ghostscript क्वेरी करने के लिए, इस कमांड चलाएँ:

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

    तुम बहुत इस के समान एक परिणाम मिलना चाहिए:

    /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 
    

    केवल बात यह है कि इन से बाहर खड़ा है : आप /PageByPage से /None पर बदल सकते हैं। कमांडलाइन पर आप इसे -dAutoRotatePages=/None के रूप में रखेंगे।

    -dAntiAliasColorImage=false \ 
        -dAntiAliasGrayImage=false \ 
        -dAntiAliasMonoImage=false \ 
        -dAutoFilterColorImages=false \ 
        -dAutoFilterGrayImages=false \ 
        -dDownsampleColorImages=false \ 
        -dDownsampleGrayImages=false \ 
        -dDownsampleMonoImages=false \ 
        -dColorConversionStrategy=/LeaveColorUnchanged \ 
        -dConvertCMYKImagesToRGB=false \ 
        -dConvertImagesToIndexed=false \ 
        -dUCRandBGInfo=/Preserve \ 
        -dPreserveHalftoneInfo=true \ 
        -dPreserveOPIComments=true \ 
        -dPreserveOverprintSettings=true \ 
    

:

आप मानकों की एक पूरी सूची है जो विशेष रूप से इन पैरामीटर जोड़कर इनपुट पीडीएफ के रूप में यह संभवतः कर सकते हैं एक पासथ्रू मोड के रूप में ज्यादा रोजगार Ghostscript कहते थे देने के लिए

gs            \ 
-o output.pdf         \ 
-sDEVICE=pdfwrite        \ 
-dAntiAliasColorImage=false     \ 
-dAntiAliasGrayImage=false      \ 
-dAntiAliasMonoImage=false      \ 
-dAutoFilterColorImages=false     \ 
-dAutoFilterGrayImages=false     \ 
-dDownsampleColorImages=false     \ 
-dDownsampleGrayImages=false     \ 
-dDownsampleMonoImages=false     \ 
-dColorConversionStrategy=/LeaveColorUnchanged \ 
-dConvertCMYKImagesToRGB=false     \ 
-dConvertImagesToIndexed=false     \ 
-dUCRandBGInfo=/Preserve      \ 
-dPreserveHalftoneInfo=true     \ 
-dPreserveOPIComments=true      \ 
-dPreserveOverprintSettings=true    \ 
    input1.pdf         \ 
    input2.pdf 

अंत में, क्रिस हास अल के रूप में: तो आप इस आदेश की कोशिश कर सकते तैयार संकेत: आप pdftk का भी उपयोग कर सकते हैं यदि आप विशेष रूप से ऑप्टिमाइज़ेशन नहीं चाहते हैं कि Ghostscript डिफ़ॉल्ट रूप से लागू होता है। pdftk बस ऐसी चीजों को करने में असमर्थ है, और आप ऑपरेशन के सापेक्ष मूर्खता के लिए काफी गति प्राप्त करेंगे (लेकिन शायद घोस्टस्क्रिप्ट से भी अधिक फ़ाइल आकार आउटपुट)।

+1

'pdftk' मार्च 2016 तक सेंटोस/आरएचईएल 7 के लिए उपलब्ध नहीं है। –

+1

क्या आप' -dPDFSETTINGS = 'सेटिंग्स में से एक को लागू कर सकते हैं और फिर '-d *' सेटिंग्स के साथ केवल उनमें से एक सबसेट ओवरराइड कर सकते हैं (आपके उत्तर में) बाद में कमांड लाइन में? – CMCDragonkai

+1

@CMCDragonkai: हाँ आप कर सकते हैं। (मैंने इसका परीक्षण नहीं किया है, लेकिन अगर यह काम नहीं करता है, तो यह एक बग होगा।) –

संबंधित मुद्दे