PDF mit Python rastern

Hintergrund

In bestimmten Umgebungen funktionierte das Zeichnen von Vektor-PDFs manchmal nicht. Um dieses Problem zu vermeiden, möchte ich eine gerasterte PDF-Datei wie JPEG anstelle eines Vektors konvertieren und speichern.

Methode

Es wurde leicht mit Python3 realisiert.

Vorbereitungen

Code

main.py


import pdf2image as p
from PIL import Image
import sys

#Auflösung bei Rasterung
#Je größer der Wert, desto schöner ist er, aber es braucht Zeit (die Schönheit ist bei einem bestimmten Wert besser)
DPI = 300

#Bildhöhe der endgültigen Ausgabe PDF
HEIGHT = 1200

pdfpath = sys.argv[1]
images = p.convert_from_path(pdfpath, dpi=DPI)

def resize(image):
    r = HEIGHT / image.height
    width = int(image.width * r)
    return image.resize((width, HEIGHT), Image.LANCZOS)

images = list(map(resize, images))
images = list(map(lambda image: image.convert('RGB'), images))

images[0].save('output.pdf',save_all=True, append_images=images[1:])

Rasteren Sie zuerst auf eine höhere Auflösung und reduzieren Sie dann auf das Bild mit der gewünschten Auflösung, um die Bildqualität zu verbessern.

Wie benutzt man

Angenommen, die zu konvertierende PDF-Datei (hoge.pdf) befindet sich im Ausführungsordner.

$ python main.py hoge.pdf

Wenn der obige Befehl ausgeführt wird, wird im ausgeführten Verzeichnis output.pdf generiert.

Komplett

Recommended Posts

PDF mit Python rastern
OCR aus PDF in Python
Konvertieren Sie Markdown in Python in PDF
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 6 in Python
Täglicher AtCoder # 18 in Python
Bearbeiten Sie Schriftarten in Python
Singleton-Muster in Python
Dateioperationen in Python
Lesen Sie DXF mit Python
Täglicher AtCoder # 53 in Python
Tastenanschlag in Python
Verwenden Sie config.ini mit Python