मेरे पास कुछ स्कैन किए गए रंग pdfs और ग्रेस्केल pdfs थे जिन्हें मैं bw में बदलना चाहता था। मैं उपयोग करने की कोशिश gs
के साथ यहाँ सूचीबद्ध कोड , और छवि गुणवत्ता अभी भी वहाँ पीडीएफ पाठ के साथ अच्छा है। हालाँकि, यह gs कोड केवल ग्रेस्केल में परिवर्तित होता है (जैसा कि प्रश्न में पूछा गया है) और अभी भी बड़े फ़ाइल आकार में है। convert
सीधे उपयोग किए जाने पर बहुत खराब परिणाम मिलते हैं।
मैं अच्छी छवि गुणवत्ता और छोटे फ़ाइल आकार के साथ bd pdfs चाहता था। मेरा समाधान gs
पीडीएफ से ग्रेस्केल bmp फ़ाइलों को निकालने के लिए उपयोग करता है, convert
उन bmps को bw को दहलीज करने और उन्हें tiff फ़ाइलों के रूप में सहेजने के लिए, और फिर tg छवियों को संपीड़ित करने के लिए img2pdf और उन सभी को एक pdf में मर्ज करें।
मैंने सीधे पीडीएफ से टिफ करने की कोशिश की, लेकिन गुणवत्ता समान नहीं है इसलिए मैं प्रत्येक पृष्ठ को bmp में सहेजता हूं। एक पेज की पीडीऍफ़ फाइल के लिए, convert
bmp से pdf में बहुत अच्छा काम करता है। उदाहरण:
gs -sDEVICE=bmpgray -dNOPAUSE -dBATCH -r300x300 \
-sOutputFile=./pdf_image.bmp ./input.pdf
convert ./pdf_image.bmp -threshold 40% -compress zip ./bw_out.pdf
कई पृष्ठों के लिए, gs
एक में कई पीडीएफ फाइलों को मर्ज किया जा सकता है, लेकिन img2pdf
जीएस की तुलना में छोटे फ़ाइल आकार की पैदावार होती है। Tg फाइलें img2pdf के इनपुट के रूप में असम्पीडित होनी चाहिए। बड़ी संख्या में पृष्ठों के लिए ध्यान रखें, मध्यवर्ती bmp और tiff फाइलें आकार में बड़ी होती हैं। pdftk
या joinpdf
बेहतर होगा यदि वे संपीड़ित पीडीएफ फाइलों को मर्ज कर सकते हैं convert
।
मुझे लगता है कि एक और अधिक सुंदर समाधान है। हालांकि, मेरी विधि बहुत अच्छी छवि गुणवत्ता और बहुत छोटे फ़ाइल आकार के साथ परिणाम उत्पन्न करती है। पाठ को bw pdf में वापस लाने के लिए, OCR को फिर से चलाएँ।
मेरी शेल स्क्रिप्ट gs, Convert और img2pdf का उपयोग करती है। जरूरत के अनुसार शुरुआत में सूचीबद्ध पैरामीटर (# पेज के स्कैन, डीपीआई, थ्रेशोल्ड%, आदि) को बदलें और चलाएं chmod +x ./pdf2bw.sh
। यहाँ पूरी स्क्रिप्ट है (pdf2bw.sh):
#!/bin/bash
num_pages=12
dpi_res=300
input_pdf_name=color_or_grayscale.pdf
bw_threshold=40%
output_pdf_name=out_bw.pdf
#-------------------------------------------------------------------------
gs -sDEVICE=bmpgray -dNOPAUSE -dBATCH -q -r$dpi_res \
-sOutputFile=./%d.bmp ./$input_pdf_name
#-------------------------------------------------------------------------
for file_num in `seq 1 $num_pages`
do
convert ./$file_num.bmp -threshold $bw_threshold \
./$file_num.tif
done
#-------------------------------------------------------------------------
input_files=""
for file_num in `seq 1 $num_pages`
do
input_files+="./$file_num.tif "
done
img2pdf -o ./$output_pdf_name --dpi $dpi_res $input_files
#-------------------------------------------------------------------------
# clean up bmp and tif files used in conversion
for file_num in `seq 1 $num_pages`
do
rm ./$file_num.bmp
rm ./$file_num.tif
done
scantailor