精华内容
下载资源
问答
  • python控制打印机

    千次阅读 2019-11-04 12:17:40
    python 控制打印机打印文件 一次帮朋友做一个小工具...python控制打印机,需要导入两个库 win32api 和 win32print 但是这两个库的安装就不能用pip install了,因为python3.7的库里就没有这两个东西,需要安装pywi...

    python 控制打印机打印文件

    一次帮朋友做一个小工具,从excel表格中逐行获取内容插入docx模板中,然后打印出来。前边的功能我在其他帖子里介绍了,就打印一块,单拉出来说一下,以备今后使用参考。

    python控制打印机,需要导入两个库 win32api 和 win32print
    但是这两个库的安装就不能用pip install了,因为python3.7的库里就没有这两个东西,需要安装pywin32库,这个pywin32库依然不能pip安装。
    两个方法,一是去下载离线包,离线安装。二是在pycharm里直接安装。我用第二种。
    选择file—setting—project—project interpreter
    点右上角的小加号,搜索框里写pywin32,点左下角的install按钮即可。

    现在就可以愉快的敲代码了。首先来个简单的

    import win32api
    import win32print
    
    filename = r'F:\python_programs\模板\缴款通知单.docx'
    
    win32api.ShellExecute(
      0,
      "print",
      filename,
      #
      # If this is None, the default printer will
      # be used anyway.
      # 使用默认打印机
      '/d:"%s"' % win32print.GetDefaultPrinter(),
      ".",
      0
    )
    

    效果是打开这个docx文档然后直接打印,打印完文档也关闭了。就是很多帖子说的,闪一下就没了。怎么不让他闪那么一下,我还没找到方法。估计如果电脑打开word文件本身比较慢的话,打印时等待时间也会比较长,好处是,调用的win32api,肯定能打印出东西来。。。。
    说明:filename 是要打印文档的路径和名字,如果该文件和程序在一个文件夹里,可以直接写名字。可以通过os遍历文件夹获取所有的文档名然后批量打印。

    再来个麻烦的:

    import win32print
    import win32ui
    import win32con
    
    def print2Printer():
            INCH = 1440
    
            hDC = win32ui.CreateDC ()
            hDC.CreatePrinterDC (win32print.GetDefaultPrinter ())
            hDC.StartDoc ("Test doc")
            hDC.StartPage ()
            hDC.SetMapMode (win32con.MM_TWIPS)
            hDC.DrawText ("TEST HELLO  WORLD! CORSS FIREWALL, WE TOUCH THE WORLD!",(0, INCH * -1, INCH * 8, INCH * -2), win32con.DT_CENTER)
            hDC.EndPage ()
            hDC.EndDoc ()
    
    print2Printer()
    
    

    这一坨的意识大概是临时创建一个test doc 应该是一个text文件,然后通过 draw text写入一些内容,最后打印出来,如果draw text括号里什么也不写 或者干脆没有这一项,则会空走纸。
    具体我还没有时间细作研究,以后有时间补充。
    参考资料:
    https://blog.csdn.net/dongfuguo/article/details/77876645
    https://blog.csdn.net/qq_33343767/article/details/83990972

    展开全文
  • 基于Python控制打印机自动打印exel文件,利用win32com对打印机进行控制,设置打印的格式,打印样式,横向打印,exel格子高度,字体大小,字体粗细,页眉页脚等。xlrd,xlwt在exel中编写好xlsx文档。
  • 关于Python控制打印机如何横向打印EXEL 在python的使用中,经常在开发的时候会遇到要多个模块联合使用的问题。在一次项目中我就遇到一个这样的问题。 在项目中,要求实现存数据到exel。然后控制打印机打印出来。当然...

    关于Python控制打印机如何横向打印EXEL

    在python的使用中,经常在开发的时候会遇到要多个模块联合使用的问题。在一次项目中我就遇到一个这样的问题。
    在项目中,要求实现存数据到exel。然后控制打印机打印出来。当然,我选择的是xlrd和xlwt的模块对exel进行处理。处理过后,就怎么也找不到打印的方法,用网上很多其他的方法打印要不然就是打印不了,要不然就是直接打印,根本没有打印设置里的那些处理,不能调整页眉页脚,也不能调整打印的方向。
    终于,让我找了很久,找到一个文档,可以实现横向打印操作,同时能够打印出来。

    原来打印设置的操作要在EXEL里完成。
    下面是我写的代码:

    import win32print
    import win32com
    from win32com.client import Dispatch, constants
    import os
    import win32api
    import win32com.client
    
    def dayin2(date_shebei):
        ExcelApp=win32com.client.Dispatch("Excel.Application")
        ExcelApp.Visible=False        #不显示EXEL的界面,True时为显示。
        pwd = os.getcwd()             #找到当前文件的位置。
        print(pwd)                    
        xls1=pwd+'\\'+str(date_shebei)     #找到同程序文件夹下的exel,这里的date_shebei就是我的exel文件名
        print(xls1)
        xls=xls1                                
        wbook=ExcelApp.Workbooks.Open(xls)        #打开要打印的exel文件
        wsheet=wbook.Worksheets(1)               #选择打印的sheet,1就是第一个,后面以此类推
        wsheet.PageSetup.PaperSize=9            # 设置纸张大小,A3=8,A4=9(与Word不同)   
        wsheet.PageSetup.Orientation=2          # 设置页面方向,纵向=1,横向=2(与Word不同)
        #wsheet.usedrange.Columns.AutoFit       # 设置所有列自动调整宽度
        wsheet.Columns(1).Columnwidth=8           # 设置标题列宽
        for i in range(2,30):
            wsheet.Columns(i).Columnwidth=5       #设置列宽
        for i in range(1,15):
            wsheet.Rows(i).RowHeight=30               # 设置行高
        ran=wsheet.Range("A1:Q14")                       # 设置处理范围
        ran.Borders.LineStyle=1         # 设置线型为实线(1=实线,4=点划线,-4142=无线条,-4119=双线,-4115虚线)
        wsheet.PageSetup.CenterHeader=" "    # 中央页眉作为表格名称
        wsheet.PageSetup.CenterFooter=" "    # 中央页脚显示打印页数
        #ran.Borders(11).LineStyle=-4142
        wbook.Save()                  
        wbook.Close()        # 关闭文件
        
    def print_file_(name):#打印操作,当安装了打印机的电脑会直接调用默认打印机打印。
        try:
            filename = name
            #open (filename, "r")
            win32api.ShellExecute (0,"print",filename,'/d:"%s"' % win32print.GetDefaultPrinter (),".",0)
        except:
            pass
    dayin2('1.xlsx')
    print_file_('1.xlsx')
    #workbook= xlrd.open_workbook('1'+'.xlsx')
    #sheet2 = workbook.sheet_by_name(str(date))
    
    

    下面是我已经处理好的exel文件:

    在这里插入图片描述
    这里没有xlrd和xlwt模块对exel的数据读取和读出,只是对打印页面的设置和控制打印机横向打印出来。下面是我参考的一个文件:

    利用-Python-操作-Excel文档.docx

    利用 Python 操作 Excel在Excel 2010中打开VBA编辑器,请按 Alt + F11 打开;以下代码在 Excel 2007, Excel 2010中测试通过;
    import win32com.client # 导入脚本模块

    ExcelApp = win32com.client.Dispatch(“Excel.Application”) # 载入EXCEL模块

    ExcelApp.Visible = True # 显示EXCEL应用程序 1、 新建xls文件

    wBook = ExcelApp.Workbooks.Add() # 新建空文件,每个文件系统默认建立3个空表

    nSheet = wBook.Worksheets.Count # 获取文件的表格数,缺省为3

    wSheet = wBook.Worksheets(1) # 打开指定工作表(注意序号从1开始)

    wSheet = wBook.Worksheets.Add() # 增加新表,新表为第4个表,相当与wBook.Worksheets(4)

    wSheet.Name = “新建表格” # 修改新建表格名称,或者wBook.Worksheets(4).Name = “新建表格”

    …… 中间操作 ……

    wBook.SaveAs(strName) # 另存文件,注意直接保存用:wBook.Save()

    wBook.Close() # 关闭文件(账本) 2、 打开和关闭xls文件

    xlsPathName = r"E:\000.xls" # 指定路径名

    wBook = ExcelApp.Workbooks.Open(xlsPathName) # 打开指定文件(账本)

    wSheet = wBook.Worksheets(1) # 打开指定工作表(注意序号从1开始)

    或者wSheet = wBook.Worksheets(“Sheet1”) # 必须使用准确的工作表名称字符串

    …… 中间操作 ……

    wBook.Close() # 关闭文件(账本) 3、 页面设置

    wSheet.PageSetup.PaperSize = 9 # 设置纸张大小,A3=8,A4=9(与Word不同)

    wSheet.PageSetup.Orientation = 1 # 设置页面方向,纵向=1,横向=2(与Word不同)

    wSheet.PageSetup.TopMargin = 3*28.35 # 页边距上=3cm,1cm=28.35pt

    wSheet.PageSetup.BottomMargin = 3*28.35 # 页边距下=3cm

    wSheet.PageSetup.LeftMargin = 2.5*28.35 # 页边距左=2.5cm

    wSheet.PageSetup.RightMargin = 2.5*28.35 # 页边距右=2.5cm

    wSheet.PageSetup.CenterHorizontally = True # 表格打印位置水平居中

    wSheet.PageSetup.CenterVertically = False # 表格打印位置垂直不居中(最后一页不好看)

    wSheet.PageSetup.HeaderMargin = 2*28.35 # 设置页眉位置=2cm(距上边)

    wSheet.PageSetup.FooterMargin = 1*28.35 # 设置页脚位置=1cm(距下边)

    wSheet.PageSetup.PrintTitleRows = “$1:$2” # 设置表格标题行

    wSheet.PageSetup.CenterHeader = “&“黑体”&15表格名称” # 中央页眉作为表格名称

    wSheet.PageSetup.CenterFooter = “第 &P 页,共 &N 页” # 中央页脚显示打印页数

    wSheet.Rows(5).PageBreak = -4135 # 在第5行之前插入分页符 注意:表格名称的文本格式设置,详情查询“页眉和页脚的格式代码”

    &“黑体”&15 # 设置字体,字大,颜色

    &B&I&U # 设置字体加黑、加粗、下划线

    &L&C&R # 设置左中右对齐 4、 单元格操作

    cv = wSheet.Cells(1, 1).Value # 获取单元格数值

    wSheet.Cells(1, 1).Interior.Color = 0xff00ff # 设置单元格背景色

    cel = wSheet.Cells(2, 2) # 获取单元格对象

    cv = cel.Offset(3, 3).Value # 获取偏移后的单元格,即(4,4)

    #Offset以当前单元格为(1,1),偏移之后的单元格为(a1+a2-1, b1+b2-1) 注:range与Cells, Rows, Columns的绝大多数属性类似,但是后三者
    后面可以接序号(2,3)表示具体单元格或行列,不接序号指所有单元格或行列。 5、 行列操作

    wSheet.Rows.AutoFit() # 自动适合行

    wSheet.Rows(1).Delete() # 删除第1行

    wSheet.Columns.Autofit() # 自动适合列

    wSheet.Columns(1).Delete() # 删除第1列

    wSheet.Columns(1).Columnwidth = 30 # 设置列宽

    wSheet.Columns(1).NumberFormatLocal = “000000” # 设置数值格式

    wSheet.Rows(“2:2”).Select() # 必须选择第2行,才能冻结第1行!!

    ExcelApp.ActiveWindow.FreezePanes = True # 冻结第1行 6、 遍历工作表的所有单元格

    nRow = wSheet.usedrange.rows.count # 获取指定工作表的行数

    nCol = wSheet.usedrange.columns.count # 获取指定工作表的列数

    for i in range(1, nRow+1):
    for j in range(1, nCol+1)
    …… 中间操作 ……
    break
    break # 注意必须分别退出 7、 搜索指定数值
    cel = wSheet.Columns(2).Find(123) # 在第2列查找某整数值123
    if(cel):
    adr = cel.Address # 获取该单元格首地址,以便退出循环
    while(True): # 注意系统的FindNext()是个死循环,会反复搜索
    …… 中间操作 ……
    cel = wSheet.Columns(2).FindNext(cel) # 注意FindNext()参数为cel
    if(cel.Address==adr): break # 返回到单元格首地址时,就退出 7、 格式设置

    wSheet.Cells.Font.Name = “Arial” # 设置字体

    wSheet.Cells.Font.Size = 10 # 设置字大

    wSheet.Cells.Font.Bold = True # 设置粗体

    wSheet.Cells.Font.Italic = True # 设置斜体

    wSheet.usedrange.Columns.AutoFit # 设置所有列自动调整宽度

    wSheet.Cells.HorizontalAlignment = 2 # 设置左对齐(1=两端, 2=左, 3=中, 4=右)

    ran = wSheet.Range(wSheet.Cells(1,1),wSheet.Cells(nRow,nCol))

    ran.Hyperlinks.Delete() # 删除指定范围的链接

    ran.Font.Name = “宋体” # 设置字体

    ran.Font.Size = 10 # 设置字大

    ran.Font.Bold = False # 设置黑体

    ran.Font.Italic = True # 设置斜体

    ran.HorizontalAlignment = -4108 # 水平对齐

    ran.VerticalAlignment = -4108 # 垂直对其 8、 绘制表格线

    ran = wSheet.Range(“A1:D5”) # 设置处理范围

    ran.Borders.LineStyle = 1 # 设置线型为实线(1=实线,4=点划线,-4142=无线条,-4119=双线,-4115虚线)

    ran.Borders(11).LineStyle = -4142 # 去除范围内中间竖线(8=上边线,9=下边线,7=左框线,10=右框线,11=竖框线,12=横框线) 9、 行列宽度设置

    wSheet.Rows(1).RowHeight = 20 # 设置第1行的行高

    wSheet.Columns(1).ColumnWidth = 10 # 设置第1列的列宽

    10、使用公式进行统计
    ran = wSheet.Range(“A1:A10”) # 设置计算范围

    a = ExcelApp.WorksheetFunction.Sum(ran) # 范围数值求和

    b = ExcelApp.WorksheetFunction.Max(ran) # 范围最大值

    注:常用函数可以在插入函数对话框中查找,包括 Average, Max, Min, Sum, StDev等;

    展开全文
  • 使用python控制打印机

    万次阅读 2018-11-12 14:02:02
    Python安装win32api模块:pip install pypiwin32 一组扩展模块,提供对许多Windows API函数的访问。 http://sourceforge.net/projects/pywin32/ 以前称为win32all。 win32api文档 import win32print import win32ui ...

    Python安装win32api模块:pip install pypiwin32
    一组扩展模块,提供对许多Windows API函数的访问。 http://sourceforge.net/projects/pywin32/ 以前称为win32all。
    win32api文档

    import win32print
    import win32ui
    import win32con
    
    def print2Printer():
            INCH = 1440
    
            hDC = win32ui.CreateDC ()
            hDC.CreatePrinterDC (win32print.GetDefaultPrinter ())
            hDC.StartDoc ("Test doc")
            hDC.StartPage ()
            hDC.SetMapMode (win32con.MM_TWIPS)
            hDC.DrawText ("TEST HELLO  WORLD! CORSS FIREWALL, WE TOUCH THE WORLD!",
                           (0, INCH * -1, INCH * 8, INCH * -2), win32con.DT_CENTER)
            hDC.EndPage ()
            hDC.EndDoc ()
    
    print2Printer()
    

    显示效果如下:
    在这里插入图片描述
    若在hDC.DrawText()中传的是空字符串,则可以实现空走纸。

    展开全文
  • windows下如何用python控制打印机打印

    万次阅读 2017-08-11 17:05:27
    首先下载python需要的库pip install pypiwin32简单例子import tempfile import win32api import win32printfilename = tempfile.mktemp (".txt") open (filename, "w").write ("This is a test") win32api....

    参考网址
    首先下载python需要的库

    pip install pypiwin32

    简单例子

    import tempfile
    import win32api
    import win32print
    
    filename = tempfile.mktemp (".txt")
    open (filename, "w").write ("This is a test")
    win32api.ShellExecute (
      0,
      "print",
      filename,
      #
      # If this is None, the default printer will
      # be used anyway.
      #
      '/d:"%s"' % win32print.GetDefaultPrinter (),
      ".",
      0
    )

    但实际上这只是打印自己制定的字符串, 并且打印出来会显示txt的文件名。所以我更倾向于使用windows的cmd指令打印指定文件。

    展开全文
  • python 3d打印机by Nikolay Khabarov 通过... 如何使用Python构建自己的CNC控制器和3D打印机 (How you can use Python to build your own CNC controller and 3D printer) This article discusses the process I...
  • 3D打印机控制软件Cura源码 Python 还是不错的资源,欢迎大家下载
  • pDevMode类:打印机打印参数设置 for it in printerscl: print(it + ':' + str(printerscl[it])) print(type(printerscl[it])) if str(it)=='pDevMode': for itp in printerscl[it]: print(itp + ':' + str...
  • 此外,该模块还处理一些硬件功能,例如裁纸,控制字符,打印机重置和类似功能。 由于支持的命令因打印机而异,因此该软件会尝试为您设置的打印机自动应用正确的设置。 这些设置由处理,也在。 依存关系 该库使用:...
  • 最近因为项目需要,需要对打印机进行控制和管理,除了常规的打印页面设置,还需要对打印机状态进行监控,如忙、空闲、缺纸、缺墨等问题。 用Java的print api搞了好久,结果不尽人意。改投python的win32print api门下...
  • "111") 2、控制打印机打印图片二维码 背景:需要打印二维码图片,保证手动能够打开图片并且点打印可以打印出来(安装了对应的打印机驱动) 代码为: import win32print import win32ui from PIL import Image, ...
  • python学习笔记(win32print API介绍)

    千次阅读 2016-08-12 10:47:00
    最近博主在研究用python控制打印机 这里整理下win32print的API介绍,官网地址http://timgolden.me.uk/pywin32-docs/win32print.html OpenPrinter 打开指定的打印机,并获取打印机的句柄 GetPrinter 取得与指定...
  • 3D打印常用软件Cura的源代码,Python语言。 经典的Python界面应用软件。
  • 阿根廷电路打印机的GUI控制程序 注意:如果您正在寻找最新的更改: git checkout develop 此Python应用程序使用许多默认情况下未在系统上安装的库(尤其是在使用Windows的情况下)。 显然,您可能需要安装Python,...
  • JS中用于HFI的Reprap 3D打印机控制器 去做 browserify main.js 如何安装 获取OpenCV源 git clone https://github.com/opencv/opencv cd opencv 安装emscripten。 脚本解释器是LLSVM。 从获取它 获取可用工具的最新...
  • FDM,3DDruck,3dprinting,python,ddprint 鼻涕虫: ddprint-3d-printer-firmware 注意:实验和进行中。 笛卡尔FDM打印机(ultimaker克隆,atmega和stm32,例如um2,ramps或jennyprinter)的3d打印机固件。 ...
  • PyCNC是一个免费的开源高性能G代码解释器和CNC / 3D打印机控制器。 它可以在各种基于Linux的基于ARM的板上运行,例如Raspberry Pi,Odroid,Beaglebone等。 这使您可以灵活地选择最熟悉的板,并使用Linux必须提供的...
  • python入门

    2020-12-15 20:22:08
    控制器 内存储器 : 随机存储器 & 只读存储器 & 外设部分 输入设备: 键盘 鼠标 摄像头等 输出设备: 显示器 音响 打印机等 外存储器: 软盘 硬盘 优盘等 软件系统: 1.系统软件 操作系统,驱动程序,语言...

空空如也

空空如也

1 2 3 4 5 6
收藏数 102
精华内容 40
关键字:

python控制打印机

python 订阅