python - Udskrivning i hukommelsesobjekt ved hjælp af win32api

Indlæg af Hanne Mølgaard Plasc

Problem



Forsøger at udskrive en PDF genereret med reportlab men ShellExecute() kaster TypeError: Objects of type 'bytes' can not be converted to Unicode.


Jeg har prøvet pdf.decode('utf-8') men får UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 10: invalid start byte


from io import BytesIO
import win32api
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter


x = 100
y = 100
buffer = BytesIO()
p = canvas.Canvas(buffer, pagesize=letter)
p.drawString(x, y, "Hello World")
p.showPage()
p.save()
pdf = buffer.getvalue()
buffer.close()

win32api.ShellExecute(0, "print", pdf, None, ".", 0)

Bedste reference


Det, du forsøger, er simpelthen ikke muligt. Du kan ikke passere et byte array som argumentet til print shell-verben. Du skal gemme byte-arrayet til en midlertidig fil og derefter sende navnet på det midlertidige filnavn som argumentet til print.