Làm cách nào để chuyển đổi PDF thành hình ảnh?


327

Tôi có yêu cầu chuyển đổi các trang PDF thành hình ảnh. Có một hình nền với một số văn bản được viết, vì vậy khi tôi lưu nó dưới dạng hình ảnh thì chỉ có hình nền được lưu.

Có phần mềm nào có sẵn cho cùng để trang hoàn chỉnh có thể được chuyển đổi thành hình ảnh không?


Rõ ràng là cũng có thể với inkscape: stackoverflow.com/a/15484727/32453
rogerdpack

Câu trả lời:


299
  1. Cài đặt ImageMagick .

  2. Sử dụng thiết bị đầu cuối nơi đặt PDF:

    • Đối với tài liệu đầy đủ:

      convert -density 150 input.pdf -quality 90 output.png
      
    • Đối với một trang duy nhất:

      convert -density 150 input.pdf[666] -quality 90 output.png
      

Trong đó:

  • PNG, JPG hoặc (hầu như) bất kỳ định dạng hình ảnh khác có thể được chọn.

  • -density xxxsẽ đặt DPI thành xxx(phổ biến là 150 và 300).

  • -quality xxxsẽ đặt nén xxxcho các định dạng tệp PNG, JPG và MIFF (100 có nghĩa là không nén).

  • [666]sẽ chỉ chuyển đổi trang thứ 667 thành PNG (đánh số không dựa trên số 0 cũng [0]là trang đầu tiên).

  • Tất cả các tùy chọn khác (như cắt tỉa, thang độ xám, v.v.) có thể được xem trên trang web của Image Magic .


2
Câu trả lời là không hoạt động nhưng độ phân giải rất kém. Do đó, hiện tại không phải là một câu trả lời hữu ích. Có lẽ nếu convert có một số tham số có thể được chỉ định thì điều này có thể thay đổi.
Elijah Lynn

48
Câu trả lời này là chất lượng cao hơn nhiều askubuntu.com/a/50180/11929
Elijah Lynn

6
Bạn có thể thay đổi mật độ bằng cách thêm -density 300tham số
OHLÁLÁ

4
Vì vậy, bất cứ ai có thể xác nhận rằng chỉ định mật độ làm cho nó "tốt" như các câu trả lời khác ở đây, hay không? Cũng như một lưu ý cho những người theo dõi, ImageMagick gọi "ghostscript" để thực sự chuyển đổi từ pdf sang png ex: gs -q NOPROMPT ...-sDEVICE=pngalpha -r150x150 -sOutputFile=/var/tmp/Yf%d -f/var/tmp/L -f/var/tmp/Fic1và nếu bạn nhận được convert: no images defined output.pngnó có nghĩa là bạn không cài đặt ghostscript ...
rogerdpack

4
Phân tích cú pháp PDF trong hình ảnh đã bị vô hiệu hóa - bug.archlinux.org/task/59778 - nó có thể được kích hoạt thủ công bằng cách chỉnh sửa /etc/ImageMagick-7/policy.xmltệp và xóa PDFkhỏi<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />
Jezor

393

Bạn có thể sử dụng pdftoppmđể chuyển đổi PDF thành PNG:

pdftoppm input.pdf outputname -png

Điều này sẽ xuất ra từng trang trong PDF bằng định dạng outputname-01.png, với 01chỉ mục của trang.

Chuyển đổi một trang PDF

pdftoppm input.pdf outputname -png -f {page} -singlefile

Thay đổi {page}số trang. Nó được lập chỉ mục ở mức 1, vì vậy -f 1sẽ là trang đầu tiên.

Chỉ định độ phân giải của hình ảnh được chuyển đổi

Độ phân giải mặc định cho lệnh này là 150 DPI. Tăng nó sẽ dẫn đến cả kích thước tệp lớn hơn và chi tiết hơn.

Để tăng độ phân giải của tệp PDF đã chuyển đổi, hãy thêm các tùy chọn -rx {resolution}-ry {resolution}. Ví dụ:

pdftoppm input.pdf outputname -png -rx 300 -ry 300

24
Cảm ơn bạn rất nhiều. Chất lượng tốt hơn nhiều so với hình ảnh tưởng tượng hoặc đồ họa!
dAnjou

7
pdftoppm nhanh hơn nhiều so với chuyển đổi
zuo

