गुणवत्ता नुकसान के बिना पीडीएफ से पीडीएफ; gscan2pdf


51

जब मैं एक पीडीएफ फाइल को बदल कर jpg फाइल का उपयोग कर रहा हूँ

convert -quality 100 file.pdf page_%04d.jpg

मेरे पास सराहनीय गुणवत्ता हानि है।

हालांकि अगर मैं निम्नलिखित कार्य करता हूं, तो गुणवत्ता हानि नहीं (ध्यान देने योग्य) है:

Gscan2pdf प्रारंभ करें, फ़ाइल-> आयात चुनें (और file.pdf चुनें)। फिर gscan2pdf की अस्थायी निर्देशिका पर जाएं। कई पीएमएन फाइलें (पीडीएफ-फाइल के हर पृष्ठ के लिए एक) हैं। अब मैं करता हूँ

  for file in *.pnm; do            
  convert $file $file.jpg done

परिणामी jpg-फ़ाइलें (लगभग) मूल पीडीएफ के समान गुणवत्ता की हैं (जो कि मुझे चाहिए)।

अब मेरा सवाल है, अगर वहाँ एक साधारण कमांड लाइन तरीका है पीडीएफ फाइल को बदलने के लिए jpg फ़ाइलों को ध्यान देने योग्य गुणवत्ता हानि के बिना? (उपरोक्त समाधान बहुत जटिल और समय लेने वाला है)।


आपके प्रश्नों में स्पष्ट नहीं है कि क्या आप अपने पीडीएफ में पाठ और वेक्टर ग्राफिक्स के बारे में बात करते हैं, या क्या आप एम्बेडेड छवियों को निकालने का मतलब है।
asoundmove

जवाबों:


92

यह स्पष्ट नहीं है कि आपको "गुणवत्ता हानि" से क्या मतलब है। इसका मतलब बहुत सारी अलग-अलग चीजें हो सकती हैं। आप चित्रण के लिए कुछ नमूने पोस्ट कर सकते हैं? शायद खराब गुणवत्ता और अच्छी गुणवत्ता वाले संस्करणों में से एक ही खंड को काट लें (आगे की गुणवत्ता के नुकसान से बचने के लिए पीएनजी के रूप में)।

शायद आपको -densityउच्च डीपीआई में रूपांतरण करने के लिए उपयोग करना होगा:

convert -density 300 file.pdf page_%04d.jpg

(आप आवश्यक कर सकते हैं -units PixelsPerInchया -units PixelsPerCentimeterयदि आवश्यक हो। मेरी प्रति ppi में चूक कर सकती है।)

अद्यतन: जैसा कि आपने बताया, gscan2pdf(जिस तरह से आप इसका उपयोग कर रहे हैं) केवल pdfimages( पॉपलर से ) के लिए एक आवरण है । इनपुट के रूप में पीडीएफ दिए pdfimagesजाने पर वही काम नहीं convertकरता है।

convert पीडीएफ लेता है, इसे कुछ संकल्प पर प्रस्तुत करता है, और परिणामस्वरूप बिटमैप को स्रोत छवि के रूप में उपयोग करता है।

pdfimagesएम्बेडेड बिटमैप छवियों के लिए पीडीएफ के माध्यम से देखता है और हर एक को एक फ़ाइल में निर्यात करता है। यह बस पीडीएफ में किसी भी पाठ या वेक्टर ड्राइंग कमांड को अनदेखा करता है।

नतीजतन, अगर आपके पास एक पीडीएफ है जो बिटमैप्स की एक श्रृंखला के चारों ओर सिर्फ एक आवरण है, pdfimagesतो उन्हें निकालने का एक बेहतर काम करेगा, क्योंकि यह आपको मूल आकार में कच्चा डेटा प्राप्त करता है। आप शायद -jविकल्प का उपयोग भी करना चाहते हैं pdfimages, क्योंकि एक पीडीएफ में कच्चा जेपीईजी डेटा हो सकता है। डिफ़ॉल्ट रूप से, pdfimagesसब कुछ PNM प्रारूप में कनवर्ट करता है, और JPEG> PPM> JPEG को परिवर्तित करना एक हानिकारक प्रक्रिया है।

इसलिए कोशिश करें

pdfimages -j file.pdf page

आप या पालन करने के लिए है कि एक के साथ की जरूरत नहीं हो सकता है convertके लिए .jpg(किस प्रारूप बिटमैप पीडीएफ उपयोग कर रहा था पर निर्भर करता है) कदम।

मैंने इस कमांड को एक पीडीएफ पर आज़माया था जिसे मैंने जेपीईजी छवियों के अनुक्रम से खुद बनाया था। निकाले गए जेपीईजी स्रोत छवियों के समान बाइट-फॉर-बाइट थे। आप इससे उच्च गुणवत्ता प्राप्त नहीं कर सकते।


+1 मैं बहुत खुश हूं कि मैंने आपके लिए प्रेरित किए गए आपके एक वाक्य को गलत तरीके से प्रस्तुत करने वाले स्नोबेरी को प्रस्तुत नहीं किया और वास्तव में पीडीएम्जेस की कोशिश की - शायद सबसे उपयोगी कार्यक्रम जो मैंने महीनों में उपयोग किया है! मैं हर किसी को इसे आज़माने के लिए प्रोत्साहित करता हूँ!
ixtmixilix

