2008-12-01 4 views
39

Próbuję użyć języka Python do przekonwertowania wielostronicowego pliku PDF na serię plików JPEG. Mogę z łatwością podzielić PDF na pojedyncze strony za pomocą dostępnych narzędzi, ale nie udało mi się znaleźć niczego, co mogłoby ukryć pliki PDF na obrazach.Konwertowanie pliku PDF na serię obrazów za pomocą Pythona

PIL nie działa, ponieważ nie może czytać plików PDF. Dwie opcje, które znalazłem, używają GhostScript lub ImageMagick przez powłokę. Nie jest to opłacalna opcja, ponieważ program ten musi być wieloplatformowy i nie mogę być pewny, czy któryś z tych programów będzie dostępny na komputerach, na których będzie zainstalowany i używany.

Czy są jakieś biblioteki Pythona, które mogą to zrobić?

+0

Czy kiedykolwiek znalazłeś rozwiązanie? Przejdę do pracy, ale nie mogę sprawić, by ImageMagick szanował strony. – stormlifter

+0

Hope this helps - [http://stackoverflow.com/questions/34129995/pdf-to-raw-image] (http://stackoverflow.com/questions/34129995/pdf-to-raw-image) –

Odpowiedz

17

ImageMagick ma Python bindings.

+0

I "Chciałbym dodać, że tak, możesz po prostu dołączyć do swojego projektu bibliotekę ImageMagick - wystarczy, że przejrzysz warunki licencji, abyś mógł umieścić odpowiednie informacje w pliku readme – Coderer

+13

Care, aby dowiedzieć się, jakie powiązania mogą być użyteczne? –

4

Nie można uniknąć zależności od Ghostscript. Nawet Imagemagick opiera się na Ghostscript dla swoich funkcji odczytu PDF. Powodem tego jest złożoność formatu PDF: plik PDF zawiera nie tylko informacje bitmapowe, ale głównie kształty wektorowe, folie przezroczyste itp. Ponadto dość skomplikowane jest ustalenie, które z tych obiektów pojawiają się na której stronie.

Poprawne renderowanie strony PDF jest oczywiście poza zakresem dla czystej biblioteki Python.

Dobrą wiadomością jest to, że Ghostscript jest wstępnie zainstalowany na wielu systemach Windows i Linux, ponieważ jest również potrzebny wszystkim tym drukarkom PDF (z wyjątkiem Adobe Acrobat).

1

Jeśli używasz Linuksa, niektóre wersje są dostarczane z narzędziem wiersza poleceń o nazwie "pdftopbm" po wyjęciu z pudełka. Sprawdź netpbm

4

Oto Co pracował dla mnie za pomocą modułu Python Ghostscript (występujący zainstalowany przez '$ pip zainstalować 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) 

ja również zainstalowany Ghostscript 9.18 na mój komputer i prawdopodobnie nie działałby inaczej.

+0

To wydaje się tworzyć nowy obraz i widzę miniaturkę pdf, ale z jakiegoś powodu nie zamyka ona pliku utworzonego nowego jpeg. Mam to wyjście z Pythona '##### 246643328 c_void_p (246643328L)' wszelkie pomysły? – Jed

+0

Czy możesz pomóc rozwiązać mój problem w tej sprawie? https://stackoverflow.com/questions/44448552/python-ghostscript-not-closing-output-file – Jed

+1

ghostscript wydaje się nie obsługiwać python3 – unlockme