Ketika saya mengonversi file pdf ke banyak menggunakan file jpg
convert -quality 100 file.pdf page_%04d.jpg
Saya memiliki kehilangan kualitas yang cukup besar.
Namun jika saya melakukan hal berikut, tidak ada kehilangan kualitas (nyata):
Mulai gscan2pdf, pilih file-> impor (dan pilih file.pdf). Lalu pergi ke direktori gscan2pdf sementara. Ada banyak file pnm (satu untuk setiap halaman file pdf). Sekarang saya lakukan
for file in *.pnm; do
convert $file $file.jpg done
File-file jpg yang dihasilkan adalah (kira-kira) dengan kualitas yang sama dengan pdf asli (yang saya inginkan).
Sekarang pertanyaan saya adalah, apakah ada cara baris perintah sederhana untuk mengonversi file pdf ke banyak file jpg tanpa kehilangan kualitas yang nyata? (Solusi di atas terlalu rumit dan memakan waktu).
Jawaban:
Tidak jelas apa yang Anda maksud dengan "kehilangan kualitas". Itu bisa berarti banyak hal yang berbeda. Bisakah Anda memposting beberapa sampel untuk diilustrasikan? Mungkin memotong bagian yang sama dari versi kualitas buruk dan kualitas yang baik (sebagai PNG untuk menghindari kehilangan kualitas lebih lanjut).
Mungkin Anda perlu menggunakan
-density
untuk melakukan konversi pada dpi yang lebih tinggi:(Anda dapat menambahkan
-units PixelsPerInch
atau-units PixelsPerCentimeter
jika perlu. Salinan saya default ke ppi.)Pembaruan: Seperti yang Anda tunjukkan,
gscan2pdf
(cara Anda menggunakannya) hanyalah pembungkus untukpdfimages
(dari poppler ).pdfimages
tidak melakukan hal yangconvert
sama ketika mengisi PDF sebagai input.convert
mengambil PDF, membuatnya pada beberapa resolusi, dan menggunakan bitmap yang dihasilkan sebagai gambar sumber.pdfimages
melihat melalui PDF untuk gambar bitmap tertanam dan mengekspor masing-masing ke file. Ini hanya mengabaikan perintah menggambar teks atau vektor dalam PDF.Akibatnya, jika yang Anda miliki adalah PDF yang hanya membungkus serangkaian bitmap,
pdfimages
akan melakukan pekerjaan yang jauh lebih baik untuk mengekstraksinya, karena itu memberi Anda data mentah pada ukuran aslinya. Anda mungkin juga ingin menggunakan-j
opsi inipdfimages
, karena PDF dapat berisi data JPEG mentah. Secara default,pdfimages
mengonversikan semuanya ke format PNM, dan mengonversi JPEG> PPM> JPEG adalah proses yang hilang.Jadi, cobalah
Anda mungkin atau mungkin tidak perlu mengikuti dengan
convert
ke.jpg
langkah (tergantung pada apa bitmap memformat PDF itu menggunakan).Saya mencoba perintah ini pada PDF yang saya buat sendiri dari serangkaian gambar JPEG. JPEG yang diekstraksi adalah byte-untuk-byte yang identik dengan gambar sumber. Anda tidak bisa mendapatkan kualitas yang lebih tinggi dari itu.
sumber
convert
juga tidak praktis untuk PDF besar. Misalnya, butuh 45 GB memori untuk memproses buku 700 halaman 6-megapiksel. Itu juga memakan waktu sekitar seribu kali lebih lama daripadapdfimages
.Seperti yang dikatakan oleh siswa
pdfimages
adalah pilihan yang bagus. Dari pengalaman sayags
danconvert
ekspor ke kualitas yang buruk terlepas dari apakah Anda menentukan dpi yang tepat.Tetapi jika pdf memiliki banyak lapisan per halaman
pdfimages
tidak berfungsi dan mengekstraksi lapisan sebagai gambar terpisah, dalam hal ini yang terbaik adalah menggunakaninskcape
untuk mengekspor halaman seperti yang terlihat.Ini adalah perintah yang saya gunakan:
Perintah pertama membagi semua halaman. Perintah kedua mengubah halaman per halaman menjadi png. Anda dapat menyimpannya png atau mengonversinya menjadi jpeg
Dibandingkan dengan
pdfimages
,,gs
dan ImageMagick's,convert
saya menemukaninkscape
kualitas ekspor terbaik.sumber
respons dari @cjm benar, tetapi jika Anda suka GUI dan tidak ingin merender semua halaman pdf, hanya untuk mendapatkan beberapa gambar, gunakan gimp.
Buka pdf dengan gimp dan Anda akan mendapatkan jendela impor dengan semua halaman yang diberikan. Pilih halaman apa pun yang Anda inginkan dan atur resolusi ke 600 pix / inch (saya menemukan 300 terlalu banyak tajam dalam banyak kasus). Simpan ke format yang Anda inginkan dengan "File / ekspor"
Bagaimanapun, harus ada bendera untuk memilih halaman yang diinginkan dari baris perintah.
sumber
Melihat kode sumber gscan2pdf saya perhatikan bahwa ia menggunakan pdfimages. Jadi
pdfimages file.pdf page
akan menghasilkanpage-001.ppm, page-002.ppm
dll.sumber
Yang tidak jelas dalam pertanyaan Anda adalah apakah Anda berbicara tentang teks dan grafik vektor di pdf Anda, atau apakah pdf Anda berisi gambar yang disematkan.
Setelah membaca tentang gscan2pdf, kira-kira file pdf Anda berisi (hanya) grafik yang disematkan.
convert
pada dasarnya "mencetak" pdf Anda tanpa mempedulikan isinya. Seperti yang disarankan oleh @cjm, Anda mungkin ingin mengubah kerapatan cetak. Ini adalah satu-satunya cara untuk meningkatkan kualitas untuk grafik vektor.Jika sebaliknya, apa yang ingin Anda lakukan adalah mengekstrak gambar yang disematkan (seperti halnya gscan2pdf tampaknya), menebak kepadatan biasanya akan mengarah pada kehilangan kualitas atau kualitas yang lebih tinggi dari yang diperlukan (dan pemborosan ruang disk). Jawabannya kemudian adalah mengekstrak gambar daripada mencetak pdf. Lihat artikel ini yang pada dasarnya menganjurkan penggunaan
pdfimages
untuk mengekstraksi gambar tanpa kehilangan kualitas.sumber