Ayrıca bw dönüştürmek istediğim bazı taranmış renkli pdfs ve gri tonlamalı pdfs vardı. Kullanmayı denedimgs
Burada listelenen kod ile 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. convert
doğrudan kullanıldığında çok kötü sonuçlar verir.
İyi görüntü kalitesi ve küçük dosya boyutu ile bw pdfs istedim. Terdon'ın çözümünü denedim, ama pdftk
yum (yazma zamanında) kullanarak centOS 7 alamadım .
Benim çözüm gs
pdf gri tonlama bmp dosyaları ayıklamak için kullanır ,convert
pdf'den ayıklamak , bu bmp'leri 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 her sayfa bmp kaydedin. Bir sayfalık 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 verir. 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
veyajoinpdf
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