Câu trả lời hiện được chấp nhận thực hiện công việc nhưng dẫn đến đầu ra có kích thước lớn hơn và bị giảm chất lượng.
Không rõ ý của bạn là "giảm chất lượng". Điều đó có thể có nghĩa là rất nhiều thứ khác nhau. Bạn có thể gửi một số mẫu để minh họa? Có lẽ cắt phần tương tự ra khỏi các phiên bản chất lượng kém và chất lượng tốt (dưới dạng PNG để tránh mất chất lượng hơn nữa).
Có lẽ bạn cần sử dụng -density
để thực hiện chuyển đổi ở mức cao hơn:
convert -density 300 file.pdf page_%04d.jpg
(Bạn có thể trả trước -units PixelsPerInch
hoặc -units
PixelsPerCentimeter
nếu cần. Bản sao của tôi mặc định là ppi.)
Cập nhật: Như bạn đã chỉ ra, gscan2pdf
(cách bạn đang sử dụng) chỉ là một trình bao bọc cho pdfimages
(từ poppler ). pdfimages
không làm điều tương tự convert
khi đưa PDF vào làm đầu vào.
convert
lấy PDF, hiển thị nó ở độ phân giải nào đó và sử dụng bitmap kết quả làm hình ảnh nguồn.
pdfimages
xem qua PDF để xem hình ảnh bitmap nhúng và xuất từng tệp thành một tệp. Nó chỉ đơn giản bỏ qua bất kỳ lệnh vẽ văn bản hoặc vector trong PDF.
Kết quả là, nếu những gì bạn có là một tệp PDF chỉ là một trình bao bọc xung quanh một loạt ảnh bitmap, pdfimages
sẽ thực hiện công việc trích xuất chúng tốt hơn nhiều, bởi vì nó mang lại cho bạn dữ liệu thô ở kích thước ban đầu. Bạn cũng có thể muốn sử dụng -j
tùy chọn này pdfimages
, vì một tệp PDF có thể chứa dữ liệu JPEG thô. Theo mặc định, pdfimages
chuyển đổi mọi thứ thành định dạng PNM và chuyển đổi JPEG> PPM> JPEG là một quá trình mất mát.
Vì vậy, hãy thử
pdfimages -j file.pdf page
Bạn có thể hoặc không cần phải làm theo điều đó với một convert
để .jpg
bước (tùy thuộc vào những gì bitmap định dạng PDF được sử dụng).
Tôi đã thử lệnh này trên một tệp PDF mà tôi đã tự tạo từ một chuỗi các hình ảnh JPEG. Các JPEG được trích xuất là byte theo byte giống hệt với hình ảnh nguồn. Bạn không thể có được chất lượng cao hơn thế.