pdftk कम्प्रेशन विकल्प


94

मैं निम्नलिखित कमांड लाइन का उपयोग करके पीडीएफ को संपीड़ित करने के लिए pdftk का उपयोग करता हूं

pdftk file1.pdf output file2.pdf compress

यह काम करता है क्योंकि मेरी फ़ाइल का वजन घट गया है।

क्या संपीड़न को बदलने के लिए [विकल्प] हैं ???

या शायद अन्य समाधान मेरी फ़ाइल को संपीड़ित करने के लिए? यह भारी है क्योंकि कुछ ग्राफिक्स में बहुत सारे बिंदु हैं । उदाहरण के लिए इन ग्राफ़ को jpg में बदलने और कम्प्रेशन को अनुकूलित करने का कोई तरीका है?


1
मेरे अनुभव से, यह निर्भर करता है कि आपके पीडीएफ के अंदर क्या है। यदि यह उदाहरण के लिए कई बिंदुओं वाला एक ग्राफ़ है, तो सबसे अच्छा उपाय यह है कि ग्राफ़ को png में परिवर्तित करें और इस png को PDF में शामिल करें।
रॉकसाइंस

जवाबों:


122

मुझे एक ही समस्या थी और दो अलग-अलग समाधान मिले ( अधिक जानकारी के लिए इस धागे को देखें)। दोनों ने मेरे असम्पीडित पीडीएफ के आकार को नाटकीय रूप से कम कर दिया।

  • पिक्सेलयुक्त (हानिपूर्ण):

    convert input.pdf -compress Zip output.pdf
    
  • Unpixelated (दोषरहित, लेकिन थोड़ा अलग तरीके से प्रदर्शित हो सकता है):

    gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH  -dQUIET -sOutputFile=output.pdf input.pdf
    

संपादित करें : मैंने सिर्फ एक और विकल्प की खोज की (दोषरहित संपीड़न के लिए), जो कि गंदा जीएस कमांड से बचता है। qpdf एक साफ-सुथरा उपकरण है जो PDF (संपीडन / अपघटन, एन्क्रिप्शन / डिक्रिप्शन) को रूपांतरित करता है, और gs कमांड की तुलना में बहुत तेज है:

qpdf --linearize input.pdf output.pdf

3
बहुत बढ़िया। gs ने मेरे लिए काम किया, 4MB फ़ाइल को 339K में परिवर्तित किया। गुणवत्ता में कमी आई थी, लेकिन इसने मेरे उद्देश्य को पर्याप्त रूप से पूरा किया।
श्रीधर सरनोबत

27
: आप एक बेहतर गुणवत्ता के लिए "प्रिंटर" पीडीएफ सेटिंग का उपयोग कर सकते हैंgs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
imriss

10
गुणवत्ता (और इसलिए आकार) को समायोजित करने के लिए, PDFSETTINGS मान भिन्न करें। Ghostscript.com/doc/current/Ps2pdf.htm#Options
1in9ui5t

6
ध्यान दें कि gsउत्तर में कमांड बिल्कुल दोषरहित नहीं है, क्योंकि यह एम्बेडेड JPGs के रिज़ॉल्यूशन और गुणवत्ता को कम करता है। लेकिन यह दोषरहित फिर से है। पाठ, इसे पाठ के रूप में रखते हुए, जबकि convertकमांड इसे रेखापुंज ग्राफिक्स में परिवर्तित करता है।
तानीस

14
विकल्प सेट करने -dPDFSETTINGS=के लिए /ebookमेरे लिए एक बहुत अच्छा उत्पादन देता है: सुनिश्चित करें, यह संपीड़ित किया जाता है और कुछ जेपीजी कलाकृतियों दिखाई दे रहे हैं, लेकिन यह एक उचित आकार के लिए पूरी तरह से पठनीय है। धन्यवाद!
जोएल

35

यह प्रक्रिया बहुत अच्छी तरह से काम करती है

pdf2ps large.pdf very_large.ps

