如何在热敏打印机纸上打印水平线?

0 投票
1 回答
50 浏览
提问于 2025-04-14 17:25

在HTML5中,我们用<hr>标签来画一条横线。现在,我想通过Javascript把数据发送到一个Python项目,以便在热敏打印机上打印出来:

let data = "Prestation : steak \n";
data += "Quantite : 3 \n";
data += // here I want to draw a horizontal line
data += "Prestation : coca \n";
data += "Quantite : 1";

$.post("localhost:5000/print", JSON.stringify({"printer": "some_printer_name", "payload": data}), function(response) {
    ...
});

下面是Python的代码:

文件 printing.py:

import logging
import win32print
import win32ui
import win32con

class Printing(object):
    printer = None
    # Constructor 
    def __init__(self, printer):
        self.printer = printer

    @staticmethod
    def print(printer_name, text):
        try:
            printer_handle = win32print.OpenPrinter(printer_name)
            dc = win32ui.CreateDC()
            dc.CreatePrinterDC(printer_name)
            dc.StartDoc(text)
            dc.StartPage()
            dc.TextOut(10, 10, text)
            dc.EndPage()
            dc.EndDoc()
            win32print.ClosePrinter(printer_handle)
            return True
        except:
            logging.info('Error occured during printing') 
            return False
        finally:
             pass

文件 app.py 在后台运行,等待来自Javascript的调用:

import logging
from flask import Flask, request, jsonify, make_response
from printing import Printing

app = Flask(__name__)

@app.route('/')
def index():
    return 'If you see this, it means the printer service is up and running !'

@app.route('/print', methods=["POST"])
def print():
    printer_name = request.json['printer']
    data = request.json['payload']
    result = Printing.print(printer_name, data)

    if result:
        response = make_response(
                jsonify(
                    {"message": str("Printing success")}
                ),
                200,
            )
        response.headers["Content-Type"] = "application/json"
        return response
    else:
        response = make_response(
                jsonify(
                    {"message": str("Printing failed"), "severity": "error"}
                ),
                500,
            )
        response.headers["Content-Type"] = "application/json"
        return response

if __name__ == '__main__':
    app.run(debug=True)

那么,如何编写横线的代码呢?

1 个回答

0

请看下面修改过的JavaScript代码,它包含了一串短横线字符("-"),用来表示一条线。这串字符是通过POST请求发送到Python后台的数据。Python代码使用win32print库来接收这些数据,并将其发送到指定的打印机。希望这对你有帮助。

let data = "Prestation : steak \n";
data += "Quantite : 3 \n";
data += "--------------------------------\n"; // This will be your horizontal line
data += "Prestation : coca \n";
data += "Quantite : 1";

$.post("http://localhost:5000/print", JSON.stringify({"printer": "some_printer_name", "payload": data}), function(response) {
    // Handle response
});

撰写回答