張 園
(陜西職業(yè)技術(shù)學(xué)院,西安,710100)
自動化技術(shù)在批量打印方面的應(yīng)用
張 園
(陜西職業(yè)技術(shù)學(xué)院,西安,710100)
辦公環(huán)境中經(jīng)常需要打印大量文件。打印過程中需要根據(jù)文件格式、幅面大小來調(diào)用相關(guān)程序、選擇打印機并設(shè)置打印參數(shù),人工操作耗時耗力。為了解決以上問題,筆者采用AHK腳本語言編寫了程序,通過AutoHotKey程序的自動化技術(shù)實現(xiàn)了批量打印功能。運行該腳本程序,可以自動打印指定目錄下的所有文件。實際應(yīng)用表明,該腳本程序能夠極大地減少重復(fù)勞動,提高辦公效率。
計算機應(yīng)用技術(shù);批量打印;自動化技術(shù);AHK;AutoHotKey
辦公環(huán)境中經(jīng)常需要打印大量文件,在打印過程中還需要根據(jù)不同的文件格式調(diào)用相關(guān)程序,根據(jù)不同的文件幅面大小選擇相應(yīng)的打印機,并設(shè)置各種打印參數(shù)。例如打印10份A4大小的doc文件、10份A3大小的ppt文件和10份A2大小的pdf文件,需要調(diào)用10次Microsoft Word程序、10次Microsoft PowerPoint程序和10次Adobe Acrobat程序,運行30次打印命令,按文件幅面大小分別選擇支持A4和A3幅面的小型打印機和支持A2幅面的大幅面打印機,并設(shè)置紙張來源等打印參數(shù)。以上過程若采取人工操作會非常耗時耗力,造成大量重復(fù)性低效率勞動。為進一步提高辦公效率,筆者采用AHK腳本語言編寫了自動化程序,從而實現(xiàn)了批量打印的功能。
AHK自動化腳本語言是AutoHotKey[1]程序特有的編程語言,適用于自動化編程。AutoHotKey程序是一個Microsoft Windows系統(tǒng)下的免費工具,利用它可以實現(xiàn)如下功能:
1) 幾乎所有的鍵盤發(fā)送和鼠標(biāo)點擊操作;2) 創(chuàng)建鍵盤、游戲手柄、鼠標(biāo)的快捷鍵;3) 自動擴展縮寫;4) 創(chuàng)建自定義數(shù)據(jù)表格、用戶界面、菜單欄;5) 重新映射鍵盤、游戲手柄、鼠標(biāo)的按鍵;6)通過 WinLIRC 腳本響應(yīng)手持遠程控制信號;7)能夠運行 AutoIt v2 腳本;8) 能夠?qū)⒛_本轉(zhuǎn)換成 EXE 執(zhí)行文件。該執(zhí)行文件可以在沒有安裝AutoHotKey的計算機中運行。本文選用AHK腳本語言作為編程語言的主要理由有:第一,AutoHotKey是主流的自動化工具之一;第二,AHK 腳本語言較容易定義快捷鍵。
為了編寫批量打印自動化腳本程序,必須對單獨文件打印過程展開相關(guān)分析。
1) 首先通過文件名稱的后綴判斷文件的格式,如:doc.、ppt.、pdf.等。
2) 根據(jù)文件格式,運行相關(guān)程序,如:doc.格式需要用Microsoft Word 打開,所以需要運行 WINWORD.EXE 程序。
3) 等待程序打開后,加載該文件,如:在Microsoft Word中按Ctrl + O,再輸入文件名并加載該文件。
4) 等待文件加載完成后,調(diào)用打印功能,如:在 Microsoft Word 中按 Ctrl + P。
5) 根據(jù)文件幅面大小選擇打印機。此處屬于批量打印的重點技術(shù),見下文詳述。
6) 根據(jù)文件幅面大小和相應(yīng)打印機,設(shè)置打印機參數(shù)。見下文詳述。
7) 設(shè)置程序的打印參數(shù),如:Adobe Acrobat中的打印頁面大小。
8) 開始打印。
9) 等待打印完成后,關(guān)閉程序。
通過以上分析,就可以利用AHK語言模擬鍵盤的輸入和鼠標(biāo)的點擊,編寫出打印單獨文件的函數(shù),以便批量打印時調(diào)用。
不同格式的文件擁有不同的打印函數(shù),比如打印doc.和打印ppt.需要分別調(diào)用PrintDoc()和PrintPPT()函數(shù)。
批量打印的流程如下:
1) 運行批量打印腳本。
2) 點擊快捷鍵,調(diào)出程序窗口,指定需要打印的目錄。
3) 打印指定目錄中的所有帶有特定擴展名的文件。此處需要調(diào)用打印單獨文件函數(shù)和設(shè)置打印機的函數(shù)。
4.1 通過快捷鍵運行腳本程序
AutoHotKey程序的優(yōu)點在于可以方便地定義快捷鍵。例如要使用Win + W鍵來調(diào)用腳本程序,可以使用如下腳本:
#w::
;程序主體
……
return
4.2 取得指定目錄
通過下列腳本可以獲得調(diào)出程序窗口,供用戶指定需要打印的目錄,然后將該目錄字符串存儲到變量 DocPath 中:
FileSelectFolder, DocPath, , 0
if DocPath =
return
4.3 計算指定目錄中帶有特定擴展名的文件的數(shù)量
通過以下函數(shù)可以計算指定目錄中帶有特定擴展名的文件的數(shù)量:
FileNumber(FilePath, FileExt)
{
if FilePath =
return 0
Number := 0
Loop, % FilePath . "" . FileExt
{
Number++
}
return Number
}
FilePath變量為指定目錄。FileExt變量為特定擴展名,比如 "*.pdf"。調(diào)用函數(shù)后返回指定目錄中帶有特定擴展名的文件的數(shù)量。
4.4 打印指定目錄中所有特定擴展名的文件
以 pdf 文件為例,可以通過以下腳本打印指定目錄中所有pdf文件:
PDFNumber := FileNumber(DocPath, "*.pdf") ;計算指定目錄中的 PDF 文件數(shù)量
if PDFNumber > 0
{
OpenAcrobat();打開Acrobat程序
Loop, %DocPath%*.pdf ;循環(huán)打印所有pdf文件
{
;打開pdf文件
Send ^o
WinWaitActive, 打開
ControlSetText, Edit1, %A_ LoopFileFullPath%, 打開
Send {Enter}
;打印當(dāng)前pdf文件
PrintAcrobat()
;打印下一個文件
Send ^w
WinWaitNotActive, Adobe Acrobat, ".pdf"
}
;關(guān)閉Acorobat程序
Send ^q
WinWaitClose, Adobe Acrobat
}
4.5 獲得文件打印幅面大小
文件打印幅面大小影響到打印機的選擇。文件的實際幅面大小與打印大小并不一定相同,例如A3幅面的文件可能會被縮小打印成A4幅面大小,因而文件幅面大小需通過人為設(shè)定。
為了方便批量打印腳本獲得打印幅面大小,所有待打印文件的名稱中必須帶有幅面大小的關(guān)鍵字。例如要將“Test. doc”打印成A4大小,必須增加“A4”的關(guān)鍵字,將文件名稱改為“Test_A4.doc”。同理,“Test_A3.doc”的打印幅面大小是A3,“Test_297x630.pdf”的打印幅面大小是297x630。
利用AHK腳本語言獲得文件名稱后,就能使用正則表達式過濾得到文件名稱中的幅面大小。比如關(guān)鍵字為"297x630",為了得到打印寬度和長度,可以利用如下腳本:
RegExMatch(PrintSize, "(.*)x(.*)", SubPat)
input_width := SubPat1
input_length := SubPat2
其中,PrintSize是文件名稱中的關(guān)鍵字,input_width是打印寬度,input_length是打印長度。
4.6 選擇打印機
辦公環(huán)境下,可能同時存在多個打印機,比如1臺用于打印A4、A3幅面文件的小型打印機和1臺用于打印A2、A1等幅面文件的大幅面打印機。在這種情況下,需要對打印機設(shè)置編號,比如設(shè)置小型打印機為Printer_One,大幅面打印機為 Printer_ Two。例子如下:
Printer_One = HP LaserJet 5200
Printer_Two = HP Designjet T7100
需要注意的是,Microsoft Office 2007及更新版本程序的控件難以通過AHK進行控制,因此切換默認打印機應(yīng)該通過調(diào)用Microsoft Windows系統(tǒng)命令行的方式來處理。
SetCurrentPrinter(input_printer)
{
Quotation_Printer = "%input_printer%"
run, rundll32 printui.dll`,PrintUIEntry /y /n %Quotation_Printer%
Sleep, 1000
}
當(dāng)遇到A4、A3幅面文件的時候,調(diào)用小型打印機Printer_ One,當(dāng)遇到其他幅面文件的時候,調(diào)用大幅面打印機Printer_ Two。
if PrintSize = A4
SetCurrentPrinter(Printer_One)
else if PrintSize = A3
SetCurrentPrinter(Printer_One)
else
SetCurrentPrinter(Printer_Two)
4.7 設(shè)置打印機參數(shù)
由于不同的打印機的設(shè)置界面是不同的,打印幅面的大小也會影響到打印機的設(shè)置,因而必須編寫針對性的函數(shù)來設(shè)置打印機參數(shù)。例如對于Printer_One和Printer_Two兩個打印機,需要有兩個函數(shù)SetPrinterOne(PrintSize)和SetPrinterTwo(PrintSize)來設(shè)置打印機參數(shù)。
對于小型打印機HP LaserJet 5200來說,一般文件幅面為A4時,需要使用紙盒1,文件幅面為A3時,需要使用紙盒2,可以使用如下腳本來實現(xiàn):
if PrintSize = A4
{
Control, ChooseString, A4, ComboBox2, %Printer_ One%
Control, ChooseString, 紙盒 1, ComboBox3, %Printer_ One%
}
else if PrintSize = A3
{
Control, ChooseString, A3, ComboBox2, %Printer_One%
Control, ChooseString, 紙盒 2, ComboBox3, %Printer_ One%
}
else
{
MsgBox, 小型打印機無法識別的尺寸:%PrintSize%
Exit
}
再舉一實例,對于大幅面打印機HP Designjet T7100來說,如果文件幅面不是現(xiàn)有的A2、A1等尺寸,而是"297x630"這種不常見的尺寸,則必須自定義紙張大小。
;設(shè)置自定義紙張尺寸
ControlClick, Button5, %Printer_Two%
WinWaitActive, 自定義紙張尺寸
WinActivate, 自定義紙張尺寸
ControlClick, Button3, 自定義紙張尺寸
ControlSetText, Edit1, %output_width%, 自定義紙張尺寸 ;在此處設(shè)置紙張寬度
ControlSetText, Edit2, %output_length%, 自定義紙張尺寸 ;在此處設(shè)置紙張長度
ControlSetText, Edit3, Custom, 自定義紙張尺寸
;保存自定義紙張尺寸
WinActivate, 自定義紙張尺寸
ControlClick, Button6, 自定義紙張尺寸
;覆蓋原始尺寸
Sleep, 500
WinActivate, 警告
ControlClick, Button1, 警告
;退出自定義紙張尺寸的設(shè)置
WinActivate, 自定義紙張尺寸
ControlClick, Button8, 自定義紙張尺寸
本文腳本編寫完成后,已經(jīng)通過測試,并用于實際辦公環(huán)境中,取得了良好的效果。利用批量打印腳本,只需要以下兩步就能完成整個目錄中所有文件的打印,操作步驟不隨文件類型和數(shù)量的變化而變化:
1) 點擊快捷鍵。2) 選擇打印目錄。
其他步驟,例如打開相關(guān)程序、打印機的選擇、打印機的設(shè)置、軟件的打印設(shè)置等,都由腳本自動完成,不需要人工干預(yù),極大地提升了工作效率。如表1所示,文件數(shù)量越多,提升效率就越高,當(dāng)文件數(shù)量為100時,腳本打印提升效率為400倍。
Application of automation technology in batch print area
Zhang Yuan
(Shaanxi Vocational &Technical College,Xi’an,710100)
Printing a large number of files is often needed in the office work.Calling the relevant program, selecting a printer and setting printing parameters are needed in the printing process according to the file format and the size of the print area.The manual operation is time-consuming.In order to solve these problems,the author used the AHK script language to make a program,through the techniques of automation AutoHotKey procedures to achieve the batch print function.Running the script program,all files in the specified directory could be automatically printed.The actual application shows that the script can greatly reduce duplication of effort and enhance the office efficiency.
computer application technology;batch print; automation technology;AHK;AutoHotKey