Ayrıca bw dönüştürmek istediğim bazı taranmış renkli pdfs ve gri tonlamalı pdfs vardı. Burada listelenen kodgs
ile kullanmayı denedim ve görüntü kalitesi hala orada pdf metin ile iyidir. Bununla birlikte, bu gs kodu yalnızca (sorguda sorulduğu gibi) gri tonlamaya dönüştürülür ve yine de büyük dosya boyutuna sahiptir. doğrudan kullanıldığında çok kötü sonuçlar verir.convert
İyi görüntü kalitesi ve küçük dosya boyutu ile bw pdfs istedim. Benim çözümüm, gs
gri tonlamalı bmp dosyalarını pdf'den ayıklamak , bu bmp'lericonvert
bw ile eşleştirmek ve tiff dosyaları olarak kaydetmek ve sonra tiff görüntülerini sıkıştırmak ve hepsini tek bir pdf olarak birleştirmek için img2pdf'yi kullanır.
Doğrudan pdf tiff gitmeye çalıştım ama kalite aynı değil bu yüzden bmp her sayfa kaydedin. Bir sayfa pdf dosyası için, convert
bmp'den pdf'ye harika bir iş çıkarır. Misal:
gs -sDEVICE=bmpgray -dNOPAUSE -dBATCH -r300x300 \
-sOutputFile=./pdf_image.bmp ./input.pdf
convert ./pdf_image.bmp -threshold 40% -compress zip ./bw_out.pdf
Birden fazla sayfa için, gs
birden fazla pdf dosyasını tek bir dosyada birleştirebilir, ancak img2pdf
gs'den daha küçük dosya boyutu sağlar. Tiff dosyaları img2pdf dosyasına girdi olarak sıkıştırılmamış olmalıdır. Çok sayıda sayfa için aklınızda bulundurun, ara bmp ve tiff dosyalarının boyutu büyüktür. pdftk
veya joinpdf
sıkıştırılmış pdf dosyalarını birleştirebilirlerse daha iyi olur convert
.
Daha zarif bir çözüm olduğunu hayal ediyorum. Ancak yöntemim, çok iyi görüntü kalitesine ve çok daha küçük dosya boyutuna sahip sonuçlar üretir. Bw pdf içine metin geri almak için OCR'ı tekrar çalıştırın.
Kabuk betiğim gs, convert ve img2pdf kullanıyor. Başlangıçta listelenen parametreleri (sayfa sayısı, tarama dpi'si,% eşiği vb.) Gerektiği gibi değiştirin ve çalıştırın chmod +x ./pdf2bw.sh
. İşte tam komut dosyası (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