国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

超聲探頭校準中信息管理自動化的研究

2015-01-29 02:57:56孫景峰劉慧英唐瑞琨
電子設計工程 2015年13期
關鍵詞:光標書簽調(diào)用

孫景峰,劉慧英,周 新,唐瑞琨,紀 超

(西北工業(yè)大學 陜西 西安 710072)

計量工作的最后要根據(jù)檢定數(shù)據(jù)出具檢定證書,該證書格式相對固定,只是其中的數(shù)據(jù)、圖表等不同,對于重復性的檢定工作,每次手工編寫證書,既浪費時間又容易出錯。因此,自動生成規(guī)范準確的Word證書具有重要的應用價值。鑒于檢定證書的特殊性,未經(jīng)允許不得部分復制,若將可編輯的Word文檔轉(zhuǎn)換成圖片格式,既方便查看又可避免隨意更改。概述Word自動化原理的基礎之上,在Visual C++2008平臺下,導入Word 2010的類庫,在程序中調(diào)用OLE自動化對象的方法來改變其屬性以完成對Word文檔的自動化操作。

采用文檔模板技術,避免了反復執(zhí)行相同操作;綜合運用書簽定位和光標跳轉(zhuǎn)等方法,實現(xiàn)圖表、文字并茂的規(guī)范檢定證書的自動生成,減少了錯誤率并有效地提高了工作效率。同時利用Microsoft Office提供的虛擬打印機組件,將Word文檔轉(zhuǎn)換為TIFF或JPEG等圖片格式,實現(xiàn)了文檔批量圖片化。

1 Word自動化原理概述

1.1 OLE自動化

OLE(Object Linking and Embedding,對象鏈接與嵌入)自動化是Windows應用程序操縱另一個程序的一種機制。該技術允許在一個程序的內(nèi)部操控另一個程序所提供的對象,被操控的一端稱為自動化服務器或自動化對象,操控的一端稱為自動化控制器或自動化客戶端。自動化服務器是一個擁有IDispatch接口的特殊組件,自動化控制器通過IDispatch接口可以調(diào)用自動化對象的所有方法和屬性。以Microsoft Word為例,其自動化模型可簡化為如圖1所示。

圖1 Word自動化模型Fig.1 Model of word automation

1.2 MFC對自動化對象的支持

自動化技術有自己的一套數(shù)據(jù)類型,在使用自動化對象時必須使用自動化兼容的數(shù)據(jù)類型[1-2]。自動化對象使用的基本數(shù)據(jù)類型為VARIANT結(jié)構(gòu)類型,該結(jié)構(gòu)包含兩個有意義的域:一是數(shù)據(jù)的確切類型,二是具體數(shù)據(jù)或數(shù)據(jù)指針。MFC對VARIANT數(shù)據(jù)類型進行封裝提供了COleVariant類。對于每一個自動化兼容的數(shù)據(jù)類型,COleVariant類都有相應的構(gòu)造函數(shù)。需要引起注意的是在使用COleVariant類時[3],很多方法的參數(shù)為可選,但不能為空,此時可使用如下的COleVariant對象:

COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);

這個對象的值的確切類型為VT_ERROR,具體值為DISP_E_PARAMNOTFOUND,即被標記為可選參數(shù)。更重要的是,MFC也對自動化服務器的IDispatch接口進行了封裝,提供了COleDispatchDriver類來處理該接口。編程者只需要定義COleDispatchDriver子類的對象,然后訪問該對象的成員函數(shù),改變對象的屬性即可完成自動化操作。MFC庫封裝了所有自動化對象所必需的一些代碼,編程者只需把注意力集中在對象的方法和屬性上面,不必過多關注自動化對象的參數(shù)處理以及調(diào)用傳遞過程。

2 Word自動化功能的實現(xiàn)

2.1 Word中的自動化對象