4
Điều này thực sự tốt hơn nhiều so với tưởng tượng. Imagemagick thực sự đã thay đổi màu sắc một cách bất ngờ trong trường hợp của tôi!
NoBackingDown 17/9/2015

13
điều này là tốt!, nhưng nó dễ viết hơn một chút -r 300thay vì chỉ định độ phân giải x và y một cách độc lập khi bạn muốn đặt chúng thành cùng một giá trị.
mlc

2
Tôi đã thành công hơn nhiều với pdftoppm so với hình ảnh tưởng tượng.
Michael Hays

22

IIRC GIMP có khả năng sử dụng các tệp PDF, tức là chuyển đổi chúng thành hình ảnh. Vì vậy, nếu bạn muốn chỉnh sửa hình ảnh ngay lập tức - GIMP là bạn của bạn.


GIMP thực sự có thể mở các tệp PDF, mỗi trang là một lớp. Chọn "Xuất dưới dạng" dường như chỉ lưu lớp hiện tại, nhưng bạn có thể dễ dàng xóa lớp sau khi xuất và chạy lại "Xuất dưới dạng".
Dan Dascalescu

12

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 bị giảm chất lượng.

Phương pháp trong câu trả lời được đưa ra ở đây dẫn đến một đầu ra có kích thước tương đương với đầu vào và không bị giảm chất lượng.

TLDR - Sử dụng pdfimages:pdfimages -j input.pdf output

Trích dẫn câu trả lời được liên kết:

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 PixelsPerInchhoặc -units PixelsPerCentimeternế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ự convertkhi đư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.

pdfimagesxem 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, pdfimagessẽ 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 -jtù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, pdfimageschuyể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để .jpgbướ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ế.


8

Nếu pdf của bạn được quét, hình ảnh đã được lưu trữ như một phần của pdf. bạn chỉ cần trích xuất chúng bằng pdfimages:

pdfimages my-file.pdf prefix 

2
Đây là giải pháp hoàn hảo cho các tệp pdf được quét, vì với điều này bạn có thể, với một lệnh, trích xuất các jpg gốc và không cần giải nén thêm.
Jose Gómez

3

Để có một trang duy nhất từ ​​gm convert, hãy thêm [N] (với N số trang bắt đầu từ 0) vào tên PDF, tức là gm convert foo.pdf[11] out.pnglấy trang thứ 12 từ PDF.

Để pdftoppmsử dụng -f N -singlefile, trong đó N là số trang bắt đầu từ 1, tức là pdftoppm -f 12 -singlefile foo.pdf outcho cùng một kết quả. Dường như luôn thêm ".png" vào tên tệp đầu ra và không có cách nào để ngăn chặn điều này.


2

Bạn có thể sử dụng chuyển đổi và chỉ định mật độ cao hơn bằng cách sử dụng -densitytùy chọn.

ví dụ. convert -d 300 foo.pdf bar.png


bạn có thể giải thích thêm về mật độ là gì và nó có thể làm gì không?
rdʒɑ

1
@AgentCool Nó chỉ định mật độ hình ảnh ngang và dọc (tính bằng ppi).
Arjun

2

Nếu bạn chỉ muốn chuyển đổi một trang cụ thể của PDF thành PNG, bạn có thể pdftkchuyển sang convert( được mô tả ở trên ) như thế này:

pdftk document.pdf cat 12 output - | convert - document-page-12.png

1

Master PDF Editor (ver 2.2) có tùy chọn này xuất hiện. Mở tệp PDF và sau đó đi đến Tệp> Xuất sang> Hình ảnh. Nó trình bày một hộp thoại trong đó bạn có thể xác định các tùy chọn khác nhau cho đầu ra. Vô cùng hữu ích. Hy vọng thông tin này sẽ giúp.


Đó là trong phiên bản miễn phí hoặc trả phí? Trong phiên bản của tôi, tùy chọn có màu xám? Điều đó có nghĩa là tôi cần phải trả tiền? Có phiên bản trả phí không?
Joshua Robison

0

PDF Mod cũng cho phép xuất hình ảnh của tất cả hoặc các trang riêng lẻ của tệp PDF.

  • Mở tệp PDF trong PDF Mod
  • Chọn trang -
  • Chỉnh sửa> Xuất hình ảnh
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.