万里晴空 发表于 2021-6-26 08:19
这个DLL是一个打印软件的调用文件具体用什么语言开发的不太清楚,之前是用C#调用开发来实现打印的,在学p ...
问题大了,但是我不懂c语言,我给你个链接吧
https://www.cnblogs.com/chengxuyuancc/p/6374239.html
唉,这么久了一直没有解决,不过还好最终通过查阅各种相关资料找到了曲线救国的方式,现在发出来让遇到和我一样问题的朋友参考下。
# 先安装 codesoft 程序
# 然后找到 安装pywin32包,然后通过python根目录包文件夹中找到win32com->client->运行makepy.py文件,点击对应codesoft程序
# 生成com组件对接文件,然后在对接文件中查看最后一个类的调用注释说明,找到调用时用到的com组件名
# 然后import win32com.client,然后用win32com.client.Dispatch("Codesoft.Application")创建对象
# 可以正常调用了
import os
import sys
import win32com.client
currentFolder = os.getcwd()# 获取当前路径,
sys.path.append(currentFolder)# 加载当前路径, 否则clr.AddReference("BarTender")会报找不到文件
def PrintLAB(printer, printCount, filePath, items):
"""调用CodeSoft打印标签,通过调用com组件实现"""
"printer-打印机名"
"printCount-打印份数"
"filePath-打印模版路径"
"items-变量字典集"
try:
# 创建Application
csApp = win32com.client.Dispatch("Codesoft.Application")
# 模版路径
labfilename = filePath# currentFolder + "\\333.lab"
# 打开标签模板文件
csApp.Document.Open(labfilename, False)
# 激活加载的文档
doc = csApp.ActiveDocument
# 设置打印机名
doc.SelectPrinter(printer)
# 模版文件的变量中传值
try:
# print(doc.Variables.Count) # 模板文件中变量个数统计
# doc.Variables.Item(item).Value = items# 方法已被__getitem__替代
for key in items.keys():
if doc.Variables.__getitem__(key):
doc.Variables.__getitem__(key).Value = items # 向模版变量中添加变量值
except Exception as e:
return e
else:
# 设置打印张数
doc.Print(printCount) # 打印份数执行后自动开始打印
finally:
doc.Close # 关闭当前文档
csApp.Quit # 退出当前应用
return True, None
except Exception as e:
return False, e.args
if __name__ == "__main__":
items = {'IMEI1': '11111', 'IMEI3': '22222', 'VC': '33333'}
PrintLAB('Doro PDF Writer', '1', r'C:\Users\打印\001\111.Lab', items)
好
{:10_297:}
我不懂C语言啊
厉害,python + codesoft 只找到你这一份有效参考代码
只是照着试了下,没报错,打印机也没反应,就很尴尬...
可行!感谢分享!补充说明下,我测试用的codesoft9,生成com组件的时候select library选labelmanager,引用dispatch创建对象的时候用lppx.Application。
{:9_236:}
兄弟,能否实施python调用bartender来打印条码呢
{:5_95:}
{:10_279:}
{:10_258:}
{:10_254:}
{:9_241:}
大佬,python怎么调用BarTender打印?
{:10_277:}https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif
谁
不清楚
+1
{:10_254:}