2010-11-20 54 views
6

Làm cách nào tôi có thể sử dụng cả ls và chuyển đổi để chuyển đổi tất cả các tệp hình ảnh trong một thư mục sang pdf? Ngoài ra tôi cần phải đặt các tập tin theo một thứ tự nhất định cho các tập tin ví dụ như AA1.png, AA11.png cần phải tôn trọng thứ tự logic này.Bash chuyển đổi sang pdf

Cập nhật (ls) và (chuyển đổi) có sẵn, nhưng làm thế nào tôi có thể sử dụng chúng cùng nhau?

+0

Bạn có nghĩa là các file PDF riêng biệt hoặc một file PDF duy nhất? – Orbling

+0

Tôi cần một pdf duy nhất – danidacar

Trả lời

7

Để chuyển đổi sang một file PDF duy nhất có thể được thực hiện trong một lệnh duy nhất:

convert -compress jpeg *.jpg my-jpegs.pdf 

Nhớ rằng phải có -compress jpeg cờ, hoặc nó sẽ lưu trữ những hình ảnh không nén và kết quả là một file PDF lớn.

ImageMagick (qua chuyển đổi) yêu cầu Ghostscript (gs) phải được cài đặt để xử lý các tệp PDF mà tôi tin. Cẩn thận với các vấn đề về bộ nhớ nếu bạn đang thêm nhiều JPEG cùng một lúc.

Đối với yêu cầu hợp lý của bạn, bạn có thể sử dụng ls kết hợp với convert để nhận danh sách theo thứ tự.

cái gì đó dọc theo dòng:

convert -compress jpeg `ls *.png` my-jpegs.pdf 

Xem ls --help cho tùy chọn sắp xếp khác nhau có sẵn.

+0

Mẹo hay, nhưng thứ tự sắp xếp là vấn đề. – danidacar

+0

Phải, tôi đã thêm nhiều hơn cho vấn đề sắp xếp của bạn. – Orbling

+0

Các 'ls' trong backticks không làm bất cứ điều gì hữu ích của chính nó. Tuy nhiên, nếu bạn thêm tùy chọn sắp xếp hữu ích, tùy chọn này có thể được đảm bảo. – tripleee

0
for image in `ls *.png`; do 
    # call convert or whatever here 
    convert $image `basename $image .png`.pdf 
done 
+0

Tôi cần một tệp pdf duy nhất với tất cả các thứ tự hình ảnh theo tên (thứ tự lôgic image1.png, image2.png, ... image11.png) – danidacar

+1

'ls' trong backticks là một antipattern. 'cho hình ảnh trong * .png; do ... 'vừa đơn giản vừa chính xác hơn. – tripleee

4

https://gitlab.mister-muffin.de/josch/img2pdf

Trong tất cả các giải pháp đề xuất liên quan đến ImageMagick (ví dụ: convert), dữ liệu JPEG được giải mã đầy đủ và tái mã hóa. Điều này dẫn đến generation loss, cũng như hiệu suất "mười đến trăm" lần tồi tệ hơn img2pdf.

+0

Tôi không thể thấy giấy phép trên mã này. Bạn đã tự viết nó chưa? Có phải MIT, GPL, v.v.? – Orbling

+0

Tôi không viết điều đó. Địa chỉ e-mail của tác giả của nó bị ẩn trong test_comp.sh nếu bạn muốn liên lạc với anh ta. –

+0

Không phải đặc biệt, chỉ nghĩ rằng nó là không thể sử dụng nói chung mà không có giấy phép. Đó là một sự xấu hổ, vì nó không có nghi ngờ hữu ích. – Orbling

1

Nếu bạn có rất nhiều các tập tin:

convert -limit memory 1 -limit map 1 *.jpg foo.pdf 

see here

hay với khả năng nén

convert -limit memory 1 -limit map 1 -compress jpeg -quality 85 *.jpg foo.pdf 
Các vấn đề liên quan