欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python調(diào)用Windows命令打印文件

 更新時(shí)間:2020年02月07日 19:39:45   投稿:mdxy-dxy  
Windows命令行打印文件使用print 命令,具體用法可使用help print查看,下面是使用Python調(diào)用print指令執(zhí)行打印文件功能的代碼,需要的朋友可以參考下

1、Python調(diào)用Windows命令打印文件

Windows命令行打印文件使用print 命令,具體用法可使用help print查看。下面是使用Python調(diào)用print指令執(zhí)行打印文件功能的代碼:

import os
 
def printer(filename):
  printername = r"/D:\\A340\hpLaser"
  cmd = "print " + printername + " " + filename
  print "print cmd:", cmd
  if not os.system(cmd):
    print "printing..."
  else:
    print "some error occurs."
if __name__ == "__main__":
  filename = raw_input("Please input your filename:\n")
  printer(filename)

這里的打印機(jī)用的是共享打印機(jī),所以需要指定域名和打印機(jī)名稱,而且"/D:"表示的是打印設(shè)備的意思。

2、windows下如何用python控制打印機(jī)打印

參考網(wǎng)站

首先下載python需要的庫

pip install pypiwin32

簡(jiǎn)單例子

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
)
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()中傳的是空字符串,則可以實(shí)現(xiàn)空走紙。

但實(shí)際上這只是打印自己制定的字符串, 并且打印出來會(huì)顯示txt的文件名。所以我更傾向于使用windows的cmd指令打印指定文件。

3、Python利用win32連接打印機(jī)自動(dòng)打印

import win32print
import win32ui
from PIL import Image, ImageWin
#物理寬度、高度
PHYSICALWIDTH = 110
PHYSICALHEIGHT = 111
#物理偏移位置

PHYSICALOFFSETX = 112
PHYSICALOFFSETY = 113
printer_name = win32print.GetDefaultPrinter ()
#選擇圖片路徑
file_name = “biaoqian.png”

hDC = win32ui.CreateDC ()
hDC.CreatePrinterDC (printer_name)
printer_size = hDC.GetDeviceCaps (PHYSICALWIDTH), hDC.GetDeviceCaps (PHYSICALHEIGHT)
#printer_margins = hDC.GetDeviceCaps (PHYSICALOFFSETX), hDC.GetDeviceCaps (PHYSICALOFFSETY)
#打開圖片
bmp = Image.open (file_name)

print(bmp.size)
ratios = [1.0 * 1754 / bmp.size[0], 1.0 * 1240 / bmp.size[1]]
scale = min (ratios)
print(ratios)
print(scale)
hDC.StartDoc (file_name)
hDC.StartPage ()

dib = ImageWin.Dib (bmp)

scaled_width, scaled_height = [int (scale * i) for i in bmp.size]
print(scaled_width,scaled_height)
x1 = int ((printer_size[0] - scaled_width) / 2)
y1 = int ((printer_size[1] - scaled_height) / 2)
#橫向位置坐標(biāo)
x1 = 1580
#豎向位置坐標(biāo)
y1 = 30
#4倍為自適應(yīng)圖片實(shí)際尺寸打印
x2 = x1 + bmp.size[0]*4
y2 = y1 + bmp.size[1]*4
dib.draw (hDC.GetHandleOutput (), (x1, y1, x2, y2))

hDC.EndPage ()
hDC.EndDoc ()
hDC.DeleteDC ()

4、python chrome調(diào)用打印的樣例

python selenium 控制chrome 調(diào)用打印的時(shí)候會(huì)找不到元素,控制不到的情況

# 點(diǎn)擊打印
wait.until(ec.presence_of_element_located((By.LINK_TEXT, "打印"))).click()
# 父窗口 類名: Chrome_WidgetWin_1 標(biāo)題: 中行網(wǎng)銀(香港) - Google Chrome
father = win32gui.FindWindow(None, '中行網(wǎng)銀(香港) - Google Chrome')
# 子窗口 類名: Chrome_RenderWidgetHostHWND 標(biāo)題: Chrome Legacy Window
son = win32gui.FindWindowEx(father, None, "Chrome_RenderWidgetHostHWND", 'Chrome Legacy Window')
# 設(shè)置為最前窗口
win32gui.SetForegroundWindow(son)
time.sleep(1)
# ctrl+P
win32api.keybd_event(17, 0, 0, 0)
win32api.keybd_event(80, 0, 0, 0)
win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(80, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)
# ctrl+shift+P
win32api.keybd_event(17, 0, 0, 0)
win32api.keybd_event(16, 0, 0, 0)
win32api.keybd_event(80, 0, 0, 0)
win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(16, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(80, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)
# 發(fā)送回車-確認(rèn)打印
win32api.keybd_event(13, 0, 0, 0)
win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)
# 關(guān)閉子窗口
windows = browser.window_handles
browser.switch_to.window(windows[1])
wait.until(ec.presence_of_element_located((By.NAME, "close"))).click()
# 切回父窗口
browser.switch_to.window(windows[0])
print(browser.page_source)
# 點(diǎn)擊返回
wait.until(ec.presence_of_element_located((By.LINK_TEXT, "返回"))).click()
print("print end")

另一種方法,調(diào)用pdf打印,代碼如下:

import win32api
import os
import json

