|
|
"""
|
|
|
此文件是用来生成Code128条形码 并实现打印功能
|
|
|
"""
|
|
|
import os
|
|
|
|
|
|
from PyQt5.QtGui import *
|
|
|
from PyQt5.QtCore import *
|
|
|
from PyQt5.QtWidgets import QApplication
|
|
|
from PyQt5.QtPrintSupport import QPrinter
|
|
|
from pystrich.code128 import Code128Encoder
|
|
|
import uuid
|
|
|
|
|
|
|
|
|
class CreateBarcode:
|
|
|
|
|
|
"""
|
|
|
Code128Encoder(options={}) options参数
|
|
|
* ttf_font:用于呈现标签的truetype字体文件的绝对路径
|
|
|
* ttf_fontsize:绘制标签的字体大小
|
|
|
* label_border:条形码和标签之间的像素空间数
|
|
|
* bottom_border:标签和底部边框之间的像素空间数
|
|
|
* height:图像的高度(以像素为单位)
|
|
|
* show_label:是否在条形码下面显示标签(默认为True)“”
|
|
|
"""
|
|
|
code_path = os.path.join(os.getcwd(), "img")
|
|
|
if not os.path.exists(code_path):
|
|
|
os.umask(0)
|
|
|
os.makedirs(code_path)
|
|
|
def __init__(self):
|
|
|
pass
|
|
|
|
|
|
|
|
|
def create_Code128_img(self, barcode):
|
|
|
a = Code128Encoder(barcode, options={
|
|
|
'ttf_font': os.path.join(os.getcwd(),'arial.ttf'),
|
|
|
'label_border': 0, 'height': 45, 'bottom_border': 0,'ttf_fontsize':13,
|
|
|
})
|
|
|
# bar_width 条码宽度尺寸
|
|
|
|
|
|
|
|
|
file_name = os.path.join(self.code_path, str(uuid.uuid4()) + '.png')
|
|
|
a.save(file_name, bar_width=1)
|
|
|
self.printer_code(file_name)
|
|
|
|
|
|
def printer_code(self, file_name):
|
|
|
a = QApplication([])
|
|
|
document = QTextDocument()
|
|
|
html = """
|
|
|
<head>
|
|
|
<title>Report</title>
|
|
|
<style>
|
|
|
</style>
|
|
|
</head>
|
|
|
<body>
|
|
|
<img src="{}">
|
|
|
</body>
|
|
|
""".format(file_name)
|
|
|
|
|
|
document.setHtml(html)
|
|
|
printer = QPrinter()
|
|
|
printer.setPageSize(QPagedPaintDevice.Custom)
|
|
|
printer.setPaperSize(QSizeF(30.0,18.0),QPrinter.Millimeter)
|
|
|
# 设置纸张到条码的边距 左上下右
|
|
|
printer.setPageMargins(0, 3, 0, 0, QPrinter.Millimeter)
|
|
|
|
|
|
#document.setPageSize(QSizeF(printer.pageRect().size()))
|
|
|
document.setPageSize(QSizeF(100.0,65.0))
|
|
|
|
|
|
print('正在打印中。。。。')
|
|
|
document.print_(printer)
|
|
|
print('打印完成。。')
|
|
|
# os.remove(file_name)
|
|
|
|
|
|
def create_drug_lobel_code(self, **kwargs):
|
|
|
a = Code128Encoder(
|
|
|
# kwargs.get("code_number"),
|
|
|
"111",
|
|
|
options={
|
|
|
'ttf_font': os.path.join(os.getcwd(),'arial.ttf'),
|
|
|
'label_border': 0, 'height': 15, 'bottom_border': 0,'ttf_fontsize':0,
|
|
|
})
|
|
|
# bar_width 条码宽度尺寸
|
|
|
|
|
|
|
|
|
file_name = os.path.join(self.code_path, str(uuid.uuid4()) + '.png')
|
|
|
print(file_name)
|
|
|
a.save(file_name, bar_width=1)
|
|
|
kwargs["file_path"] = file_name
|
|
|
self.printer_drug_label(**kwargs)
|
|
|
|
|
|
def printer_drug_label(self, **kwargs):
|
|
|
a = QApplication([])
|
|
|
document = QTextDocument()
|
|
|
# <p style="font-size:12px;">
|
|
|
html = """
|
|
|
<head>
|
|
|
<title>Report</title>
|
|
|
<style></style>
|
|
|
</head>
|
|
|
<body>
|
|
|
<div style="display:flex; align-content: center;width:100%">
|
|
|
<p style="font-size:8px;font-family:黑体; width: 100%;">
|
|
|
<br />
|
|
|
试剂名称: {} <br />
|
|
|
级别: {} <br />
|
|
|
批号: {} <br />
|
|
|
编号: {} <br />
|
|
|
货位号: {} {}
|
|
|
</p>
|
|
|
</div>
|
|
|
</body>
|
|
|
""".format(
|
|
|
kwargs.get("name"),
|
|
|
kwargs.get("purity"),
|
|
|
kwargs.get("standard_code"),
|
|
|
kwargs.get("remark12"),
|
|
|
kwargs.get("client_name"),
|
|
|
kwargs.get("flow_position_code"),
|
|
|
kwargs.get("file_path"),
|
|
|
)
|
|
|
document.setHtml(html)
|
|
|
printer = QPrinter()
|
|
|
printer.setPageSize(QPagedPaintDevice.Custom)
|
|
|
# printer.setPaperSize(QSizeF(60.0,40.0),QPrinter.Millimeter)
|
|
|
printer.setPaperSize(QSizeF(30.0,18.0),QPrinter.Millimeter)
|
|
|
# printer.setPaperSize(QSizeF(30.0,50.0),QPrinter.Millimeter)
|
|
|
# 设置纸张到条码的边距 左上下右
|
|
|
printer.setPageMargins(6, 3, 0, 0, QPrinter.Millimeter)
|
|
|
# printer.setPageMargins(20, 20, 0, 0, QPrinter.Millimeter)
|
|
|
|
|
|
document.setPageSize(QSizeF(printer.pageRect().size()))
|
|
|
#document.setPageSize(QSizeF(50.0,30.0))
|
|
|
|
|
|
print('正在打印中。。。。')
|
|
|
document.print_(printer)
|
|
|
print('打印完成。。')
|
|
|
os.remove(kwargs.get("file_path"))
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
kwS = {
|
|
|
"code_number":"200001",
|
|
|
"medicament_name":"1111111",
|
|
|
"purity":"12",
|
|
|
"solvent": "2313",
|
|
|
"start_time": "2022-10-15",
|
|
|
"end_time": "2022-10-16",
|
|
|
"user_name":"测试账户"
|
|
|
}
|
|
|
CreateBarcode().create_drug_lobel_code(**kwS)
|
|
|
# CreateBarcode().create_Code128_img("200000001")
|