Saya ingin mengubah pdf dengan beberapa teks berwarna dan gambar dalam pdf lain dengan hanya hitam & putih, untuk mengurangi dimensinya. Selain itu, saya ingin menjaga teks sebagai teks, tanpa mengubah elemen halaman dalam gambar. Saya mencoba perintah berikut:
convert -density 150 -threshold 50% input.pdf output.pdf
ditemukan dalam pertanyaan lain, sebuah tautan , tetapi ia melakukan apa yang tidak saya inginkan: teks dalam output ditransformasikan dalam gambar yang buruk dan tidak lagi dapat dipilih. Saya mencoba dengan Ghostscript:
gs -sOutputFile=output.pdf \
-q -dNOPAUSE -dBATCH -dSAFER \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.3 \
-dPDFSETTINGS=/screen \
-dEmbedAllFonts=true \
-dSubsetFonts=true \
-sColorConversionStrategy=/Mono \
-sColorConversionStrategyForImages=/Mono \
-sProcessColorModel=/DeviceGray \
$1
tapi itu memberi saya pesan kesalahan berikut:
./script.sh: 19: ./script.sh: output.pdf: not found
Apakah ada cara lain untuk membuat file?
bash
pdf
imagemagick
ghostscript
color-management
BowPark
sumber
sumber
Jawaban:
Contoh gs
The
gs
perintah Anda menjalankan di atas memiliki trailing$1
yang biasanya dimaksudkan untuk melewati argumen baris perintah ke script. Jadi aku tidak yakin apa yang Anda benar-benar mencoba tapi aku menebak bahwa Anda mencoba untuk menempatkan perintah yang menjadi naskah,script.sh
:Dan jalankan seperti ini:
Tidak yakin bagaimana Anda mengatur skrip ini tetapi harus dapat dieksekusi.
Sesuatu yang sepertinya tidak beres dengan naskah itu. Ketika saya mencobanya saya malah mendapatkan kesalahan ini:
Sebuah alternatif
Alih-alih script yang saya gunakan ini dari pertanyaan SU sebagai gantinya.
Kemudian jalankan seperti ini:
sumber
sProcessColorModel
yang seharusnyadProcessColorModel
.Saya menemukan skrip di sini yang dapat melakukan ini. Ini membutuhkan
gs
yang tampaknya Anda miliki tetapi jugapdftk
. Anda belum menyebutkan distribusi Anda tetapi pada sistem berbasis Debian, Anda harus dapat menginstalnyaAnda dapat menemukan RPM di sini .
Setelah Anda menginstal
pdftk
, simpan skrip sebagaigraypdf.sh
dan jalankan seperti:Ini akan membuat file bernama
input-gray.pdf
. Saya menyertakan seluruh skrip di sini untuk menghindari tautan busuk:sumber
Saya juga memiliki beberapa pdf warna yang dipindai dan pdf abu-abu yang ingin saya konversi menjadi bw. Saya mencoba menggunakan
gs
dengan 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.convert
menghasilkan 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
pdftk
menggunakan centOS 7 menggunakan yum (pada saat penulisan).Solusi saya gunakan
gs
untuk mengekstrak file bmp skala abu-abu dari pdf,convert
untuk 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,
convert
lakukan pekerjaan yang hebat dari bmp ke pdf. Contoh:Untuk beberapa halaman,
gs
dapat menggabungkan beberapa file pdf menjadi satu, tetapiimg2pdf
menghasilkan 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.pdftk
ataujoinpdf
akan lebih baik jika mereka dapat menggabungkan file pdf terkompresi dariconvert
.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):sumber
RHEL6 dan RHEL5, yang keduanya merupakan baseline Ghostscript pada 8.70, tidak dapat menggunakan bentuk-bentuk perintah yang diberikan di atas. Dengan asumsi skrip atau fungsi yang mengharapkan file PDF sebagai argumen pertama "$ 1", berikut ini harus lebih portabel:
Di mana file output akan diawali dengan "grey_".
RHEL6 dan 5 dapat menggunakan CompatibilityLevel = 1.4 yang jauh lebih cepat, tetapi saya bertujuan untuk portabilitas.
sumber
sColorConversionStrategyForImages
saklar.Saya mendapatkan hasil yang andal membersihkan pdf yang dipindai agar kontras dengan skrip ini;
sumber