Python怎样用python 打印机 接口打印中文

时间: June 8, 2012
学习python首先得找个顺手的编辑器。这里编辑器选择了Sublime Text2,原因是符合Windows下操作习惯,美观,方便。当然,也可以选择vim或Notepad++。python的版本选择到现在是新手新项目一般都建议python3,不过很多python库至今都没有迁移或没完成迁移到python3的工作,很多应用系统也都还停在使用python2的阶段,python3似乎目前的版本并没有太多让这些应用迁移的动力。这里,先学习python2.6吧,应用就使用这个版本。新建文件,保存为p001.py。 输入:print "Hello world!"
保存,再按Ctrl-B,可以直接在编辑器下方看到输出结果。加段注释吧:"""这是第一个python程序
用于打印一个字符串
很简单的入门小程序
print "Hello world!"
再运行,结果有些悲剧:File "H:\python\p001.py", line 1 SyntaxError: Non-ASCII character '\xe8' in file H:\python\p001.py on line 1, but
see http://www.python.org/peps/pep-0263.html for details [Finished]仅仅只是加个多行注释,就出错了。查看可得知原因,是python对源码的字符编码说明有要求,要求在源码开始加上对代码运行和字符编码的说明。类似这样:#!d:/python26/python
# -*- coding: utf-8 -*-
第一行是描述python解析器在什么位置;第二行是说明本代码使用什么字符编码,因为ST2缺省就是utf-8无BOM,所以这选择utf-8。python中所支持的字符集编码可以查看。再次运行,一切正常了。再把打印的字符串后面加上中文试试:#!d:/python26/python
# -*- coding: utf-8 -*-
"""这是第一个python程序
用于打印一个字符串
很简单的入门小程序
print "Hello world! 你好,世界!"
输出结果为:Hello world!你好,世界!但我们切换到命令行,通过命令python p001.py悲剧了:Hello world!浣犲ソ锛屼笘鐣岋紒是的,在ST2里显示正常的输出,在console里汉字显示为乱码。想一想,我们的源码是utf-8,ST2缺省对字符的处理都是使用UTF-8,所以汉字显示正常。但我们Windows XP或Win7是中文环境,在console中执行时,输出字符应该输出GBK或GB18030才能正常显示。我们得保证代码在两种情况下得到一致的结果。于是得让ST2输出字符编码为GBK或GB18030。修改Packages/Python/Python.sublime-build ://
"cmd": ["python", "-u", "$file"],
"cmd": ["d:/python26/python.exe", "-u", "$file"],
"cmd": ["f:/python3/python.exe", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"encoding": "gbk" }
再切换到p001.py源码编辑区,按Ctrl-B,得到:Hello world!浣犲ソ锛屼笘鐣岋紒[Finished]输出是乱码,这似乎是更糟了,但与console下的结果一样了。我们接着修改源码:#!d:/python26/python
# -*- coding: utf-8 -*-
"""这是第一个python程序
用于打印一个字符串
很简单的入门小程序
print "Hello world!你好,世界!".decode('utf-8').encode('gbk')
再次运行:Hello world!你好,世界![Finished]在cmd中执行,也得到同样的结果。在python2中,内部对字符使用unicode进行处理,所以,我们先得对utf-8编码的字符串decode,转换成unicode,再encode转换成gbk,这样就可以在中文Windows下正常显示输出了。(升级到python3后,这个问题的解决方式有所变化)
添加新评论
: 总结的非常好!
: Farbox用了有段日子了,刚才搜东西看到这儿说的“当然,大陆访...
: 请教博主,有没有 PHP 5.3.5 的 VC 6
DLL。我...
: 怎么在farbox里面新建分类呢?
: 使用上面的代码,会在根目录下生产index.bak,不知道系统哪...
: 为什么我的电脑没有gai.conf文件,跪求大大。。。
: 棒棒的。。。
: 嵌入HTML代码即可
: 大侠,如果想删除同一分类id下相邻的两篇文章应该怎么修改呢?
: 看到您写的注释,很详细。 赞一个。
不过我在使用的过程中遇到几个...
推荐服务商Python调用打印机参考例子
Python调用打印机参考例子
[摘要: 参考材料:
http://blog.csdn.net/jdh99/article/details/
http://www.oschina.net/question/020
/ctcg326%40126/blog/static/75812]
&参考资料:
http://blog.csdn.net/jdh99/article/details/
http://www.oschina.net/question/020
/ctcg326%40126/blog/static//
http://codego.net/447659/
部分样例:
from PyQt5.QtWidgets import (QApplication, QWidget, QTableWidget,QPushButton,
QVBoxLayout,
QTableWidgetItem)
from PyQt5.QtGui import
QPixmap, QPainter, QImage, QTextDocument
from PyQt5.QtPrintSupport import
QPrinter, QPrintDialog, QPrintPreviewDialog
from PyQt5.QtCore import QRect, QPoint, QSize ,
# 有预览框# #
def on_htmlButton_clicked():
printer =QPrinter(QPrinter.HighResolution)
#/* 打印预览 */
preview =QPrintPreviewDialog(printer,widget )
preview.paintRequested.connect(printHtml)
显示 预览框
#preview.exec()
preview.exec_()
def printHtml(printer):
html = """&html&
&head&&/head&
&h1&55555&/h1&&b&bold&/b&&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&h1&55555&/h1&&b&bold&/b&
&/html&"""
textDocument = QTextDocument()
textDocument.setHtml(html)
#textDocument.print(printer)
textDocument.print_(printer)
def on_picButton_clicked():
printer =QPrinter(QPrinter.HighResolution)
#/* 打印预览 */
preview =QPrintPreviewDialog(printer,widget )
* QPrintPreviewDialog类提供了一个打印预览对话框,里面功能比较全,
* paintRequested(QPrinter *printer)是系统提供的,
* 当preview.exec()执行时该信号被触发,
* plotPic(QPrinter *printer)是用户自定义的槽函数,图像的绘制就在这个函数里。
preview.paintRequested.connect(plotPic)
preview.exec()#/* 等待预览界面退出 */
plotPic(printer):
painter =QPainter(printer);
image = QPixmap()
image=widget.grab(QRect( QPoint( 0, 0 ),
QSize( widget.size().width(),
widget.size().height()
)# /* 绘制窗口至画布 */
rect = painter.viewport();
size = image.size();
size.scale(rect.size(), Qt.KeepAspectRatio)#
//此处保证图片显示完整
painter.setViewport(rect.x(), rect.y(),size.width(), size.height());
painter.setWindow(image.rect());
painter.drawPixmap(0,0,image); #/* 数据显示至预览界面 */
import sys
app = QApplication(sys.argv)
tablewidget = QTableWidget()
## 设置列数
tablewidget.setColumnCount(4)
tablewidget.horizontalHeader().setDefaultSectionSize(150)
## QStringList在PyQt5
header= ["name", "last modify time","type",
tablewidget.setHorizontalHeaderLabels(header)
tablewidget.insertRow(0)
tablewidget.insertRow(0)
QTableWidgetItem("aa" )
QTableWidgetItem("bb" )
QTableWidgetItem("cc" )
QTableWidgetItem("dd" )
tablewidget.setItem( 0, 0, pItem1 )
tablewidget.setItem( 0, 1, pItem2 )
tablewidget.setItem( 0, 2, pItem3 )
tablewidget.setItem( 0, 3, pItem4 )
tablewidget.setMinimumSize(800, 600)
button = QPushButton('打印界面')
button.clicked.connect(on_picButton_clicked)
button_txt = QPushButton('打印文字')
button_txt.clicked.connect(on_htmlButton_clicked)
widget = QWidget()
layout = QVBoxLayout(widget)
layout.addWidget(button)
layout.addWidget(button_txt)
layout.addWidget(tablewidget)
widget.show()
sys.exit(app.exec_())
#------------------------- printer.py ----------------------
# 直接打印,不预览
# -*- coding: utf-8 -*-
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtPrintSupport import QPrinterInfo, QPrinter
class Printer:
#打印机列表
@staticmethod
def printerList():
printer = []
printerInfo = QPrinterInfo()
print('availablePrinterNames', printerInfo.availablePrinterNames() )
print('defaultPrinterName', printerInfo.defaultPrinterName())
for item in printerInfo.availablePrinters():
printer.append(item.printerName())
return printer
@staticmethod
def printing(printer, context):
p = QPrinter()
doc = QTextDocument()
htmlStr = context
print('aaaa', htmlStr)
doc.setHtml(htmlStr)
doc.setPageSize(QSizeF(p.logicalDpiX()*(80/25.4),
p.logicalDpiY()*(297/25.4)))
p.setOutputFormat(QPrinter.NativeFormat)
doc.print_(p)
@staticmethod
def printing_22(printer, context):
printerInfo = QPrinterInfo()
p = QPrinter()
for item in printerInfo.availablePrinters():
if printer == item.printerName():
p = QPrinter(item)
doc = QTextDocument()
doc.setHtml(u'%s' % context)
doc.setPageSize(QSizeF(p.logicalDpiX()*(80/25.4),
p.logicalDpiY()*(297/25.4)))
p.setOutputFormat(QPrinter.NativeFormat)
doc.print_(p)
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
##########################################
html = '&html&&head&&/head&&body&&h1&55555&/h1&&b&bold&/b&&/body&&/html&'
p = "defaultPrinter" #打印机名称
#Printer.printing(p, html)
#Printer.printerList()
Printer.printing_22(p, html)
#####################################################
sys.exit(app.exec_())
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QApplication
from PyQt5.QtPrintSupport import QPrinter
# 将要打印的东西生成pdf
a=QApplication([])
document = QTextDocument()
html = """
&title&Report&/title&
&table width="100%"&
&td&&img src="{}" width="30"&&/td&
&td&&h1&REPORT汉字试试哈&/h1&&/td&
&p align=right&&img src="{}" width="300"&&/p&
&p align=right&Sample&/p&
""".format('./aa.png', './bb.png')
document.setHtml(html)
printer = QPrinter()
printer.setResolution(96)
printer.setPageSize(QPrinter.Letter)
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName("test.pdf")
# 设置纸张的边距
printer.setPageMargins(12, 16, 12, 20, QPrinter.Millimeter)
document.setPageSize(QSizeF(printer.pageRect().size()))
print(document.pageSize(), printer.resolution(), printer.pageRect())
document.print_(printer)
感谢关注 Ithao123Python频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
Swift是Apple在WWDC2014所发布的一门编程语言,用来撰写OS X和iOS应用程序[1]。在设计Swift时.就有意和Objective-C共存,Objective-C是Apple操作系统在导入Swift前使用的编程语言
Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束。Swift采用了安全的编程模式和添加现代的功能来使得编程更加简单、灵活和有趣。界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向。
IThao123周刊关于打印机控制的问题_python吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:110,107贴子:
关于打印机控制的问题收藏
因为需要连续打印,针式打印机打多了会进行,所以想问一下,如果控制机印机在打印多少次后,自动回退一点,我看到其他语言可以做到控制打印机进纸和退纸,不知道python是否可以做到让打印机回退一点。
python北风网 先免费试听 在线即可预约7天试听教程学完之后立马就业高薪就业
UPUPUPUPUP
兄弟,你的这个地址里面确实匹配不到 src="xxx" height 的内容, 你可以查看网页源代码查找,不用使用fire debug 或者chrome的调试工具查看代码, 那种代码是浏览器渲染后的代码,并不是网页的真实代码。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或查看: 6658|回复: 9
请问如何使小票打印机直接打印小票呀
主题帖子积分
新手入门, 积分 18, 距离下一级还需 32 积分
新手入门, 积分 18, 距离下一级还需 32 积分
请问如何使小票打印机直接打印小票呀
求教程 打印机是 爱普生的,usb接口带切纸功能
主题帖子积分
可以调用报表控件打印,例如reportX,excel等等都可以打印。
或者用web窗体打开,然后调用 wb.execWb[font=新宋体]( 6[/font
可以调用报表控件打印,例如reportX,excel等等都可以打印。
或者用web窗体打开,然后调用 wb.execWb( 6/*_OLECMDID_PRINT*/,,2/*_OLECMDEXECOPT_DONTPROMPTUSER*/ ) 打印。另外看看你的小票打印机有没有提供什么开发包之类可以调用,看看开发文档。
主题帖子积分
新手入门, 积分 18, 距离下一级还需 32 积分
新手入门, 积分 18, 距离下一级还需 32 积分
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=68277&ptid=12641][c
可以调用报表控件打印,例如reportX,excel等等都可以打印。
或者用web窗体打开,然后调用 wb.execWb( 6/*_ ...
爱普生的打印机,热敏的带切纸功能,是不是要找爱普生要开发包?
主题帖子积分
四级会员, 积分 1542, 距离下一级还需 458 积分
四级会员, 积分 1542, 距离下一级还需 458 积分
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=68278&ptid=12641][c
爱普生的打印机,热敏的带切纸功能,是不是要找爱普生要开发包?
你的问题太空洞,是找不到你要的答案的。
主题帖子积分
小票打印机应该都可以使用ESC/POS指令驱动
或者可以试试北洋小票打印机二次开发包,http://www.newbeiyang.net/down.asp
小票打印机应该都可以使用ESC/POS指令驱动
或者可以试试北洋小票打印机二次开发包,http://www.newbeiyang.net/down.asp
主题帖子积分
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=68281&ptid=12641][c
小票打印机应该都可以使用ESC/POS指令驱动
或者可以试试北洋小票打印机二次开发包,http://www.newbeiyang ...
看了一下网上相关的教程、资料、开源代码都不少。
POS票据打印机基本都兼容爱普生的ESC/POS指令,成为事实上的工业标准,所以调用方法基本都是通用的。
我给你简单举几个例子,例如使用楼上所说的北洋SDK操作USB端口的POS打印机:var posdll =&&raw.loadDll(&/dll/POSDLL.dll&)
var hpos = posdll.POS_Open(&BYUSB-0&, 0, 0, 0, 0, 0x13/*_POS_OPEN_BYUSB_PORT*/);
if(hpos == -1) error(&打开USB端口失败&,2)
//开始打印
posdll.POS_SetRightSpacing(0);
posdll.POS_SetLineSpacing(80);
posdll.POS_S_TextOut(&HotelChName&, 140, 1, 2, 0/*_POS_FONT_TYPE_STANDARD*/,8/*POS_FONT_STYLE_BOLD*/);
posdll.POS_FeedLine();
//关闭端口
posdll.POS_Close(); 非常简单,如果是使用网口就更简单了,简单例子:import wsock.tcp.
var tcpClient = wsock.tcp.client();
tcpClient.connect(&192.168.0.18& , 9100);
tcpClient.write(&要打印的内容&);
//发送指令,横向放大一倍
tcpClient.write(0x1c,0x21,4);一般人没有小票打印机这种东西,不方便测试,所以我也没有实际测试。你可以自己动手研究一下。
主题帖子积分
新手入门, 积分 18, 距离下一级还需 32 积分
新手入门, 积分 18, 距离下一级还需 32 积分
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=68292&ptid=12641][c
看了一下网上相关的教程、资料、开源代码都不少。
POS票据打印机基本都兼容爱普生的ESC/POS指令,成为 ...
谢谢啊我先多试一下
主题帖子积分
新手入门, 积分 49, 距离下一级还需 1 积分
新手入门, 积分 49, 距离下一级还需 1 积分
aardio能调用python的内建函数
就是不能调用自己写的函数,谁知道怎么处理?
aardio能调用python的内建函数& &就是不能调用自己写的函数,谁知道怎么处理?
主题帖子积分
一级会员, 积分 100, 距离下一级还需 100 积分
一级会员, 积分 100, 距离下一级还需 100 积分
之前有用到两款软件。只要打印机连接上电脑。就算打印机在脱机状态,也能打印。。这是不是用的WINAPI函数来打印的?
之前有用到两款软件。只要打印机连接上电脑。就算打印机在脱机状态,也能打印。。这是不是用的WINAPI函数来打印的?
主题帖子积分
新手入门, 积分 48, 距离下一级还需 2 积分
新手入门, 积分 48, 距离下一级还需 2 积分
认真学习中
认真学习中
Powered by2014年8月 其他开发语言大版内专家分月排行榜第二2014年7月 其他开发语言大版内专家分月排行榜第二2014年5月 其他开发语言大版内专家分月排行榜第二2014年4月 其他开发语言大版内专家分月排行榜第二2014年3月 其他开发语言大版内专家分月排行榜第二2014年1月 其他开发语言大版内专家分月排行榜第二2013年12月 其他开发语言大版内专家分月排行榜第二2013年11月 其他开发语言大版内专家分月排行榜第二2013年3月 其他开发语言大版内专家分月排行榜第二2012年5月 其他开发语言大版内专家分月排行榜第二2012年4月 其他开发语言大版内专家分月排行榜第二2010年10月 其他开发语言大版内专家分月排行榜第二2010年9月 其他开发语言大版内专家分月排行榜第二
2013年9月 其他开发语言大版内专家分月排行榜第三2012年6月 其他开发语言大版内专家分月排行榜第三
2014年8月 其他开发语言大版内专家分月排行榜第二2014年7月 其他开发语言大版内专家分月排行榜第二2014年5月 其他开发语言大版内专家分月排行榜第二2014年4月 其他开发语言大版内专家分月排行榜第二2014年3月 其他开发语言大版内专家分月排行榜第二2014年1月 其他开发语言大版内专家分月排行榜第二2013年12月 其他开发语言大版内专家分月排行榜第二2013年11月 其他开发语言大版内专家分月排行榜第二2013年3月 其他开发语言大版内专家分月排行榜第二2012年5月 其他开发语言大版内专家分月排行榜第二2012年4月 其他开发语言大版内专家分月排行榜第二2010年10月 其他开发语言大版内专家分月排行榜第二2010年9月 其他开发语言大版内专家分月排行榜第二
2013年9月 其他开发语言大版内专家分月排行榜第三2012年6月 其他开发语言大版内专家分月排行榜第三
2014年8月 其他开发语言大版内专家分月排行榜第二2014年7月 其他开发语言大版内专家分月排行榜第二2014年5月 其他开发语言大版内专家分月排行榜第二2014年4月 其他开发语言大版内专家分月排行榜第二2014年3月 其他开发语言大版内专家分月排行榜第二2014年1月 其他开发语言大版内专家分月排行榜第二2013年12月 其他开发语言大版内专家分月排行榜第二2013年11月 其他开发语言大版内专家分月排行榜第二2013年3月 其他开发语言大版内专家分月排行榜第二2012年5月 其他开发语言大版内专家分月排行榜第二2012年4月 其他开发语言大版内专家分月排行榜第二2010年10月 其他开发语言大版内专家分月排行榜第二2010年9月 其他开发语言大版内专家分月排行榜第二
2013年9月 其他开发语言大版内专家分月排行榜第三2012年6月 其他开发语言大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 python连接打印机 的文章

 

随机推荐