2008-12-01 70 views
39

我正在嘗試使用Python將多頁PDF轉換爲一系列JPEG。我可以使用可用的工具輕鬆地將PDF分成單獨的頁面,但我一直無法找到任何可以將PDF轉換爲圖像的東西。使用Python將PDF轉換爲一系列圖像

PIL不起作用,因爲它無法讀取PDF。我發現的兩個選項是通過shell使用GhostScript或ImageMagick。這對我來說不是一個可行的選擇,因爲這個程序需要跨平臺的,我不能確定這些程序中的哪一個程序將在它將被安裝和使用的機器上可用。

有沒有可以做到這一點的任何Python庫?

+0

你有沒有找到解決方案?我得到轉換工作,但似乎無法讓ImageMagick尊重網頁。 – stormlifter 2012-08-01 23:53:32

+0

希望這有助於 - [http://stackoverflow.com/questions/34129995/pdf-to-raw-image] (http://stackoverflow.com/questions/34129995/pdf-to-raw-image) – 2015-12-07 16:09:00

回答

17

ImageMagick有Python bindings

+0

我'喜歡這樣做,你可以在你的項目中包含ImageMagick庫 - 只要確保你查看了許可證條款,這樣你就可以在自述文件中加入適當的內容 – Coderer 2008-12-18 15:43:39

+13

注意詳細說明哪些綁定可能有用? – 2013-02-12 12:49:21

4

你無法避免Ghostscript的依賴。即使Imagemagick依靠Ghostscript來實現其PDF閱讀功能。原因在於PDF格式的複雜性:PDF不僅包含位圖信息,而且還包含矢量圖形,透明度等。 此外,找出哪些對象出現在哪個頁面上非常複雜。

因此,PDF頁面的正確渲染顯然超出了純Python庫的範圍。

好消息是Ghostscript預裝在很多Windows和Linux系統上,因爲所有這些PDF打印機(Adobe Acrobat除外)都需要它。

1

如果您使用的是Linux,某些版本附帶一個名爲'pdftopbm'的命令行實用程序。退房netpbm

4

下面是使用Python ghostscript的模塊(通過安裝 '$點子安裝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) 

我也上安裝Ghostscript的9.18我電腦,它可能不會工作,否則。