Печать в памяти объекта с использованием win32api - PullRequest
0 голосов
/ 07 мая 2018

Пытается напечатать PDF-файл, созданный с использованием reportlab, но ShellExecute() выдает TypeError: Objects of type 'bytes' can not be converted to Unicode.

Я пробовал pdf.decode('utf-8'), но получаю 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)

1 Ответ

0 голосов
/ 07 мая 2018

То, что вы пытаетесь сделать, просто невозможно. Вы не можете передать байтовый массив в качестве аргумента глаголу оболочки print. Вам необходимо сохранить байтовый массив во временный файл, а затем передать имя этого временного имени файла в качестве аргумента print.

...