ps2pdf very_large.ps small.pdf

कोशिश तो करो।


8
यह एक सामान्य समाधान नहीं है। कई मामलों में, परिणामी पीडीएफ बड़ा है।
rotskoff

4
इसने मेरे लिए सभी उल्लिखित समाधानों में से सबसे अच्छा काम किया। कुछ बड़ी छवियां 23MB से 1.4MB तक कम से कम गुणवत्ता के नुकसान के साथ चली गईं।
एरंडीआर

1
@rotskoff संभवतः कोई सामान्य समाधान नहीं है क्योंकि विभिन्न प्रकार के दस्तावेज़ हैं। हालाँकि मैं आपकी बात देखता हूँ। हमारे लिए सबसे अच्छा काम करने वाले सॉफ़्टवेयर का पता लगाना अच्छा होगा।
tiktak

धन्यवाद, यह मेरे लिए काम किया, जबकि qpdf और gs ने आउटपुट फ़ाइल के आकार को कम नहीं किया।
सेबस्टियन

1
जैसा कि यहां बताया गया है कि इस पद्धति का एक और दोष यह है कि यह दस्तावेज़ के अंदर यूआरएल लिंक को तोड़ देगा।
ptomato

30

एक पीडीएफ को संपीड़ित करने की कोशिश कर रहा हूं जिसे 400ppi टिफ़ के साथ बनाया गया था, ज्यादातर 8-बिट, कुछ 24-बिट, PackBits tiff2pdfसंपीड़न के साथ, ज़िप / डीफ़्लैट के साथ संपीड़ित का उपयोग करके । इन विधियों में से हर एक के साथ एक समस्या: उपरोक्त विधियों में से किसी ने भी बुकमार्क टीओसी को संरक्षित नहीं किया है जिसे मैंने एक्रोबैट प्रो एक्स में मैन्युअल रूप से बनाया है । इसके ebookलिए अनुशंसित सेटिंग भी नहीं gs। निश्चित रूप से, मैं टीओसी के साथ मूल की एक प्रति खोल सकता था, Replace pagesलेकिन दुर्भाग्य से, इन विधियों में से किसी ने भी शुरू करने के लिए संतोषजनक काम नहीं किया। या तो उन्होंने आकार को इतना कम कर दिया कि गुणवत्ता अस्वीकार्य रूप से पिक्सेलेट हो गई, या उन्होंने आकार को बिल्कुल भी कम नहीं किया और एक मामले में वास्तव में गुणवत्ता में कमी के बावजूद इसे बढ़ाया।

pdftk compress:

no change in size
bookmarks TOC are gone

gs screen:

takes a ridiculously long time and 100% CPU
errors:
    sfopen: gs_parse_file_name failed.                                 ? 
    | ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile
74.8MB-->10.2MB hideously pixellated
bookmarks TOC are gone

gs printer:

takes a ridiculously long time and 100% CPU
no errors
74.8MB-->66.1MB
light blue background on pages 1-4
bookmarks TOC are gone

gs ebook:

errors:
    sfopen: gs_parse_file_name failed.
      ./base/gsicc_manage.c:1050: gsicc_open_search(): Could not find default_rgb.ic 
    | ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile
74.8MB-->32.2MB
badly pixellated
bookmarks TOC are gone

qpdf --linearize:

very fast, a few seconds
no size change
bookmarks TOC are gone

pdf2ps:

took very long time
output_pdf2ps.ps 74.8MB-->331.6MB

ps2pdf:

pretty fast
74.8MB-->79MB
very slightly degraded with sl. bluish background
bookmarks TOC are gone

2
यह अत्यंत मूल्यवान अनुसंधान है (धन्यवाद!) लेकिन यह भी इतना जवाब नहीं है कि एक पल के लिए मैंने डाउन-वोटिंग के बारे में सोचा।
ndemou

3
इसका उत्तर कैसे नहीं है?
hmj6jmh

22