Word本身提供了對象庫(Object Library)文件,在Visual C++2008下,導入Word 2010安裝路徑下的類庫MSWORD.OLB,使之成為VC中可用的類文件,在程序中即可調(diào)用Word中相應的OLE對象,如Application對象、Documents對象等[4-6]。每一個對象都有自己的方法和屬性,都包含了Word的部分功能。事實上,對Word文檔的每一次可視操作都與修改對象有關。為了更有邏輯,更有層次地操作Word,Microsoft把應用(Application)按邏輯功能劃分為如圖所示的樹形結(jié)構(gòu),構(gòu)成了Word對象模型。

圖2 Word對象的層次結(jié)構(gòu)Fig.2 Hierarchy of word objects

2.2 數(shù)據(jù)庫支持

為了實現(xiàn)檢定數(shù)據(jù)信息的快速錄入,在后臺維護一個ADO數(shù)據(jù)庫,建立了檢定儀器表、制造單位表、檢定依據(jù)表及檢定員表等作為生成檢定證書的必要參數(shù),供生成證書時選擇,從而避免了每次手工輸入。文檔模板亦可視為數(shù)據(jù)庫的擴展部分,在程序外部設計好文檔風格,充分利用Word手工編輯證書的靈活性,減少代碼量,提高了執(zhí)行效率。

2.3 證書生成實例

以自動生成證書部分為例,介紹在VC中Word的自動化創(chuàng)建和數(shù)據(jù)填充功能的實現(xiàn)。實例的內(nèi)容來自于為某公司研發(fā)的超聲設備自動檢定系統(tǒng),在檢定工作的最后,根據(jù)檢定數(shù)據(jù)出具檢定證書。其原理如圖3所示,以下將按照創(chuàng)建順序給出主要實現(xiàn)步驟。

圖3 文檔自動生成原理圖Fig.3 Schematic diagram of word automation

2.3.1 創(chuàng)建工程,引入類庫

創(chuàng)建一個基于對話框的工程,在工程中導入Word類型庫,根據(jù)需要添加相應接口即生成對應的類,如CApplication類,CDocument0類,CSelection類,CBookmarks類等,再包含相關頭文件。

2.3.2 初始化COM庫

OLE自動化技術建立在COM基礎之上,只是簡化了COM的一些底層實現(xiàn)細節(jié)。因此,在項目的應用程序類的InitInstance()成員函數(shù)中,調(diào)用AfxOleInit()函數(shù),完成COM初始化。

2.3.3 創(chuàng)建Word服務并引用模板

要操作Word,首先要創(chuàng)建Word服務,之后再通過Add方法引用模板,即:

wordDocs=wordApp.get_Documents();

COleVariant WordTemplate=_T("D:\檢定證書_模板.dot");

wordDoc=wordDocs.Add(&WordTemplate,covOptional,covOptional,covOptional);

2.3.4 填寫內(nèi)容

與手動操作Word一樣,先要將光標移動到目標位置,填寫的內(nèi)容才有意義。書簽定位法與光標跳轉(zhuǎn)法相結(jié)合能達到理想的效果。此處以填寫表格內(nèi)容為例,首先用Selection對象的Goto()方法使光標跳轉(zhuǎn)至指定書簽位置,然后采用光標移動的方法,完成表格內(nèi)容填寫工作[7]。

wordSel=wordApp.get_Selection();

wordSel.GoTo (COleVariant((short)wdGoToBookmark),COleVariant((short)0),COleVariant((short)0),

COleVariant(_T("bk_SentBy"))); //轉(zhuǎn)到書簽處

wordSel.TypeText(m_strSentBy);//填寫送檢單位名稱

wordSel.MoveDown(COleVariant((short)wdLine),COleVariant((short)1),COleVariant((short)0));

不論是文字錄入,表格填寫還是圖片的插入,都可以采用這種方法實現(xiàn)精準定位。經(jīng)過以上步驟,即可自動生成規(guī)范、美觀的證書文檔。

2.3.5 運行界面

