唐青松+賀建英
摘 要: 在線打印技術一直是開發(fā)者研究的熱點問題之一。如何實現(xiàn)在線自動生成圖片格式文件,并保證圖片及各種信息在網(wǎng)絡傳輸中不被泄露,是當前需要解決報名系統(tǒng)中在線打印準考證的一項重要技術問題。在此使用J2EE技術在線切割考生照片,設計算法分配考場,設計實現(xiàn)了生成準考證圖片,禁止用戶直接使用URL請求圖片文件,解決了圖片傳輸安全問題。該技術已經(jīng)在某高校2013年人事公招考試中應用和實施,表現(xiàn)出了良好的效果。
關鍵詞: J2EE; 信息技術; 信息處理; 圖形圖像
中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2014)20?0051?05
Online generation technology for examination certificate based on JPEG
TANG Qing?song, HE Jian?ying
(College of Computer, Sichuan University of Arts and Science, Dazhou 635000, China)
Abstract: Online printing technology has always been the research focus of developers. Regarding online printing for examinational certificate in registration system, how to automatically generate image format files on line and how to ensure that all the pictures and information wont be leaked out in the network transmission have become important technical issues needed to be solved currently. The pictures of examinational certificate can be generated on line by cutting photos with J2EE technology and examination hall is distributed with designed algorithms. The security of network pictures can be ensured by preventing users from getting pictures by using a URL request. The technology was applied to the open recruitment examination of a university, and achieved sound effect.
Keywords: J2EE; IT; information processing; graphic image
0 引 言
關于在線打印的技術一直是開發(fā)者研究的熱點問題之一。眾多學者對實現(xiàn)特殊格式的打印技術做出了大量的研究,文獻[1]對當前打印技術總結出直接使用IE的打印功能、IE的WebBrowser控件實現(xiàn)打印、水晶報表或第三方工具、將打印內容導出到Excel或Word中然后打印、用XML技術打印等6種方案,并提出了靜態(tài)和動態(tài)相結合的Excel模板Web打印方案;文獻[2]使用jatoolsPrinter控件實現(xiàn)B/S模式下的報表設計;文獻[3]提出先使用Word軟件設計模板,然后在應用程序中利用VBA對Word模板進行解析,生成打印文檔。以上技術分別使用導出Excel或Word文件,使用第三方控件解決了Web系統(tǒng)中的信息按照規(guī)定格式的打印問題。以上技術很好地實現(xiàn)了對一些特殊格式要求的打印,但是由于用戶導出的文件可以使用相關軟件進行修改操作,從而會導致打印出的紙質文檔與原始數(shù)據(jù)不一致的現(xiàn)象發(fā)生。因此,這些技術不能應用于考試報名系統(tǒng)中考生打印準考證模塊,設計出一種既能實現(xiàn)考生在線打印準考證,又能保證考生不能篡改其內容,并且實現(xiàn)信息在因特網(wǎng)中的安全傳輸是考試報名系統(tǒng)中亟待解決的技術問題。
1 總體設計
1.1 設計目標
在人事公招考試報名系統(tǒng)中,考生要通過報名系統(tǒng)平臺自主打印準考證,其設計的主要目標體現(xiàn)在以下方面:
(1) 嚴格規(guī)范打印格式。為體現(xiàn)公招考試的嚴肅性、規(guī)范性,各單位都要求各個考生打印的準考證與要求的格式一致,避免考生將各種不規(guī)范的準考證帶入考場。
(2) 防止考生篡改信息。為防止出現(xiàn)考試過程代考現(xiàn)象的發(fā)生,避免考生在打印前篡改準考證信息,因此,就要求使用相關技術實現(xiàn)在客戶端只能顯示圖片和打印準考證操作。
(3) 減輕工作人員負擔。當考生網(wǎng)上報名結束后,系統(tǒng)能抽取有效的基礎數(shù)據(jù),并根據(jù)實際要求,不但要將考試的所有信息填充在準考證內,而且要將考生進行智能分配考場,從而達到減輕工作人員工作量并提高工作效率的目的。
(4) 保證系統(tǒng)正常運轉。由于公招考試面向社會公開并接受社會的監(jiān)督,為避免考生由于技術問題而導致考生不能正常打印準考證,產(chǎn)生一些對單位的負面影響,因此,設計的生成準考證技術要求全面考慮各種因素,確??忌竺痛蛴士甲C。
(5) 加強模塊的實用性。報名系統(tǒng)平臺運行后,為保證今后每一次組織的公招考試報名中能按照不同的要求精確生成準考證,需要解決通用性的設計目標。當系統(tǒng)管理員在每一次導入準考證模板的尺寸大小不一、模板中的文字內容發(fā)生改變等情況下,系統(tǒng)能根據(jù)模板的變化而進行靈活地處理。
1.2 工作流程
系統(tǒng)在設計中主要有三種角色的用戶,即考生用戶、工作人員和系統(tǒng)管理員,系統(tǒng)生成準考證需要處理這三種用戶所設置的基礎數(shù)據(jù)。
考生在報名之前,系統(tǒng)管理員對報名系統(tǒng)進行初始化設置,其中初始化項目包括本次公開招聘的崗位及條件,報名的時間段等報考信息,考生的學歷、學位、政治面貌等選擇項信息,以上初始化信息用于考生報名模塊。在生成準考證模塊中,系統(tǒng)管理員初始化公招考試筆試的考試時間、地點和考場等考試信息,以實現(xiàn)將該信息填充到準考證內,另外系統(tǒng)管理員還需要向系統(tǒng)導入準考證模板。圖1給出了系統(tǒng)管理員向系統(tǒng)導入準考證的初始化流程。
在考生報名過程中,考生用戶將要填寫個人的基本信息,如姓名、性別、身份證號、政治面貌、學歷、學位、報考崗位、照片等信息,頁面提交后,系統(tǒng)將這些信息將保存在關系數(shù)據(jù)庫中,報名期間,工作人員登錄系統(tǒng),時時檢測考生報名的狀況,審核考生是否符合公開發(fā)布文件中所規(guī)定的要求,若考生不符合要求,工作人員及時發(fā)出信息告知考生??忌鷪竺刂梁螅艨忌瞎袟l件并具備考試資格,工作人員進入報名系統(tǒng)平臺執(zhí)行生成準考證的操作,當準考證文件生成后,考生再次登錄系統(tǒng),根據(jù)相關信息的提示打印準考證,從而考生可以取得考試資格,考生用戶操作的流程見圖2所示。
圖1 管理員上傳初始化模板流程圖
圖2 考生報名及打印準考證流程圖
2 技術實現(xiàn)過程
2.1 在線切割圖像的實現(xiàn)
考生注冊是公招考試報名系統(tǒng)中的一個重要模塊,其功能是實現(xiàn)對考生基本信息的收集。該模塊除了使用J2EE實現(xiàn)傳統(tǒng)的信息交互處理技術之外[4?5],還要求考生對提交的照片進行在線切割操作,以使得生成各個準考證中考生照片的尺寸相同。
在Web系統(tǒng)實現(xiàn)網(wǎng)絡在線切割照片,需要使用客戶端技術與服務器端的應用程序相結合的方式實現(xiàn)。程序基本流程為:
Step1:在考生注冊界面中實現(xiàn)照片的文件上傳功能,將考生的基本信息和照片文件傳送到服務器;
Step2:考生登錄系統(tǒng)后,客戶端網(wǎng)頁中顯示已經(jīng)上傳的照片,使用JS語言設計出按照規(guī)定的比例初始化照片的選擇區(qū)域,并給出提示信息;
Step3:在考生圖片上拖拽選擇區(qū)域,取出考生頭像圖片,在此同時記錄下該區(qū)域在照片中的相對位置坐標和大小;
Step4:用戶選取指定區(qū)域點擊確定按鈕后,將位置坐標值及區(qū)域大小值傳遞給服務器;
Step5:服務器根據(jù)客戶端傳遞的坐標和區(qū)域大小參數(shù)提取數(shù)值,對考生的原始照片進行切割;
Step6:切割后的照片按照準考證中規(guī)定的大小按比例縮放,以實現(xiàn)每一個考生照相同尺寸都相同。
在設計客戶端網(wǎng)頁中照片區(qū)域選擇及拖拽效果的過程中,為減少JS代碼的書寫,在網(wǎng)頁中導入jQuery框架,使用該框架提供的imgAreaSelect()函數(shù)實現(xiàn)對考生頭像區(qū)域的選取和確定區(qū)域坐標位置[6]。在服務器端,提取到頭像圖片尺寸及位置參數(shù)值后,使用Java類庫中的ImageInputStream,ImageReadParam,Rectangle,BufferedImage等類創(chuàng)建對象,調用類中定義的相關方法實現(xiàn)對照片的切割,其主要代碼如下:
FileInputStream fileInputStream = new FileInputStream(src);
Iterator
ImageIO.getImageReadersByFormatName("jpg");
ImageReader reader = it.next();
ImageInputStream imageInputStream =
ImageIO.createImageInputStream(fileInputStream);
reader.setInput(imageInputStream,true);
ImageReadParam param = reader.getDefaultReadParam();
Rectangle rect = new Rectangle(x, y, width, height);
param.setSourceRegion(rect);
BufferedImage bufferedImage = reader.read(0,param);
ImageIO.write(bufferedImage, "jpg", newImage);
ImageBean.resize(112,155,newImage);
該程序段執(zhí)行后,將對考生上傳的照片在坐標x,y值上切割出寬度為width,高度為height的新圖片newImage,實現(xiàn)了各考生照片寬度為112像素,高度為155像素,其效果如圖3所示。
圖3 在線裁剪圖片的效果
2.2 分配考場算法的實現(xiàn)
為考生分配考場是一個復雜的過程,由于某些崗位招聘的工作人員人數(shù)少,則該崗位的考生人數(shù)相對較少,在實際的考試過程中,不需要為每一個崗位分配一個教室,對考生人數(shù)較少的崗位,可以安排多個崗位的考生在一個考場內,以節(jié)約人力和物力資源。
設計中,在關系數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表,用于分配考場算法中基礎數(shù)據(jù)的提取和計算結果的保存。根據(jù)實際需求,創(chuàng)建了考場信息表(自動編號N(8),教室號C(5),教室容量N(3),已經(jīng)分配考生數(shù)量N(3),備注C(50)),系統(tǒng)運行后,該表由系統(tǒng)管理員執(zhí)行考場數(shù)據(jù)項添加操作;崗位信息表(自動編號N(8),崗位編號C(8),考生人數(shù)N(5),是否分配考場N(2)),該表從考生報名的基礎數(shù)據(jù)中統(tǒng)計得出,并將統(tǒng)計的各崗位及對應的考生人數(shù)等數(shù)據(jù)添加到數(shù)據(jù)表中;考場分配結果數(shù)據(jù)表(自動編號N(3),崗位編號C(10),教室號C(3)),用于存放算法執(zhí)行后,存放分配結果的數(shù)據(jù)集[7]。
在工程中創(chuàng)建Java類,使之分別與以上數(shù)據(jù)表建立對象關系映射(ORM),創(chuàng)建JavaBean模型,分別為各類設計出各數(shù)據(jù)表的增、刪、改、查詢等方法,實現(xiàn)數(shù)據(jù)事務的處理,創(chuàng)建該類的對象后,調用對象的方法可以為考場分配算法提供基礎數(shù)據(jù),在取得系統(tǒng)的基礎數(shù)據(jù)后,業(yè)務處理程序設計分配考場算法,其算法流程圖如圖4所示。
在算法流程圖中,為考場的最優(yōu)分配方案算法描述為:計算得出當前考場的剩余座位數(shù),定義臨時變量用于存儲剩余座位數(shù)與包括當前崗位的考生人數(shù)的差值,取崗位對象集合中的第一個崗位對象,若取得的崗位已經(jīng)分配了考場,則取下一個崗位對象,否則計算剩余座位數(shù)與考生人數(shù)的差值,若該值小于零,則繼續(xù)取下一個崗位對象進行判斷差值,取得差值后,用該值與臨時變量存放的值進行比較,以得出將差值最小的崗位對象分配到當前考場中,以此循環(huán)操作,當循環(huán)結束后得到分配的最優(yōu)解[8]。
圖4 分配考場算法流程圖
分配崗位的算法應用到工程的Web事務中,當服務器接收到管理員用戶在客戶端請求后,程序開始調用和執(zhí)行,并將執(zhí)行的結果存儲在數(shù)據(jù)表中,從而為準考證中輸出考生所在的考場提供數(shù)據(jù)支持。
2.3 生成準考證的實現(xiàn)
系統(tǒng)生成準考證程序執(zhí)行之前,需要使用客戶端技術實現(xiàn)考生基本信息在準考證模板中的定位設置,實現(xiàn)不同尺寸的模板圖片都可以正常生成準考證圖片,達到系統(tǒng)具有對模板靈活處理目的。
實現(xiàn)信息輸出的定位,通過鼠標在模板圖片上的單擊事件,觸發(fā)JS函數(shù)并記錄下鼠標在模板圖片中的坐標位置,并將x坐標值和y坐標值填充到文本框內,在操作界面中添加下拉框選擇當前坐標位置輸出哪一個信息項,最后使用Ajax異步傳輸技術[9],將當前的x坐標值、y坐標值以及輸出的信息項發(fā)送給服務程序,實現(xiàn)在服務器端保存設置。
在考生基礎數(shù)據(jù)收集、考場分配取得結果、信息項的輸出定位設置等一系列準備工作完成后,系統(tǒng)可以生成準考證圖片[11],其算法步驟描述如下:
Step1:以崗位編號為分組依據(jù),從數(shù)據(jù)庫取出符合考試資格的考生,并將這些考生存放在集合中;
Step2:取出數(shù)據(jù)庫中存放輸出位置的各信息項及坐標值對象,并將這些信息存放在集合中;
Step3:從集合中取第一個考生對象,使用該考生的崗位編號屬性值,搜索出考場信息、報考單位等相關屬性值,按規(guī)定的格式條件生成準考證號;
Step4:把上傳的模板文件復制到指定存放準考證文件的文件夾,并以考生的身份證號重命名;
Step5:在程序中創(chuàng)建Image對象讀取模板圖片,BufferedImage對象將模板圖片寫入到內存里的圖像緩沖區(qū),創(chuàng)建Graphics對象,并使用該對象的drawString()和drawImage()方法,在方法中傳入坐標參數(shù),實現(xiàn)對模板圖片中指定的位置輸出文字和圖片;
Step6:當前考生的準考證圖片已經(jīng)生成,繼續(xù)回到Step3,依次生成每一個考生的準考證。
至此,系統(tǒng)已經(jīng)實現(xiàn)了為各個考生生成圖片格式的準考證文件,其效果如圖5所示,系統(tǒng)核心技術已經(jīng)完成,剩下的工作是解決信息安全問題。
圖5 使用JPEG模板技術生成準考證效果圖
3 測試及結果分析
在某高校網(wǎng)絡管理中心計算機實驗室搭建J2EE運行環(huán)境,采用Tomcat作為Web服務器,MySQL數(shù)據(jù)庫軟件為系統(tǒng)提供數(shù)據(jù)服務,配置人事公招考試報名系統(tǒng)的域名為pta.sasu.cn,系統(tǒng)部署后,組織部分學生模擬在線報名以進行黑盒測試。在模擬報名過程中,系統(tǒng)運行狀況良好,學生能根據(jù)系統(tǒng)的提示信息進行操作,表現(xiàn)出系統(tǒng)具有較好的交互能力,工作人員登錄系統(tǒng)后能根據(jù)考生報名的數(shù)據(jù)和設置初始化信息生成準考證。
系統(tǒng)生成的準考證圖片文件平均大小約43 KB,保證了網(wǎng)絡帶寬比較低的考生用戶能快速取得準考證圖片文件。由于在系統(tǒng)生成準考證過程中,服務器頻繁讀寫文件,當生成超大數(shù)量的準考證時耗時比較長,經(jīng)對1 000個數(shù)據(jù)量的測試,得到表1的實驗結果。
根據(jù)測試中的數(shù)據(jù)表明,系統(tǒng)在生成準考證期間,管理員需要等待一段時間,直到準考證文件全部生成。在測試中設計了訪問數(shù)據(jù)庫的JSP頁面,通過系統(tǒng)在生成準考證期間與正常情況下,對該JSP頁面執(zhí)行耗時進行對比,通過測試數(shù)據(jù)可以表明,在生成準考證期間,雖然耗時較長,但不影響考生對系統(tǒng)的訪問。
表1 生成1 000個以內考生準考證的實驗測試結果
4 結 語
使用模板技術生成準考證,在某高校2013年度人事公開招聘工作人員在網(wǎng)上報名工作中發(fā)揮了重要的作用。生成準考證過程中,系統(tǒng)實現(xiàn)了為考生分配考場算法,并根據(jù)算法執(zhí)行結果,將考場信息自動填充到準考證中,減少了人工分配考場的工作量,提高了工作效率。系統(tǒng)生成的準考證,有效地解決了格式控制問題,保證了每一個考生的紙質準考證格式相同,體現(xiàn)了考試的正規(guī)性??忌谠L問準考證圖片文件中,禁止考生修改準考證圖片中的內容,防止了考生制作假準考證的代考現(xiàn)象,系統(tǒng)實現(xiàn)了準考證圖片在網(wǎng)絡傳輸中的防盜問題,保證了考生的信息安全?;贘PEG圖片模板的生成準考證技術,有較高的實用價值,該技術也可以進行推廣應用到其他工程項目中。
參考文獻
[1] 李永鋒,谷川.一種模板化的Web打印方法的設計與實現(xiàn)[J].計算機應用與軟件,2010,27(4):118?119.
[2] 張國晉,李仕金,陸歌皓.基于物流服務平臺下打印技術的研究與應用[J].計算機系統(tǒng)應用,2012,21(12):177?181.
[3] 楊麗軍.Word模板在報表打印中的應用[J].現(xiàn)代電子技術,2011,34(13):159?161.
[4] KUMAR B H, BADU M S P.An implementation of semantic web system for information retrieval using J2EE technologies [J]. International Journal on Computer Science and Engineering, 2011, 3(6): 2498?2025.
[5] KUMAR M K. Comparative study on relational data sets and XML data sets in J2EE system [J]. International Journal on Computer Science and Engineering, 2011, 3(11): 3552?3557.
[6] ASOKAN M. Animating the Web with query [J]. International Journal on Computer Science and Engineering, 2013, 5(2): 68?77.
[7] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M].4版.北京:高等教育出版社,2012.
[8] AHO A V, HOPCROFT J E, ULLMAN J D. The design and analysis of computer algorithms [M]. [S.l.]: Addison Wesley/Pearson, 2005.
[9] MARCHETTO A, TONELLA P, REAJAX F R. A reverse engineering tool for Ajax Web applications [J]. IET Software, 2012, 6(1): 33?49.
[10] SHAYEGANNIA Moein, HAJSHIRMOHAMMADI Atousa, MUHAIDAT Sami, et al. Transmission of JPEG2000 images over frequency?selective channels with unequal power allocation [J]. IET Image Processing, 2013, 7(1): 33?41.
[3] 楊麗軍.Word模板在報表打印中的應用[J].現(xiàn)代電子技術,2011,34(13):159?161.
[4] KUMAR B H, BADU M S P.An implementation of semantic web system for information retrieval using J2EE technologies [J]. International Journal on Computer Science and Engineering, 2011, 3(6): 2498?2025.
[5] KUMAR M K. Comparative study on relational data sets and XML data sets in J2EE system [J]. International Journal on Computer Science and Engineering, 2011, 3(11): 3552?3557.
[6] ASOKAN M. Animating the Web with query [J]. International Journal on Computer Science and Engineering, 2013, 5(2): 68?77.
[7] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M].4版.北京:高等教育出版社,2012.
[8] AHO A V, HOPCROFT J E, ULLMAN J D. The design and analysis of computer algorithms [M]. [S.l.]: Addison Wesley/Pearson, 2005.
[9] MARCHETTO A, TONELLA P, REAJAX F R. A reverse engineering tool for Ajax Web applications [J]. IET Software, 2012, 6(1): 33?49.
[10] SHAYEGANNIA Moein, HAJSHIRMOHAMMADI Atousa, MUHAIDAT Sami, et al. Transmission of JPEG2000 images over frequency?selective channels with unequal power allocation [J]. IET Image Processing, 2013, 7(1): 33?41.
[3] 楊麗軍.Word模板在報表打印中的應用[J].現(xiàn)代電子技術,2011,34(13):159?161.
[4] KUMAR B H, BADU M S P.An implementation of semantic web system for information retrieval using J2EE technologies [J]. International Journal on Computer Science and Engineering, 2011, 3(6): 2498?2025.
[5] KUMAR M K. Comparative study on relational data sets and XML data sets in J2EE system [J]. International Journal on Computer Science and Engineering, 2011, 3(11): 3552?3557.
[6] ASOKAN M. Animating the Web with query [J]. International Journal on Computer Science and Engineering, 2013, 5(2): 68?77.
[7] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M].4版.北京:高等教育出版社,2012.
[8] AHO A V, HOPCROFT J E, ULLMAN J D. The design and analysis of computer algorithms [M]. [S.l.]: Addison Wesley/Pearson, 2005.
[9] MARCHETTO A, TONELLA P, REAJAX F R. A reverse engineering tool for Ajax Web applications [J]. IET Software, 2012, 6(1): 33?49.
[10] SHAYEGANNIA Moein, HAJSHIRMOHAMMADI Atousa, MUHAIDAT Sami, et al. Transmission of JPEG2000 images over frequency?selective channels with unequal power allocation [J]. IET Image Processing, 2013, 7(1): 33?41.