Saya ingin mengonversi beberapa file dari jpeg ke pdf. Saya menggunakan perintah berikut.
$ convert image1.jpg image1.pdf
Tapi saya punya 100 gambar. Bagaimana saya harus mengonversikan semuanya ke pdf yang sesuai?
Saya mencoba
$ convert image*.jpg image*.pdf
Itu tidak bekerja.
command-line
wildcards
conversion
imagemagick
Pratik Deoghare
sumber
sumber
Jawaban:
Dalam bash:
sumber
-
memberi masalah, jika tidak.mogrify
mengetik jauh lebih sedikit. Lihat jawaban saya.Anda dapat menggunakan
mogrify
perintah untuk ini. Biasanya, itu memodifikasi file di tempat, tetapi ketika mengkonversi format, ia menulis file baru (hanya mengubah ekstensi agar sesuai dengan format baru). Jadi:(Seperti halnya enzotib
./*.jpg
, yang--
mencegah nama file aneh ditafsirkan sebagai switch. Sebagian besar perintah mengenali--
artinya "berhenti mencari opsi pada titik ini".)sumber
mogrify
sebagai gantinyaconvert
. Ini akan bekerja untuk 100 file, tetapi menggunakan globbing dengan*.jpg
tidak skala ke ribuan file; yang dapat dilakukan dengan menggabungkan perintah dalam satu baris sederhana denganfind
.*.jpg
dan*.png
file menjadi satu*.pdf
? Perhatikan bahwa mereka adalah file bernomor (misalnya,1.jpg 2.png 3.png 4.jpg
) dan urutan itu harus dipertahankan / dipertahankan dalam output pdf.*.jpg
menjadi*.png
dalam langkah pertama, dan melakukan yang setara dengan jawaban Anda di langkah 2 ...sintaks yang lebih cepat tetapi tidak biasa:
Berjalan paralel (menggunakan https://www.gnu.org/software/parallel/ ). Saya belum melihat adanya multi-threading
convert
, yang akan membatasi paralelisasi yang efektif. Jika itu yang menjadi perhatian Anda, lihat di komentar di bawah ini untuk metode untuk memastikan tidak terjadi multi-threading.sumber
parallel
) dengan mengatur variabel lingkunganMAGICK_THREAD_LIMIT=1
.https://gitlab.mister-muffin.de/josch/img2pdf
Di semua solusi yang diusulkan yang melibatkan ImageMagick, data JPEG sepenuhnya diterjemahkan dan disandikan ulang. Ini menghasilkan kehilangan generasi , serta kinerja "sepuluh hingga seratus" kali lebih buruk daripada
img2pdf
.Dapat diinstal dengan
pip img2pdf
asalkan Anda memiliki dependensi (misalnyaapt-get install python python-pil python-setuptools libjpeg-dev
atauyum install python python-pillow python-setuptools
).sumber
convert some.jpg -format pdf -compress jpeg generated.pdf ; pdfimages -j generated.pdf generated.pdf ; diff -sq some.jpg generated.pdf-000.jpg
. IMHO jawaban ini pantas mendapatkan lebih banyak suara. Memang,convert
gagal di sini,img2pdf
lulus tes semacam itu dan bahkan menyertakan banyak opsi untuk mengatur ukuran gambar, ukuran halaman, dll. Untuk menyetel pdf yang dihasilkan sesuai kebutuhan Anda.img2pdf
tersedia di repositori reguler Ubuntu 16.04, tidak perlu untuk operasi manual denganpip
sana, dan Anda tetap mendapat manfaat dari pembaruan.Berikut adalah cara yang menggabungkan saran terbaik di atas menjadi baris perintah yang sederhana, efisien, dan kuat:
Ini berfungsi baik dengan nama file yang dimulai dengan
-
atau mengandung spasi. Perhatikan penggunaan-iname
yang merupakan case-sensitive versi-name
sehingga akan bekerja pada.JPG
sama seperti.jpg
.Ini digunakan
find
untuk mendapatkan daftar file alih-alih shell globbing dengan*.jpg
wildcard yang dapat mengakibatkan kesalahan 'Daftar argumen terlalu lama' pada beberapa sistem. Meskipun seperti yang ditunjukkan oleh @enzotib dalam komentar, perilaku menggunakan globbing dalam for for berbeda dari argumen perintah .Juga,
find
akan menangani subdirektori, sedangkan shell globbing tidak akan kecuali Anda kebetulan memiliki fitur spesifik shell seperti**/*jpg
sintaks globbing rekursif di zsh.EDIT: Saya pikir saya akan menambahkan fitur lain yang berguna
find
yang saya pikirkan setelah membaca komentar oleh @IlmariKaronen tentang menjalankan kembali perintah dan hanya mengonversi file yang telah berubah sejak dijalankan pertama kali.Pada pass pertama Anda dapat
touch
file cap waktu setelah konversi selesai.Kemudian tambahkan
-newer timestamp
kefind
ekspresi untuk beroperasi pada subset file yang waktu modifikasi terakhirnya lebih baru daripada file timestamp. Lanjutkan memperbarui file stempel waktu setelah setiap kali dijalankan.Ini adalah cara mudah untuk menghindari keharusan menggunakan Makefile (kecuali jika Anda sudah menggunakan Makefile) dan itu adalah alasan bagus mengapa layak digunakan
find
kapan saja mungkin ... itu memiliki ekspresif serbaguna sementara tetap ringkas.sumber
Anda dapat melakukan ini dengan
convert
langsung. Ini dapat ditemukan di bagian bawah Situs ImageMagicks tentang Pemrosesan Baris Perintah .sumber
convert *.jpg -adjoin output.pdf
untuk pdf gabunganSaya telah menggunakan makefile berikut untuk sesuatu yang serupa:
Sekarang saya bisa menjalankan
make
dan mendapatkan file png untuk setiap file svg yang ada.Sunting
Seperti yang diminta:
origs/foo.svg
menjadifoo.png
)all: $(PNG)
mendefinisikan, bahwa target "semua" tergantung pada semua PNG%.png: origs/%.svg
mendefinisikan, file $ X.png tergantung pada origs / $ X.svg dan dapat dihasilkan dengan memanggilconvert ... $< $@
.$<
adalah ketergantungan dan dan$@
adalah nama targetsumber
make
lagi akan mengubah lagi, dan hanya itu, PDF yang telah berubah.make
tampaknya sedikit terlalu rumit ketika satu-liner sederhana akan melakukan trik.find
begitu Anda tidak perlu menggunakan Makefile.Sebuah skrip kecil akan berhasil. (diuji dengan ksh88 pada Solaris 10)
script.ksh
Kemudian Anda dapat menjalankan
find
untuk mengeksekusi skrip:Perhatikan bahwa baik
script.ksh
danfind
perintah yang saya berikan kepada Anda, mungkin memiliki sintaks yang berbeda tergantung pada OS dan shell yang Anda gunakan.sumber
pdfname=${1%.*}.pdf
mengganti ekstensi file denganpdf
. Metode itu jauh lebih sederhana dan berfungsi bahkan jika nama file berisi karakter khusus. Pada catatan terkait, tambahkan tanda kutip ganda di sekitar penggantian variabel.Utilitas MacOS
SIPS
Di bawah MacOS (Sierra), utilitas baris perintah bawaan Applesips
menyediakan akses komprehensif ke semua utilitas citra raster Apple; ini ternyata termasuk konversijpg
kepdf
.Sebagai contoh, dari resolusi rendah / kecil ukuran yang ada
jpg
gambar'cat.jpg'
(ukuran 8401 bytes), berikut command-line menciptakan'cat.pdf'
, dengan tidak ada perubahan dalam raster-resolusi dan ekspansi minimal ukuran file:Konversi ke
PSD
format gambar raster Adobe.sips
Idiom serupa membuat*.psd
file yang kompatibel dengan AdobeNamun perlu dicatat bahwa ekspansi ukuran file 30 kali lipat yang menyertai penggunaan
psd
format raster Adope .Produksi Buku Dalam melakukan produksi buku skala besar, yang melibatkan ratusan gambar, yang disediakan dalam berbagai format, bagi saya idiom baris perintah yang mudah digunakan adalah
ImageMagick
utilitas untuk membuat file gambar raster murni dalampng
format (dengan semua meta-data dan profil warna dilucuti-out), kemudian gunakansips
untuk mengembalikan satu set seragam profil warna dan / atau komentar, dan menggunakansips
juga untuk menghasilkan file output akhir (paling sering*.png
,*.psd
atau*.pdf
file).sumber
Sayangnya
convert
mengubah gambar sebelum jadi untuk memiliki minimal kehilangan kualitas aslijpg
yang perlu Anda gunakanimg2pdf
, saya menggunakan perintah ini:1) Ini untuk membuat
pdf
file dari setiapjpg
gambar tanpa kehilangan resolusi atau kualitas:2) Ini untuk menyatukan
pdf
halaman menjadi satu:3) Dan terakhir saya menambahkan layer teks OCR yang tidak mengubah kualitas pemindaian di pdf sehingga dapat dicari:
sumber
Saya menyelesaikan dengan imagemagick untuk konversi dan paralel untuk mempercepat proses konversi saya:
sumber
Salah satu cara paling sederhana untuk mengonversi banyak file adalah dengan masuk ke direktori file di terminal linux dan ketik:
sumber
Jika Anda hanya menggunakan file gambar daripada mungkin Anda ingin menggunakan Arsip Buku Komik (.cbr, .cbz, .cbt, .cba, .cb7)
Ini jauh lebih fleksibel daripada PDF.
https://secure.wikimedia.org/wikipedia/en/wiki/Comic_book_archive
sumber