यदि फ़ाइल का आकार अभी भी बहुत बड़ा है, तो यह उत्पादित pdf फ़ाइल के रिज़ॉल्यूशन को डाउनकास्ट करने के लिए ps2pdf का उपयोग करने में मदद कर सकता है:

pdf2ps input.pdf tmp.ps
ps2pdf -dPDFSETTINGS=/screen -dDownsampleColorImages=true -dColorImageResolution=200 -dColorImageDownsampleType=/Bicubic tmp.ps output.pdf

अपनी आवश्यकताओं के अनुरूप परिणाम प्राप्त करने के लिए -dColorImageResolution विकल्प के मान को समायोजित करें (मूल्य DPIs में छवि रिज़ॉल्यूशन का वर्णन करता है)। यदि आपकी इनपुट फ़ाइल ग्रेस्केल में है, तो कलर को ग्रे से बदलना या उपरोक्त कमांड में दोनों विकल्पों का उपयोग करने से भी मदद मिल सकती है। -DPDFSETTINGS विकल्प को / डिफ़ॉल्ट या / प्रिंटर पर बदलकर आगे की ट्यूनिंग ठीक है । सभी संभावित विकल्पों के स्पष्टीकरण के लिए ps2pdf मैनुअल से परामर्श करें ।


1
टिप के लिए धन्यवाद। -DPDFSETTINGS के साथ मैं अपने स्कैन किए गए PDF का आकार कम कर सकता हूं
eshwar

2
धन्यवाद। मुझे नहीं लगता कि हर किसी के उपयोग के मामले के लिए एक सामान्य समाधान है - लेकिन मैंने इस धागे पर लगभग हर समाधान की कोशिश की और यह एकमात्र ऐसा है जो मेरे लिए काम करता है !!! DColorImageResolution पैरामीटर "ट्यून" करने में सक्षम होने के नाते महत्वपूर्ण था - इस सरकारी साइट के लिए इसे स्वीकार करने के लिए डॉक का आकार काफी छोटा होना चाहिए लेकिन यह पर्याप्त होने योग्य था। धन्यवाद, चाचा सैम, अभी तक एक और दर्दनाक घेरा के माध्यम से कूदने के लिए :)
माइकल क्लियर

4

Gpdf को nullglob के रूप में सुझाए जाने की कोशिश करने के बाद , मैंने पाया कि मुझे केवल कप-पीडीएफ प्रिंटर का उपयोग करके समान संपीड़न परिणाम (~ 900mb से नीचे फ़ाइल ~ 30mb) प्राप्त हुए हैं। यह आसान / पसंदीदा हो सकता है यदि आप पहले से ही एक दस्तावेज देख रहे हैं और केवल एक या दो दस्तावेजों को संपीड़ित करने की आवश्यकता है।

Ubuntu 12.04 में, आप इसे स्थापित कर सकते हैं

sudo apt-get install cups-pdf

इंस्टॉलेशन के बाद, सिस्टम टूल्स > एडमिनिस्ट्रेशन > प्रिंटिंग > राइट-क्लिक करके 'PDF' को चेक करें और इसे 'enable' पर सेट करें।

डिफ़ॉल्ट रूप से, आउटपुट आपके होम डायरेक्टरी में पीडीएफ नामक एक फ़ोल्डर में सहेजा जाता है ।


4

एक-लाइन pdf2ps विकल्प (ली द्वारा) वास्तव में पीडीएफ आकार में वृद्धि हुई है। हालांकि, दो कदम एक ने बेहतर किया। और इसे एकल इनपुट में मानक इनपुट / आउटपुट और पाइप से पुनर्निर्देशन का उपयोग करके जोड़ा जा सकता है:

pdf2ps के बड़े.पीएफडी - | ps2pdf - small.pdf

xsane द्वारा उत्पन्न PDF को 18 Mo से 630 ko तक घटा दिया!

लिंक खो गए हैं, लेकिन वर्तमान उदाहरण के लिए, यह चिंता का विषय नहीं है ... और वांछित परिणाम प्राप्त करने का सबसे आसान तरीका था।


