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.
Es wurde leicht mit Python3 realisiert.
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.
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