Sử dụng Ghostscript để chuyển đổi PDF nhiều trang thành JPG đơn?


15

Tôi biết Ghostscript có thể chuyển đổi PDF thành JPG và trong trường hợp PDF nhiều trang, có thể trích xuất từng trang thành JPG riêng lẻ. Nhưng có thể để nó tách chúng thành một JPG, để các trang được dán bên dưới nhau, ví dụ nửa trên của JPG là trang 1, nửa dưới là trang 2? Hoặc tôi có phải sử dụng một chương trình khác (và ImageMagick có thể làm điều này không?) Để kết hợp các trang JPG thành một hình ảnh?

Câu trả lời:


17

Có, bạn sẽ phải chuyển đổi từng trang PDF thành một tệp JPG (Ghostscript có thể làm điều đó).

Sau đó ghép các tệp JPG kết quả bằng một chương trình khác ( ImageMagick hoặc GraphicsMagic có thể thực hiện điều đó bằng cách sử dụng các montagelệnh phụ của chúng ).

Tôi không biết bất kỳ phần mềm nào có thể làm điều đó trong một lần.

Chuyển đổi PDF sang JPG (với Ghostscript): Bạn sẽ muốn đảm bảo rằng bạn nhận được kết quả tốt nhất có thể. Vì vậy, hãy chắc chắn rằng bạn điều chỉnh các tùy chọn dòng lệnh để chúng phù hợp với bạn. Tôi sẽ bắt đầu với điều này:

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

Điều này sẽ tạo ra các tệp JPG có tên pdffile-001.jpeg , pdffile-002.jpg v.v. Tham số * -dJPEGQ = 95 "đặt" Chất lượng JPEG "thành 95%. Nó có thể sử dụng độ phân giải" 600x600 dpi ". kiểm soát kích thước trang của JPG kết quả trong trường hợp mặc định Ghostscript của bạn không phù hợp với nhu cầu của bạn:

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -dPDFFitPage ^
    -dFIXEDMEDIA ^
    -dDEVICEWIDTHPOINTS=800 ^
    -dDEVICEHEIGHTPOINTS=600 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

hoặc là

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -dPDFFitPage ^
    -dFIXEDMEDIA ^
    -sDEFAULTPAPERSIZE=a4 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

nhiều-to-single-JPG-khâu với montage(ImageMagick hoặc GraphicsMagick): Cácmontagelệnh (được sử dụng trong ví dụ này là ImageMagick) cho phép bạn kiểm soát các mô hình ốp lát. Nếu bạn sử dụng, ví dụ:-tile 4x3bạn sẽ có bố cục áp đặt này:

1  2  3  4    
5  6  7  8    
9 10 11 12    

Bạn có thể sử dụng lệnh này để ghép 12 JPG riêng lẻ thành một:

montage ^
    -border 0  ^
    -tile 4x3  ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg  ^
    c:/path/to/final.jpg

Tất nhiên, montagecó nhiều tá tham số bổ sung cho phép bạn xác định nền, khoảng cách, độ lệch, trang trí, nhãn, xoay, cắt, chú thích, vv cho đầu vào và kết quả JPG.


EDIT: (Tôi đã muốn đưa ra gợi ý này trong câu trả lời ban đầu của mình, nhưng đã quên.)montageTheo mặc định sẽ sử dụng kích thước ô 120x120 pixel. Nếu bạn muốn giữ kích thước trang gốc cho mỗi ô, bạn phải thêm-geometryvào dòng lệnh. Giả sử bạn có các trang A4 (= 595x852 pt) trong tệp PDF của mình và bạn muốn giữ trang này, nhưng cũng thêm khoảng cách 11pt cho chiều ngang và 22 pt cho hướng dọc của lát gạch (cộng với các đường viền / khung màu xám mạnh 4pt xung quanh mỗi ô), làm điều này:

montage ^
    -border 4 ^
    -tile 4x3 ^
    -geometry 595x842+11+22 ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg ^
    c:/path/to/final.jpg

EDIT 2: (Vẫn còn một gợi ý quan trọng khác.) Nếu bạn không muốn mất chất lượng hình ảnh tốt trong quá trình ghép / dựng phim, mà chuyển đổi PDF sang JPG của bạn đã tạo, thì hãy thêm-quality 100tham số vào dòng lệnh của bạn như thế này :

montage ^
    -border 4 ^
    -tile 4x3 ^
    -geometry 595x842+11+22 ^
    -quality 100 ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg ^
    c:/path/to/final.jpg

Cảm ơn về câu trả lời của bạn. Tôi không thấy thông số hình học trong ImageMagick 6.9.9. Ngoài ra, chất lượng hình ảnh của hình ảnh kết hợp vẫn còn tệ, tôi thực sự không thể đọc được một từ nào từ nó.
Geek

2

Vì ImageMagick có hỗ trợ cho GhostScript tích hợp, bạn có thể thực hiện toàn bộ công việc trong một lần:

montage -tile 5 thispdfis25pages.pdf tiledoverview.jpg

sẽ lấy mọi trang và tạo một jpeg dài từ đầu đến cuối.


1
Nhưng điều này sẽ KHÔNG cung cấp cho bạn JPG chất lượng cao, bởi vì nó sẽ sử dụng Ghostscript với các cài đặt mặc định của nó (và những thứ này khá shi..y cho đầu ra JPG). Thực hiện theo 2 bước (và kiểm tra các trang JPG của bạn trước) mang lại cho bạn quyền kiểm soát tối ưu và nó cũng cung cấp cho bạn đầu ra JPG khá tốt).
Kurt Pfeifle

Bạn có thể thay đổi cài đặt Ghostscript bằng cách sử dụng cài đặt mật độ của ImageMagick cho PDF và nhận được kết quả tốt như vậy. Đừng gõ IM nếu bạn không biết cách sử dụng các tùy chọn của nó.
erjiang

1
k.: Này, tôi không gõ ImageMagick. Và tôi biết cách sử dụng các tùy chọn của nó, ngay cả khi áp dụng cấu hình màu ICC ... Nhưng bạn không thể chuyển tất cả các tùy chọn Ghostscript để dựng phim. Nhận xét của tôi đề cập đến lệnh được đề xuất của bạn, mà không đề cập đến -density.
Kurt Pfeifle

Tình cờ, tôi đọc được ở đâu đó trên SO rằng ImageMagick chuyển đổi nội bộ từ PDF sang PS và sau đó PS thành PNG khi bạn gọi nó theo cách này, vì vậy đó là một lý do khác để không làm theo cách này (hai chuyển đổi => chất lượng thấp hơn và chậm hơn).
Ibrahim
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.