Lần trước tôi đã sử dụng convert
cho một nhiệm vụ như vậy, tôi đã chỉ định rõ ràng kích thước của điểm đến thông qua thay đổi kích thước:
$ i=150; convert a.png b.png -compress jpeg -quality 70 \
-density ${i}x${i} -units PixelsPerInch \
-resize $((i*827/100))x$((i*1169/100)) \
-repage $((i*827/100))x$((i*1169/100)) multipage.pdf
Các convert
lệnh không luôn luôn sử dụng DPI như đơn vị dạng mật độ default / trang, do đó chúng tôi chỉ định rõ ràng DPI với -units
tùy chọn (nếu không bạn có thể nhận được kết quả khác nhau với các phiên bản khác nhau / định dạng đầu vào kết hợp). Kích thước mới (được chỉ định qua -resize
) là kích thước của trang DIN A4 tính bằng pixel. Đối số thay đổi kích thước chỉ định kích thước trang tối đa. Độ phân giải và chất lượng để chọn chính xác tùy thuộc vào trường hợp sử dụng - Tôi đã chọn 150 DPI và chất lượng trung bình để tiết kiệm một số không gian trong khi nó trông không tệ lắm khi được in trên giấy.
Lưu ý rằng convert
theo mặc định không thay đổi tỷ lệ khung hình với thao tác thay đổi kích thước:
Thay đổi kích thước sẽ phù hợp với hình ảnh vào kích thước yêu cầu. Nó KHÔNG điền, kích thước hộp yêu cầu.
( Hướng dẫn sử dụng ImageMagick )
Tùy thuộc vào phiên bản ImageMagick và các định dạng đầu vào có liên quan, có thể bỏ qua -repage
tùy chọn này. Nhưng đôi khi, bắt buộc và không có tùy chọn đó, tiêu đề PDF có thể chứa kích thước quá nhỏ. Trong mọi trường hợp, -repage
không nên làm tổn thương.
Các tính toán sử dụng số học số nguyên vì bash
chỉ hỗ trợ điều đó. Với zsh
các biểu thức có thể được đơn giản hóa - tức là thay thế bằng $((i*8.27))x$((i*11.69))
.
Hình ảnh tuyến tính
Nếu các tệp PNG là hình ảnh hai cấp (đen & trắng aka lineart) thì img2pdf
công cụ mang lại kết quả vượt trội so với ImageMagick convert
. Điều đó có nghĩa img2pdf
là nhanh hơn và mang lại các tệp PDF nhỏ hơn.
Thí dụ:
$ img2pdf -o multipage.pdf a.png b.png
hoặc là:
$ img2pdf --pagesize A4 -o multipage.pdf a.png b.png
-repage a4
tôi nhận được mộtinvalid argument for option '-repage': a4