@ixtmixilix, मैं उत्सुक हूं। आपने क्या गलत किया, और कैसे?
cjm

बड़िया! मेरा दिन हल किया। धन्यवाद!
गप्पेटेव्स डी'कोन्स्टोनजो

convertबड़े PDF के लिए भी अव्यावहारिक है। उदाहरण के लिए, 700 6-मेगापिक्सेल पृष्ठों की पुस्तक को संसाधित करने के लिए 45 जीबी मेमोरी ली गई। यह भी की तुलना में लगभग एक हजार गुना अधिक समय लगा pdfimages
केमिली गौडेय्यून

दूसरे तरीके के लिए, छवियों को एक पीडीएफ में बदलें, या बेहतर, पीडीएफ में छवियों को लपेटें, img2pdf का उपयोग करें, यहां: gitlab.mister-muffin.de/josch/img2pdf (पीडीएफ में jpg और jpg2000)।
एरिक

4

जैसा कि छात्र का जवाब pdfimagesहै एक अच्छा विकल्प है। यदि आप सही डीपीआई निर्दिष्ट करते हैं तो मेरे अनुभव से gsऔर convertखराब गुणवत्ता के लिए निर्यात करें।

लेकिन अगर पीडीएफ में प्रति पृष्ठ कई परतें pdfimagesकाम नहीं करती हैं और परतों को अलग-अलग छवि के रूप में निकालती है, तो उस स्थिति inskcapeमें पृष्ठ को देखने के लिए निर्यात करना सबसे अच्छा है ।

यह वे कमांड हैं जिनका मैं उपयोग करता हूं:

pdftk combined_to_do.pdf burst output pg_%04d.pdf
ls ./pg*.pdf | xargs -L1 -I {}  inkscape {} -z --export-dpi=300 --export-area-drawing --export-png={}.png

पहला कमांड सभी पेजों को विभाजित करता है दूसरा कमांड पेज को पेज टू पीएनजी में परिवर्तित करता है। आप उन्हें पीएनजी रख सकते हैं या बस उन्हें जेपीईजी में बदल सकते हैं

ls ./p*.png | xargs -L1 -I {} convert {}  -quality 100 -density 300 {}.jpg

की तुलना में pdfimages, gsऔर ImageMagick की convertमैं inkscapeगुणवत्ता में सबसे अच्छा निर्यात पाते हैं ।


3

@cjm से प्रतिक्रिया सही है, लेकिन यदि आप GUI को पसंद करते हैं और सभी पीडीएफ पृष्ठों को रेंडर नहीं करना चाहते हैं, तो बस कुछ छवि प्राप्त करने के लिए, जिम्प का उपयोग करें।

एक पीडीएफ खोलें जिम्प के साथ आपको एक आयात विंडो मिल जाएगी जिसमें सभी पृष्ठ प्रदान किए गए हैं। आप जो भी पेज चाहते हैं उसे चुनें और 600 पिक्स / इंच पर रिज़ॉल्यूशन सेट करें (मैंने पाया कि कई मामलों में 300 बहुत अधिक तेज है)। "फ़ाइल / निर्यात" के साथ इच्छित प्रारूप को सहेजें

वैसे भी, कमांड लाइन से वांछित पृष्ठों का चयन करने के लिए एक ध्वज होना चाहिए।


2

Gscan2pdf स्रोत कोड को देखकर मैंने देखा कि यह pdfimages का उपयोग करता है। तो pdfimages file.pdf pageपरिणाम होगा page-001.ppm, page-002.ppmआदि।


pdfimages वास्तव में काम करता है
Eduard Florinescu

2

आपके प्रश्न में स्पष्ट नहीं है कि क्या आप अपने पीडीएफ में पाठ और वेक्टर ग्राफिक्स के बारे में बात करते हैं, या क्या आपके पीडीएफ में एम्बेडेड चित्र हैं।

Gscan2pdf क्या है, इसके बारे में पढ़ने के बाद, मेरा अनुमान है कि आपकी पीडीएफ फाइलों में (केवल) एम्बेडेड ग्राफिक्स हैं।

convertसामग्री क्या है, इसके लिए बिना आपकी पीडीएफ़ अनिवार्य रूप से "प्रिंट" करता है। जैसे @cjm सुझाव देता है, आप प्रिंट घनत्व को बदलना चाह सकते हैं। यह वेक्टर ग्राफिक्स के लिए गुणवत्ता बढ़ाने का एकमात्र तरीका है।

यदि इसके बजाय, आप जो करना चाहते हैं, वह एंबेडेड इमेज (जैसे कि gscan2pdf की तरह लगता है) निकालें, घनत्व का अनुमान लगाने से आमतौर पर या तो गुणवत्ता की हानि या आवश्यकता से अधिक गुणवत्ता (और डिस्क स्थान की बर्बादी) हो जाएगी। उत्तर तो पीडीएफ प्रिंट करने के बजाय छवि को निकालने के लिए है। इस लेख को देखें जो मूल रूप से pdfimagesगुणवत्ता के नुकसान के बिना छवियों को निकालने के लिए उपयोग की वकालत करता है ।

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