Wie kann man im Python-Code eine bestimmte Seite in einem PDF effizient als JPEG-Datei speichern? (Anwendungsfall: Ich habe einen Python-Flask-Webserver, auf dem PDF-Dateien hochgeladen werden und JPEG-Dateien, die jeder Seite entsprechen, gespeichert werden.)
Diese Lösung ist nah, aber das Problem ist, dass nicht die gesamte Seite in JPEG konvertiert wird.
Antworten:
Die pdf2image-Bibliothek kann verwendet werden.
Sie können es einfach installieren mit,
Nach der Installation können Sie den folgenden Code verwenden, um Bilder abzurufen.
Speichern von Seiten im JPEG-Format
Bearbeiten: Das Github-Repo pdf2image erwähnt auch, dass es verwendet
pdftoppm
und andere Installationen erfordert:Sie können die neueste Version unter Windows mit anaconda installieren, indem Sie Folgendes tun:
Hinweis: Windows-Versionen bis 0.67 sind unter http://blog.alivate.com.au/poppler-windows/ verfügbar. Beachten Sie jedoch, dass 0.68 im August 2018 veröffentlicht wurde, sodass Sie nicht die neuesten Funktionen oder Fehlerbehebungen erhalten.
quelle
Ich fand diese einfache Lösung, PyMuPDF , Ausgabe in PNG-Datei. Beachten Sie, dass die Bibliothek als "fitz" importiert wird, ein historischer Name für die verwendete Rendering-Engine.
quelle
image = page.getPixmap(matrix=fitz.Matrix(150/72,150/72))
extrahiert das Bild mit 150 DPI. Stellen Sie eine Frage zu diesem Thema.Die Python-Bibliothek
pdf2image
(in der anderen Antwort verwendet) macht in der Tat nicht viel mehr als nur das Startenpdttoppm
mitsubprocess.Popen
. Hier ist eine kurze Version, die dies direkt tut:Hier ist der Windows-Installationslink für
pdftoppm
(in einem Paket namens poppler enthalten): http://blog.alivate.com.au/poppler-windows/quelle
Es ist nicht erforderlich, Poppler auf Ihrem Betriebssystem zu installieren. Das wird funktionieren:
pip install Wand
quelle
@gaurwraith, installiere poppler für Windows und verwende pdftoppm.exe wie folgt:
Laden Sie die Zip-Datei mit den neuesten Binärdateien / DLLs von Poppler von http://blog.alivate.com.au/poppler-windows/ herunter und entpacken Sie sie in einen neuen Ordner in Ihrem Programmdateienordner. Zum Beispiel: "C: \ Programme (x86) \ Poppler".
Fügen Sie Ihrer Umgebungsvariablen SYSTEM PATH "C: \ Programme (x86) \ Poppler \ poppler-0.68.0 \ bin" hinzu.
Installieren Sie in der cmd-Zeile das Modul pdf2image -> "pip install pdf2image".
@vishvAs vAsuki, dieser Code sollte die gewünschten JPGs über das Unterprozessmodul für alle Seiten eines oder mehrerer PDFs in einem bestimmten Ordner generieren:
Oder verwenden Sie das Modul pdf2image:
quelle
Es gibt ein Dienstprogramm namens pdftojpg, mit dem das PDF in img konvertiert werden kann
Den Code finden Sie hier https://github.com/pankajr141/pdf2jpg
quelle
GhostScript ist für ein Linux-basiertes System viel schneller als Poppler.
Im Folgenden finden Sie den Code für die Konvertierung von PDF in Bilder.
GhostScript kann unter macOS mit installiert werden
brew install ghostscript
Installationsinformationen für andere Plattformen finden Sie hier . Wenn es noch nicht auf Ihrem System installiert ist.
quelle
Ich benutze eine (vielleicht) viel einfachere Option von pdf2image:
Dies ist ein kleiner Teil eines Bash-Skripts in einer Schleife für die Verwendung eines schmalen Casting-Geräts. Überprüft alle 5 Sekunden hinzugefügte PDF-Dateien (alle) und verarbeitet sie. Dies ist für ein Demo-Gerät, am Ende wird die Konvertierung auf einem Remote-Server durchgeführt. Jetzt in .PNG konvertieren, aber auch .JPG ist möglich.
Diese Konvertierung zusammen mit Übergängen im A4-Format, der Anzeige eines Videos, zweier flüssiger Bildlauftexte und eines Logos (mit Übergang in drei Versionen) setzt den Pi3 auf fast 4x 100% CPU-Last ;-)
quelle
quelle
Hier ist eine Lösung, die keine zusätzlichen Bibliotheken erfordert und sehr schnell ist. Dies wurde gefunden von: https://nedbatchelder.com/blog/200712/extracting_jpgs_from_pdfs.html# Ich habe den Code in eine Funktion eingefügt, um es bequemer zu machen.
Rufen Sie convert mit dem PDF-Pfad als Argument auf, und die Funktion erstellt eine JPG-Datei im selben Verzeichnis
quelle