#PRINTER_NAME = '\\\\cnsz02vw00397\\CM_Printer_1'
#PRINTER_NAME = 'Xerox Phaser 3435 PCL 6'

def print_pdf(pdf_file_name):

with open(os.getcwd() + "\\config_generate.json", "r", encoding="utf-8") as f:
  json_data = json.load(f)
  PRINTER_MACHINE = json_data["print_machine"]
  f.close()
PRINTER_NAME = PRINTER_MACHINE
"""
靜默打印pdf
:param pdf_file_name:
:return:
"""
GHOSTSCRIPT_PATH = os.getcwd() + '\\GHOSTSCRIPT\\bin\\gswin32c'
print(GHOSTSCRIPT_PATH)
#currentprinter = config.printerName
currentprinter = PRINTER_NAME
# currentprinter = win32print.GetDefaultPrinter()
arg = '-dPrinted ' \
   '-dBATCH ' \
   '-dNOPAUSE ' \
   '-dNOSAFER ' \
   '-dFitPage ' \
   '-dNORANGEPAGESIZE ' \
   '-q ' \
   '-dNumCopies=1 ' \
   '-sDEVICE=mswinpr2 ' \
   '-sOutputFile="\\\\spool\\' \
   + currentprinter +"\""+ " " + \
   pdf_file_name
#log.info(arg)
win32api.ShellExecute(
  0, \
  'open', \
  GHOSTSCRIPT_PATH, \
  arg, \
  ".",
  0
)

if __name__ == '__main__':
  aaa = 'D:\\tempFile\\2019-09-12\\pay\\print.pdf'
  print_pdf(aaa)

這里就差不多了

相關(guān)文章

  • Python3 合并二叉樹的實(shí)現(xiàn)

    Python3 合并二叉樹的實(shí)現(xiàn)

    這篇文章主要介紹了Python3 合并二叉樹的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 詳解Python中用于計(jì)算指數(shù)的exp()方法

    詳解Python中用于計(jì)算指數(shù)的exp()方法

    這篇文章主要介紹了詳解Python中用于計(jì)算指數(shù)的exp()方法,是Python入門中必會(huì)的基本方法,需要的朋友可以參考下
    2015-05-05
  • python去除字符串中換行符的四種方法

    python去除字符串中換行符的四種方法

    python中換行符的作用就是將字符串劃分為上下兩行去輸出顯示,但是在有些情況下是不需要去用到換行符的,這個(gè)時(shí)候就要用方法將其給去除掉,這一篇文章小編會(huì)來給大家介紹一下python去除字符串中換行符的方法,感興趣的話就一起往下看看吧
    2024-04-04
  • 詳解Python編程中對(duì)Monkey Patch猴子補(bǔ)丁開發(fā)方式的運(yùn)用

    詳解Python編程中對(duì)Monkey Patch猴子補(bǔ)丁開發(fā)方式的運(yùn)用

    Monkey Patch猴子補(bǔ)丁方式是指在不修改程序原本代碼的前提下,通過添加類或模塊等方式在程序運(yùn)行過程中加入代碼,下面就來進(jìn)一步詳解Python編程中對(duì)Monkey Patch猴子補(bǔ)丁開發(fā)方式的運(yùn)用
    2016-05-05
  • Pycharm中安裝pywin32報(bào)錯(cuò)問題及解決

    Pycharm中安裝pywin32報(bào)錯(cuò)問題及解決

    這篇文章主要介紹了Pycharm中安裝pywin32報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • python編程進(jìn)階之類和對(duì)象用法實(shí)例分析

    python編程進(jìn)階之類和對(duì)象用法實(shí)例分析

    這篇文章主要介紹了python編程進(jìn)階之類和對(duì)象用法,結(jié)合實(shí)例形式分析了python類和對(duì)象概念、原理、內(nèi)置函數(shù)、類的變量、繼承等相關(guān)使用技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • 詳解python中requirements.txt的一切

    詳解python中requirements.txt的一切

    最近學(xué)習(xí)到了python中的requirements.txt,或許是因?yàn)樘?jiǎn)單了,網(wǎng)上沒有搜到比較完整的介紹,所以這篇文章主要介紹了關(guān)于python中requirements.txt的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • 詳解Python中數(shù)據(jù)庫管理模塊shelve和dbm的應(yīng)用

    詳解Python中數(shù)據(jù)庫管理模塊shelve和dbm的應(yīng)用

    作為常用的 python 自帶數(shù)據(jù)庫管理模塊,shelve 和 dbm 都是非常方便的對(duì)象持久化存儲(chǔ)和檢索工具,本文將從用法、優(yōu)勢(shì)以及不同點(diǎn)等方面進(jìn)行介紹,希望對(duì)大家有所幫助
    2023-10-10
  • python繪制簡(jiǎn)單直方圖的方法

    python繪制簡(jiǎn)單直方圖的方法

    這篇文章主要為大家詳細(xì)介紹了python繪制簡(jiǎn)單直方圖的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Python中__name__的使用實(shí)例

    Python中__name__的使用實(shí)例

    這篇文章主要介紹了Python中__name__的使用實(shí)例,并總結(jié)了兩種情況下__name__的值會(huì)是什么,需要的朋友可以參考下
    2015-04-04

最新評(píng)論