Saya juga memiliki beberapa pdf warna yang dipindai dan pdf abu-abu yang ingin saya konversi menjadi bw. Saya mencoba menggunakan gsdengan kode yang tercantum di sini , dan kualitas gambar bagus dengan teks pdf masih ada. Namun, kode gs itu hanya mengkonversi ke skala abu-abu (seperti yang ditanyakan dalam pertanyaan) dan masih memiliki ukuran file yang besar. convertmenghasilkan hasil yang sangat buruk bila digunakan secara langsung.
Saya ingin pw bw dengan kualitas gambar bagus dan ukuran file kecil. Saya akan mencoba solusi terdon, tetapi saya tidak bisa pdftkmenggunakan centOS 7 menggunakan yum (pada saat penulisan).
Solusi saya gunakan gsuntuk mengekstrak file bmp skala abu-abu dari pdf, convertuntuk membatasi bmps menjadi bw dan menyimpannya sebagai file tiff, dan kemudian img2pdf untuk mengompres gambar tiff dan menggabungkan semuanya menjadi satu pdf.
Saya mencoba langsung tiff dari pdf tapi kualitasnya tidak sama jadi saya menyimpan setiap halaman ke bmp. Untuk file pdf satu halaman, convertlakukan pekerjaan yang hebat dari bmp ke pdf. Contoh:
gs -sDEVICE=bmpgray -dNOPAUSE -dBATCH -r300x300 \
-sOutputFile=./pdf_image.bmp ./input.pdf
convert ./pdf_image.bmp -threshold 40% -compress zip ./bw_out.pdf
Untuk beberapa halaman, gsdapat menggabungkan beberapa file pdf menjadi satu, tetapi img2pdfmenghasilkan ukuran file yang lebih kecil daripada gs. File tiff harus dikompresi sebagai input ke img2pdf. Ingatlah untuk halaman dalam jumlah besar, file bmp dan tiff menengah cenderung berukuran besar. pdftkatau joinpdfakan lebih baik jika mereka dapat menggabungkan file pdf terkompresi dari convert.
Saya membayangkan ada solusi yang lebih elegan. Namun, metode saya menghasilkan hasil dengan kualitas gambar yang sangat baik dan ukuran file yang jauh lebih kecil. Untuk mendapatkan kembali teks dalam bw pdf, jalankan OCR lagi.
Script shell saya menggunakan gs, convert, dan img2pdf. Ubah parameter (# halaman, pindai dpi, ambang batas%, dll) yang tercantum di awal sesuai kebutuhan, dan jalankan chmod +x ./pdf2bw.sh. Berikut ini skrip lengkap (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