程序運行界面如圖4所示。

圖4 程序運行界面Fig.4 Interface of the program

3 文檔圖片化

檢定證書具有法律效力,未經(jīng)書面許可不得部分復制。將Word版本證書轉(zhuǎn)換為圖片格式發(fā)布可以防止使用者輕易改變證書內(nèi)容,對版權保護起到積極作用。

將Word文檔手動轉(zhuǎn)換為圖片格式的方法較多。文獻[8]提出了一種在WPS文字中安裝“輸出為圖片格式”插件的方法,不適合MSWord環(huán)境;文獻[9]提出了在Word中將文本選擇性粘貼為增強型圖元文件的方法實現(xiàn)文檔圖片化,該法一次最多只能轉(zhuǎn)換一頁文檔;文獻[10]提出了借助于第三方虛擬打印技術將文檔轉(zhuǎn)換為圖片的方法,值得借鑒。綜合考慮兼容性、簡便程度及能否批量轉(zhuǎn)換等因素,本文采取調(diào)用MS Office 2010提供的Microsoft Office Document Image Writer虛擬打印機的方法,將Word文檔批量轉(zhuǎn)換為TIFF或JEPG等格式的圖片文件。實現(xiàn)流程及核心代碼如下。

圖5 文檔圖片化流程圖Fig.5 Flow chart of document imaging

1)得到系統(tǒng)默認打印機名稱并保存;

PRINTDLG printDlg; //該結(jié)構(gòu)包含了打印對話框中的所有信息

AfxGetApp()->GetPrinterDeviceDefaults(&printDlg);

lpDevMode= (LPDEVMOD)::GlobalLock (printDlg.hDevMode);

strDefualtDev=lpDevMode->dmDeviceName;

2)設定新的默認打印機

::SetDefaultPrinter(_T("Microsoft Office Document Image Writer"));

3)取得默認打印機的屬性,根據(jù)需要修改屬性,如打印分辨率、打印方向等;

調(diào)用DocumentProperties()函數(shù)設置打印機屬性,并用API函數(shù)SetPrinter()使更改生效。

4)打印到文件

調(diào)用文檔的PrintOut方法,其中第一個參數(shù)設為False,表示非后臺打印,即使關閉word,打印也不會停止;第四個參數(shù)為保存路徑;第四個參數(shù)指定輸出文件的路徑和文件名;第十一個參數(shù)為True,表示打印到文件。

5)還原默認打印設備

::SetDefaultPrinter(strDefualtDev);

6)退出 Word

wordDoc.Close(covFalse,covOptional,covOptional);//關閉文檔,不保存

wordApp.Quit(covOptional,covOptional,covOptional);//退出Word

wordDoc.ReleaseDispatch();//斷開與Word服務器的關聯(lián)

wordApp.ReleaseDispatch();

上述方法實現(xiàn)了在不阻塞程序運行的情況下,靜默地將Word文檔批量轉(zhuǎn)換為多張圖片并保存在一個圖像文件中,避免了對用戶的不良打擾,在保護證書版權的同時,便于證書歸檔及查看。圖6為生成的圖片格式證書。為了保證插入文字后格式依然規(guī)整,圖4中“送檢單位”及以下各欄是由去掉邊框的表格構(gòu)成。

圖6 圖片格式的檢定證書Fig.6 Image format of verification certificate

4 結(jié)論

本文在闡釋Word自動化編程原理的基礎上,例舉了一個在VC平臺下,基于OLE技術的應用案例,展示了書簽定位與光標跳轉(zhuǎn)技術在生成規(guī)范文檔上的靈活性;利用Office自帶的虛擬打印機組件,實現(xiàn)了不借助第三方軟件支持,將Word文檔批量轉(zhuǎn)換為圖片的功能,解決了工程實踐上的突出問題。本文對工程中的報表生成有很大的參考價值,同時為版權保護提供了一個簡便高效的方法。

