Hợp nhất hình ảnh png thành một tệp pdf [đã đóng]


89

Làm cách nào để hợp nhất một số .png tệp thành một tệp PDF trong Unix?

Câu trả lời:


149

Từ việc xem qua tài liệu về ImageMagick, có thể dễ dàng như:

convert 1.png 2.png myfile.pdf

Nếu điều đó không hiệu quả, PDFjam tuyên bố có thể giải quyết vấn đề của bạn.


5
Thật ngạc nhiên. Quá dễ. Nó tự động kích thước hình ảnh và mọi thứ .. Tôi thích mã nguồn mở.
Nathan Wallace

Có cách nào để tôi có thể kiểm soát chất lượng của tài liệu hoặc kích thước tệp của PDF kết quả không? Tôi cần tải lên một số tài liệu có kích thước tệp tối đa là 2,5 MiB. Tôi đã thử với -qualitytùy chọn nhưng kích thước tệp luôn là ~ 9,5 MiB.
arielnmz

Có thể nối các tệp hình ảnh vào pdf hiện có không?
Kiran Reddy

3
Chuyển đổi tất cả các tệp trong một thư mục thuộc loại được chỉ định bằng cách sử dụngconvert *.jpg file.pdf
haakym 23/02

2
@arielnmz, bạn có thể nén tệp bằng cách sử dụng các tham số -compress jpeg -quality 50. Xem câu trả lời của tôi
Michael Schmid

36

Nếu tôi muốn hợp nhất một số bản quét thành một tệp PDF, tôi thực hiện như sau:

pdfjoin --a4paper --fitpaper false --rotateoversize false scan01.png scan02.png

Điều này cung cấp cho bạn tài liệu PDF với kích thước trang DIN-A4, trong đó mọi pngtệp đều được căn giữa trên trang của chính nó. Hình ảnh quá lớn đối với một trang DIN-A4 được thay đổi kích thước tương ứng để vừa với một trang. Hình ảnh nhỏ hơn không được thay đổi kích thước (không được làm lớn hơn).

Bạn phải đặt tên cho tất cả pngcác tệp trên dòng lệnh, nhưng bạn cũng có thể sử dụng các ký tự đại diện để hợp nhất tất cả các tệp png trong thư mục hiện tại:

pdfjoin --a4paper --fitpaper false --rotateoversize false *.png

Các pdfjoinlệnh là một phần của PDFjam như đã đề cập trong câu trả lời của Jeremiah Willcock. Vì vậy, rất có thể bạn sẽ phải cài đặt một gói có tên pdfjamhoặc texlive-extra-utilsvới trình quản lý gói phân phối của bạn. PDFjam có thể sử dụng pngtệp làm đầu vào kể từ Phiên bản 2.07, được phát hành vào năm 2010-11-13.


dường như pdfjoin là biến mất và hiện nay chỉ là một công cụ khác nhau được gọi là pdfunite rằng chỉ có kết hợp nhiều file PDF thành một ...
Gregor

1
@Gregor Điều gì khiến bạn nói rằng pdfjoin đã biến mất?
Pascal Rosin

@Pascal_Rosin không thể tìm thấy nó trong Debian cũng như trong kho lưu trữ Arch ...
Gregor

2
pdfjoincó sẵn trong texlive-extra-utilsgói trên một số nền tảng. Bạn cũng có thể cài đặt nó từ nguồn.
Mahmoud Al-Qudsi

10

ImageMagick 'sCông cụ chuyển đổilà sở thích của tôi.

Chương trình chuyển đổi là một thành viên của bộ công cụ ImageMagick. Sử dụng nó để chuyển đổi giữa các định dạng hình ảnh cũng như thay đổi kích thước hình ảnh, làm mờ, cắt, giảm kích thước, hòa sắc, vẽ trên, lật, nối, lấy mẫu lại và hơn thế nữa.

