2008-12-01 46 views
39

Tôi đang cố gắng sử dụng Python để chuyển đổi PDF nhiều trang thành một chuỗi JPEG. Tôi có thể chia PDF thành từng trang một cách dễ dàng với các công cụ có sẵn, nhưng tôi không thể tìm thấy bất kỳ thứ gì có thể chuyển đổi PDF sang hình ảnh.Chuyển đổi PDF sang hàng loạt hình ảnh bằng Python

PIL không hoạt động vì không đọc được tệp PDF. Hai tùy chọn tôi đã tìm thấy đang sử dụng GhostScript hoặc ImageMagick thông qua trình bao. Đây không phải là một lựa chọn khả thi đối với tôi, vì chương trình này cần phải là nền tảng chéo, và tôi không thể chắc chắn một trong những chương trình đó sẽ có sẵn trên các máy, nó sẽ được cài đặt và sử dụng trên đó.

Có thư viện Python nào ở đó có thể thực hiện việc này không?

+0

Bạn đã bao giờ tìm được giải pháp chưa? Tôi đã chuyển đổi để làm việc, nhưng dường như không thể có được ImageMagick để tôn trọng các trang. – stormlifter

+0

Hy vọng điều này sẽ giúp - [http://stackoverflow.com/questions/34129995/pdf-to-raw-image] (http://stackoverflow.com/questions/34129995/pdf-to-raw-image) –

Trả lời

17

ImageMagick có Python bindings.

+0

I Bạn có thể đưa thư viện ImageMagick vào dự án của mình - chỉ cần chắc chắn rằng bạn xem lại các điều khoản cấp phép để bạn có thể đưa nội dung thích hợp vào readme – Coderer

+13

Chăm sóc để xây dựng những gì ràng buộc có thể hữu ích? –

4

Bạn không thể tránh sự phụ thuộc Ghostscript. Ngay cả Imagemagick cũng dựa vào Ghostscript cho các chức năng đọc PDF của nó. Lý do cho điều này là sự phức tạp của định dạng PDF: PDF không chỉ chứa thông tin bitmap, mà chủ yếu là hình dạng vector, trong suốt… Hơn nữa, việc tìm ra đối tượng này xuất hiện trên trang nào là khá phức tạp.

Vì vậy, việc hiển thị chính xác Trang PDF rõ ràng nằm ngoài phạm vi của thư viện Python thuần túy.

Tin vui là Ghostscript được cài đặt sẵn trên nhiều cửa sổ và hệ thống Linux, vì nó cũng cần thiết cho tất cả các máy in PDF đó (ngoại trừ Adobe Acrobat).

1

Nếu bạn đang sử dụng Linux, một số phiên bản đi kèm với tiện ích dòng lệnh có tên 'pdftopbm' ra khỏi hộp. Kiểm tra netpbm

4

Dưới đây là whats làm việc cho tôi bằng cách sử dụng mô-đun python GhostScript (cài đặt bởi '$ pip cài đặt GhostScript'):

import ghostscript 

def pdf2jpeg(pdf_input_path, jpeg_output_path): 
    args = ["pdf2jpeg", # actual value doesn't matter 
      "-dNOPAUSE", 
      "-sDEVICE=jpeg", 
      "-r144", 
      "-sOutputFile=" + jpeg_output_path, 
      pdf_input_path] 
    ghostscript.Ghostscript(*args) 

Tôi cũng cài đặt Ghostscript 9.18 trên của tôi máy tính và có lẽ nó sẽ không hoạt động nếu không.

+0

Điều này dường như tạo ra hình ảnh mới và tôi có thể thấy hình thu nhỏ pdf, nhưng vì lý do nào đó, nó không đóng tệp jpeg mới được tạo. Tôi nhận được kết quả này từ python '##### 246643328 c_void_p (246643328L)' bất kỳ ý tưởng nào? – Jed

+0

bạn có thể giúp giải quyết vấn đề của tôi đối với trường hợp này không? https://stackoverflow.com/questions/44448552/python-ghostscript-not-closing-output-file – Jed

+1

ghostscript dường như không có hỗ trợ cho python3 – unlockme

Các vấn đề liên quan