[1]潘愛民.COM原理與應用[M].北京:清華大學出版社,1999.

[2]金良鋒,周文詳.WORD試驗報告的自動生成[J].中國測試技術,2007,33(4):112-115.JIN Liang-feng,ZHOU Wen-xiang.Auto generation of experiment report in Word form[J].China Measurement Technology,2007,33(4):112-115.

[3]徐格寧,馮曉蕾,陶元芳,等.基于COM+VC+Word技術的產(chǎn)品設計說明書自動化研究[J].中國工程機械學報ISTIC,2009,7(3):294-299.XUGe-ning,FENGXiao-lei,TAOYuan-fang,et al.Automation on product design manual via COM,VC and Word[J].Chinese Journal of Construction Machiner,2009,7(3):294-299.

[4]車曉波,王知學,王磊.在實現(xiàn) Word自動化操作中書簽的應用[J].信息技術,2013(8):148-150.CHE Xiao-bo,WANG Zhi-xue,WANG Lei.Application of bookmark in Word automatic opetation[J].Information Technology,2009,26(9):123-125.

[5]陳特放,方斌.VC平臺下基于OLE的Word自動化操作應用[J].計算機應用與軟件,2009,26(9):123-125.CHEN Te-fang,FANG Bin.Applying OLE-based word automation on VC platform[J].Computer Application and Software,2009,26(9):123-125.

[6]熊瑜容,柴毅,王淑娟,等.基于VC++的WORD文檔自動生成技術[J].計算機時代,2010(1):52-54.XIONGYu-rong,CHAI Yi,WANG Shu-juan,et va.Word document automatically generated technology based on VC++[J].Computer Era,2010(1):52-54.

[7]劉春雷,吳重光.用 VC實現(xiàn) Word自動化操作的研究與應用[J].計算機工程與設計,2004,25(9):1594-1596.LIU Chun-lei,WU Chong-guang.Study and realization of Word automation operation in VC[J].Computer Engineering and Design,2004,25(9):1594-1596.

[8]劉長德.文檔轉(zhuǎn)圖片,打印、保護兩相宜 [J].電腦愛好者,2010(3):16-16.LIU Chang-de.Document to image[J].Computer fans,2010(3):16-16.

[9]長江水.利用Word實現(xiàn)文檔轉(zhuǎn)圖片[J].電腦迷,2011(12):63-63.CHANGJiang-shui.Implementation of document transfer into pictures with Word[J].Computer Fans,2011(12):63-63.

[10]王杰.將Word文檔“打印”為圖片[J].網(wǎng)友世界,2011(22):33-34.WANG Jie.Word document printed as a picture[J].Net world,2011(22):33-34.

猜你喜歡
光標書簽調(diào)用
透明書簽
十一月書簽
文苑·感悟(2019年11期)2019-12-05 02:50:31
核電項目物項調(diào)用管理的應用研究
十一月書簽
文苑(2019年21期)2019-11-04 09:16:40
貳月書簽
文苑·感悟(2019年2期)2019-02-18 02:10:40
LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
測控技術(2018年5期)2018-12-09 09:04:46
基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
電腦迷(2015年4期)2015-05-30 10:48:04
Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
電腦迷(2015年8期)2015-05-30 08:36:03
Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
電腦迷(2015年10期)2015-04-29 15:14:20
巴彦县| 新沂市| 阳高县| 凤城市| 新乡市| 龙里县| 岢岚县| 台东市| 南平市| 吴旗县| 普兰店市| 永寿县| 蒙城县| 上杭县| 连江县| 大庆市| 齐齐哈尔市| 孝昌县| 青川县| 仪陇县| 漯河市| 阳西县| 鸡东县| 林芝县| 菏泽市| 抚松县| 宝丰县| 玛多县| 临桂县| 手机| 菏泽市| 河北省| 集贤县| 苍山县| 堆龙德庆县| 同心县| 高唐县| 林州市| 张家港市| 平原县| 葫芦岛市|