python - 使用 win32api 在内存对象中打印
问题描述
尝试打印使用 reportlab 生成的 PDF 但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)
解决方案
您正在尝试的事情根本不可能。您不能将字节数组作为参数传递给print
shell 动词。您需要将字节数组保存到一个临时文件中,然后将该临时文件名的名称作为参数传递给print
.
推荐阅读
- reactjs - handleChange 函数未在单击时触发... Reactjs 复选框
- reactjs - 电影图像不显示网页顶部
- c - 如何在 C 中将这个短字符串表示为带有空格和 0 的二进制字符串?
- node.js - 在节点中使用 WebSocket 的最佳时间是什么时候?
- javascript - 如何在 app.use 中间件中同时使用 get 和 post
- c - c语言void函数返回相同的结果
- tensorflow - tensorflow Lite 分段错误
- android - 2行文字的Android Switch
- dataframe - 如何从我的 datframe 中获取具有两个值的值?
- android - 如何在Android的启动活动中使用动画图像