2016-04-11 7 views
3

Ich versuche, PDFs in Python mit ReportLab zu erstellen. Ich muss die Größe des PNG-Bildes ändern, damit es korrekt auf die Seite passt. Wenn ich die Größe des Bildes ändere, sehen sie in Microsoft Photos gut aus oder werden per Drag & Drop auf ein Word-Dokument gezogen, aber wenn sie in das PDF-Dokument eingefügt werden, sind sie sehr unscharf.PNG unscharf, wenn mit ReportLab in PDF hinzugefügt.

This is the scaled image, die knackig erscheint.

This is a screen grab of the pdf, die unscharf erscheint.

Dies ist der Code, den ich bisher

bin mit
def resizeImage(): 
    basewidth = 500 
    img = PIL.Image.open('test.png') 
    wpercent = (basewidth/float(img.size[0])) 
    hsize = int((float(img.size[1])*float(wpercent))) 
    img = img.resize((basewidth,hsize), PIL.Image.ANTIALIAS) 
    img.save('sompic.png') 

def generatePDF(): 
    c = canvas.Canvas('template.pdf', pagesize=portrait(letter)) 
    #Header text 
    c.setFont('Helvetica', 48, leading=None) 
    c.drawCentredString(200, 300, "This is a pdf") 
    test = 'sompic.png' 
    c.drawImage(test, 50,350, width=None, height=None) 
    c.showPage() 
    c.save() 

resizeImage() 
generatePDF() 

Wenn jemand irgendwelche Vorschläge auf hat, wie ein scharfes Bild bekommen es wäre sehr dankbar!

Der Resize-Code kam von hier: How do I resize an image using PIL and maintain its aspect ratio?

+0

Sieht noch ziemlich knackig aus, aber das Bild im PDF ist größer als Ihr skaliertes Bild. Verwenden Sie ein Bild mit höherer Auflösung. – Kenney

+0

Ich weiß nicht viel über PIL oder Report Lab - aber ich frage mich, ob es eine Möglichkeit gibt, Interpolation für dieses Bild zu aktivieren (siehe Pdf Spec 8.9.5.3) – Jimmy

Antwort

0

Wenn jemand stolpert dies der Weg, den ich mit dem Gehen schließlich wurde eine Mischung aus Python und Latex als Latex verwendet, kann sehr gut mit PDF-Dateien und Bildern umgehen, was zu einem sauberes, klares Bild.