gpt4 book ai didi

python - 如何在python中执行QR码的静默打印

转载 作者:行者123 更新时间:2023-12-05 05:33:35 25 4
gpt4 key购买 nike

我创建了一个个人 POS 应用程序,它通过 HTTP 请求发送一个 JSON 对象。 POS 应用程序的用户界面: enter image description here

当点击 Pay 或 Dispense 按钮​​时,将通过 POST 方法发送一个 json 对象。我在 python 中创建了一个草案 HTTP 服务器,只是为了接收发送的数据。这是代码:

from http.server import BaseHTTPRequestHandler, HTTPServer


hostName = "localhost"
serverPort = 49231


class MyServer(BaseHTTPRequestHandler):

def do_POST(self):
print(self.headers)
content_len = int(self.headers.get('content-length', 0))
post_body = self.rfile.read(content_len)
post_body = post_body.decode('utf-8')


if __name__ == "__main__":
webServer = HTTPServer((hostName, serverPort), MyServer)
print("Server started http://%s:%s" % (hostName, serverPort))

try:
webServer.serve_forever()
except KeyboardInterrupt:
webServer.server_close()
print("Server stopped.")

post_body 变量中,我有从 POS 应用程序发送的 json。我的想法是将json字符串编码成二维码然后打印二维码,以便将打印有二维码的纸拿走并扫描它。我用了qrcode模块创建二维码。我从字符串生成二维码的简单函数:

import tempfile
import qrcode


def generate_qr(qr_input):
with tempfile.NamedTemporaryFile(delete=False, suffix='.png') as tmpfile:
qr = qrcode.make(qr_input)
qr.save(tmpfile, qr.format, quality=100)
return open(tmpfile.name, 'rb'), 'image/png'

对于我找到的无声打印 this ,在 win32api 和 win32print 模块的帮助下,我们可以执行静默打印。我的问题是 win32api.ShellExecute文档说我们需要一个文档文件才能正确执行此方法。现在,我的自定义二维码生成器正在返回一个包含临时文件的元组。我也在用 tempfile模块,因为我不希望每次单击按钮时都创建一个包含二维码的新文件。我的问题是如何从 Python 中的临时 PNG 文件生成文档文件?

最后,由于此代码是为大学项目生成的,因此欢迎任何有关如何执行静默打印的新想法。

我的完整代码:

import tempfile
import win32api
import win32print
from http.server import BaseHTTPRequestHandler, HTTPServer
import qrcode

hostName = "localhost"
serverPort = 49231

def generate_qr(qr_input):
with tempfile.NamedTemporaryFile(delete=False, suffix='.png') as tmpfile:
qr = qrcode.make(qr_input)
qr.save(tmpfile, qr.format, quality=100)
return open(tmpfile.name, 'rb'), 'image/png'


class MyServer(BaseHTTPRequestHandler):

def do_POST(self):
print(self.headers)
# print_qr = {}
content_len = int(self.headers.get('content-length', 0))
post_body = self.rfile.read(content_len)
post_body = post_body.decode('utf-8')
print(post_body)
print_qr = generate_qr(post_body)
win32api.ShellExecute(
0,
'print',
print_qr,
'"%s"' % win32print.GetDefaultPrinter(),
'.',
0
)






if __name__ == "__main__":
webServer = HTTPServer((hostName, serverPort), MyServer)
print("Server started http://%s:%s" % (hostName, serverPort))

try:
webServer.serve_forever()
except KeyboardInterrupt:
webServer.server_close()
print("Server stopped.")

最佳答案

尝试并仔细阅读win32api,您的所有问题将得到解决

关于python - 如何在python中执行QR码的静默打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73783457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com