आप ps2pdfइसके बजाय कोशिश कर सकते हैं, @ ली के जवाब के लिए मेरी टिप्पणी देखें ।
मैड्रिड

3

pdf2ps large.pdf small.pdf दो चरणों के बजाय पर्याप्त है

pdf2ps large.pdf very_large.ps 
ps2pdf very_large.ps small.pdf

हालांकि, ps2pdf large.pdf small.pdfएक बेहतर विकल्प है।

  • ps2pdf बहुत तेज है
  • निर्दिष्ट अतिरिक्त मापदंडों के बिना, pdf2psकभी-कभी बड़ी फ़ाइल का उत्पादन होता है।

आपको यह विकल्प कहां मिला? क्या यह हाल के संस्करण में एक विशेषता है? यह मेरे लिए सही नहीं रहा। भले ही मैंने आउटपुट फ़ाइल का नाम दिया out.pdf, लेकिन यह PS फ़ाइल ( mimetype out.pdfकहती है out.pdf: application/postscript) बन गई ।
मिथक १४'१

मेरा सबसे हाल का संस्करण 9.xx है। यकीन नहीं होता
ली

मैं डेबियन स्टेबल ("स्ट्रेच") पैकेज्ड संस्करण का उपयोग कर रहा हूं, जो 9.25 है। क्या आप जांच सकते हैं कि क्या आपके पास वास्तव में एक पीडीएफ फाइल है mimetype small.pdf?
मिथक

का आउटपुट mimetype small.pdfहै small.pdf: application/pdf। मुझे लगता है कि कार्यक्रम प्रत्यय के अनुसार स्वचालित रूप से फ़िलाटाइप निर्धारित कर सकता है।
ली

1
@ मुझे याद है, मैंने परीक्षण किए। ps2pdfबेहतर है।
ली

1

मैंने qpdf का उपयोग करके फ़ाइल के आकार में बहुत कमी नहीं देखी। Pdftk के बाद सबसे अच्छा तरीका मुझे पता है कि पीडीएफ़ को पोस्टस्क्रिप्ट में बदलने के लिए घोस्टस्क्रिप्ट का उपयोग किया जाता है। PHP में आप निष्पादन का उपयोग करेंगे:

$ps = $save_path.'/psfile.ps';
exec('ps2ps2 ' . $pdf . ' ' . $ps);
unlink($pdf);
exec('ps2pdf ' .$ps . ' ' . $pdf);
unlink($ps);

मैंने कुछ मिनट पहले 490k से 71k तक pdftk आउटपुट लेने के लिए इसका उपयोग किया था।


2
PHP पूरी तरह से अनावश्यक जटिलता जोड़ता है और इस जवाब की प्रयोज्यता को
बढ़ाता है

-2

मेरे पास एक ही मुद्दा था और मैंने इस फ़ंक्शन का उपयोग व्यक्तिगत पृष्ठों को संपीड़ित करने के लिए किया था जिसके परिणामस्वरूप फ़ाइल आकार मूल आकार के 1/3 तक संकुचित हो जाता है।

for (int i = 1; i <= theDoc.PageCount; i++)
{
       theDoc.PageNumber = i;
       theDoc.Flatten();
}

1
क्या आप pdftk की C ++ लाइब्रेरी का उपयोग कर रहे हैं?
रॉकसाइंस

-3

यदि आप एक पीडीएफ को संपीड़ित करना चाहते हैं, जिसमें बहुत सारे चयन करने योग्य पाठ शामिल हैं, तो विंडोज पर आप नाइसपीडीएफ कंप्रेसर का उपयोग कर सकते हैं - " फ़्लैट " विकल्प चुनें। सब कुछ (cpdf, pdftk, gs) की कोशिश करने के बाद आखिरकार इसने मेरे 1360 पृष्ठों के पीडीएफ को 500 एमबी से 10 एमबी तक कम करने में मदद की।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.