convert [input-option] input-file [output-option] output-file`

Nếu bạn muốn các tệp hình ảnh (và do đó, chất lượng và kích thước tệp của chúng) không bị thay đổi và chỉ cần đặt một vùng chứa PDF xung quanh chúng:

convert In.png In-2.png Someother-*.png Result.pdf

Trong trường hợp bạn muốn có kích thước tệp nhỏ hơn và chất lượng bị giảm, bạn có thể chuyển đổi chúng sang định dạng JPEG trước. (ImageMagick cũng hỗ trợ thay đổi mức nén PNG, nhưng thông thường các tệp đầu vào của bạn đã sử dụng mức cao nhất.)

convert 1.png 2.png -compress jpeg -quality 50 Result.pdf

Sử dụng giá trị từ 0 đến 100 cho qualitytùy chọn.

Ngoài ra, bạn có thể đạt đến kích thước (và chất lượng) tệp thấp hơn bằng cách lấy mẫu lại hình ảnh ở một độ phân giải nhất định.

convert *.png 2.png -resample 300 Result.pdf

Giá trị cho resampleđề cập đến số lượng pixel trên inch. ImageMagick đọc mật độ gốc từ phần EXIF ​​của hình ảnh đầu vào, giảm trở lại 72 dpi. Bạn có thể sử dụng densitytham số để đặt độ phân giải tùy chỉnh cho hình ảnh đầu vào.

Bạn có thể dĩ nhiên cũng kết hợp compress, qualityresamplecác thông số.


Có ai ở đây biết cách hoàn nguyên hoạt động không?
Andrei Cioara,

Các tệp hình ảnh sẽ không bị xóa, trong khi bạn có thể sao chép chúng đi để yên tâm. Tôi cũng gặp sự cố stackoverflow.com/questions/42928765/… cần giải quyết trước khi nó hoạt động.
Audrius Meskauskas

Bất kỳ ai gặp sự cố khi chuyển đổi hình ảnh thành pdf và gặp lỗi thông báo 'chuyển đổi không được phép', vui lòng kiểm tra câu trả lời sau: askubuntu.com/questions/1127260/imagemagick-convert-not-allowed
Tuhin

Gần đây imagemagick từ chối chuyển đổi PDF theo mặc định. Hãy xem câu hỏi này nếu bạn gặp phải điều này để bạn biết cách thay đổi chính sách này. stackoverflow.com/questions/52998331/…
user2565010

5

Tôi đã đánh cắp cái này, nhưng đây là giải pháp tôi đã sử dụng từ Jeremiah Willcock và một trang web trả lời khác. Không phải đào bới lịch sử vào lúc này. Tôi đã nói dối, tôi đã làm. (Tully @ https://askubuntu.com/a/626301 )
Tôi cần một tệp đủ nhỏ để gửi email.

Để kết hợp hình ảnh thành một tệp PDF (từ trong thư mục làm việc, hãy sử dụng dòng lệnh:

user@box:/home/user/scans/:$ 
convert 1.png 2.png convertoutput.pdf

Để thu nhỏ bằng cách sử dụng ghostcript sau khi kết hợp (tôi hầu như đã sử dụng trên hệ thống mặc định kde):

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default \
   -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true \
   -r150 -sOutputFile=output.pdf convertoutput.pdf

Tệp của tôi có 14 hình ảnh (19MB sau khi chuyển đổi, gs làm cho nó 1,6MB, chất lượng vẫn tuyệt vời). Tệp đầu ra được gọi output.pdf.


Bạn có thể nén tệp trực tiếp với chuyển đổi , sử dụng các tham số -compress jpeg -quality 50. Xem câu trả lời của tôi
Michael Schmid

@MichaelSchmid Việc nén bằng chuyển đổi không hiệu quả. Nó chỉ làm giảm chất lượng jpeg trong khi giải pháp gs thay đổi độ phân giải. Nếu bạn thử nó với hình ảnh có độ phân giải cao, bạn sẽ thấy sự khác biệt về kích thước lớn như thế nào, ngay cả khi bạn chọn chất lượng jpg cực thấp.
mak

Có, việc lấy mẫu lại thực sự có thể hiệu quả hơn so với nén JPEG. Và ImageMagick cũng hỗ trợ điều đó. Tôi đã thêm tùy chọn đó trong câu trả lời của mình.
Michael Schmid
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.