張慧 廖一澤


摘 ?要:隨著互聯網的普及以及視障人群數量的上升,視障人群的教育問題越來越重要。本文提出了一個實現視障人群無障礙獲取信息的方法,致力于建立一個專門為視障人群提供服務的平臺,將視障人群的需求和服務資源進行有效對接,通過這個平臺打破了普通人群與視障人群的障礙,使每個公民都有平等的受教育的機會。
關鍵詞:視障人群;二維碼;Java;無障礙信息平臺
中圖分類號:TP393.092 ? ?文獻標識碼:A 文章編號:2096-4706(2019)18-0013-03
Abstract:With the popularization of the internet and the increase of the number of visually impaired people,the education of caring for visually impaired people is becoming more and more important. This paper proposes a method to achieve accessible access to information for visually impaired people. It is dedicated to establishing a special platform to provide services for visually impaired people,effectively docking the needs and service resources of visually impaired people,through this platform to break the barriers between ordinary people and visually impaired people,so that every citizen has equal access to education.
Keywords:visually impaired people;two-dimensional code;Java;barrier-free information platform
0 ?引 ?言
視障人群是指由于各種原因使視覺器官或大腦視覺中樞的構造或功能部分或完全病變,導致雙眼不同程度的視力損失或視野縮小,使其在正常的生活、工作、學習等方面受到阻礙的人群[1]。據研究表明,人類獲取的信息83%來自視覺,11%來自聽覺。目前,全世界有2.53億人有視力障礙,而中國多達1700萬[2]。隨著中國人口的老齡化,視障人群會越來越多。2013年,信息無障礙研究會、阿里巴巴集團、騰訊、百度、微軟(中國)共同發起了一個信息無障礙產品聯盟,然而除了微軟、阿里巴巴、騰訊這些大公司在產品的研發上會考慮信息無障礙優化,大多數APP產品都會忽視視障者的使用需求。目前我們國家正從網絡大國邁向網絡強國,為了讓13億中國人都能享受到互聯網發展帶來的成果,就要保證各種人群(包括視障人群)都能公平、平等地獲取信息。
1 ?系統分析
本系統致力于為視障人群提供閱讀服務,或者說是期望建立一個國家性的標準,在出版書物或者政府性文件通知的右上角印有標識該頁內容的二維碼,視障人群通過掃碼可以獲取普通大眾所能獲取的信息,期望通過這個平臺打破普通人群與視障人群的障礙,拓寬視障人群信息獲取渠道,擴大視障人群的印刷、出版物的選擇范圍,使每個公民都有平等的受教育的機會。
1.1 ?功能需求
(1)信息的安全性:需要對二維碼中存儲的信息進行加密,利用特定的移動端APP進行掃描才能獲取二維碼中的信息,保障數據的安全性[3]。
(2)掃描的速度與精度:需要提高系統讀取二維碼信息的速度與準確度[4]。
(3)二維碼存儲信息容量:二維碼中存儲的信息容量與二維碼的尺寸、數據編碼、糾錯等級有關,需要提高二維碼存儲信息的容量[5]。
(4)信息獲取方式:利用讀屏軟件將文字轉化為語音,使視障人群通過聽覺獲取信息。
(5)隨讀隨停:對于視障人群來說,閱讀的難度比一般人要大,所以閱讀的速度一般比普通人要慢,且在閱讀的過程中要隨讀隨停,在下次重新閱讀時可以繼續上次的內容進行閱讀。
(6)獲取上下頁內容:掃碼只能獲取當前頁文檔內容,需要提供用簡單易操作的方法獲取上一頁或者下一頁文檔的內容的方法。
1.2 ?狀態轉換圖
所有政策性文件、重要通知、活動內容等電子材料可上傳數據至服務器端,進行編輯、分頁、生成加密的二維碼。在印刷的過程中,將生成的二維碼添加至每一頁的右上角,視障人群通過特定的移動客戶端APP掃描加密后的二維碼,通過讀屏軟件讀取服務器端的指定頁面,并通過特定手勢進行換頁。
圖1為系統狀態轉換圖,管理員經過身份驗證登錄,獲取編輯文件的權力,可進行文件換頁、加批注,圖片用文字代替等操作,實現編輯后進行保存。可通過點擊按鈕查看上一頁或下一頁文檔,當對所有的頁面操作完成后,點擊按鈕可生成最終帶有二維碼的文檔。
2 ?系統的設計與實現
本系統采用MyEclipse作為開發工具,利用Java作為開發語言,MySQL數據庫存儲數據。系統的流程圖如圖2所示。
從圖2中可以看到系統中各個頁面和類之間的關系。首先管理員需要在Login.jsp(登錄界面)進行身份驗證,若驗證錯誤則跳轉到Wrong.jsp頁面進行報錯信息;若登錄成功則跳轉到Upload.jsp頁面進行文件上傳,文件上傳到服務器端,需進行幾個類的操作處理,比如將文檔進行分頁、生成二維碼、添加二維碼圖片等。在前臺通過Show.jsp頁面展示上傳的文檔,可通過按鈕和參數傳遞查看上下頁文檔的內容,通過Editor.jsp對頁面進行編輯,并通過testitext類對修改過的文檔進行提交保存,保存后系統會自動跳轉到Show.jsp頁面,若所有頁面檢查無誤,則點擊finish按鈕生成最終的帶二維碼的PDF文檔。
2.1 ?文件的上傳
文件上傳是指將本地文件上傳到服務器,是通過在form表單中設置action、enctype和method來實現。
2.2 ?文件的分頁
系統利用PDF文件實現視障人群對信息的獲取,利用分頁的PDF文件實現隨讀隨停。由于PDF是一種電子文件格式,系統以PostScript語言圖像模型為基礎,將文字、字型、格式、顏色以及分辨率等封裝在一個文件中,這并不是簡單的數據流,需要根據它的文件格式來進行解析,所以使用第三方JAR包來對PDF文件進行處理。
PDFBox是一個開源的純Java類庫,它可對PDF文件進行創建、提取文本、分頁、合并、插入等操作。Xpdf是一個開源的PDF文件瀏覽器,通過Java調用命令行執行并生成結果,Xpdf中的pdftotext命令可以給PDF文件轉化為txt格式提供便利。通過比較,Xpdf在各方面都要優于PDFBox,Xpdf可以保持較好的文檔格式,運行速度更快。因此,本系統利用Xpdf來對PDF文件進行分頁并轉化為txt文件。
2.3 ?文件的編輯保存
使用CKEditor對文件進行編輯,當CKEditor的功能與文本元素置換,它與表單的整合是自動的。當提交表單時,CKEditor會自動更新文本內容,所以就不需要改變任何服務器端的處理表單提交內容的代碼。也就是說,當提交一個包含CKEditor實例的表單,使用文本(textarea)元素作為獲取數據的鑰匙,它的數據會自動提交到服務器。可通過按鈕查看前后頁面,在編輯框內進行編輯,并將數據保存到服務器。
2.4 ?生成二維碼圖片
每個PDF文件都進行了分頁,每一頁都可進行編輯后保存,輸出到txt文件中,所以每個PDF的每一頁都是一個txt,它們都存儲在Tomcat服務器上,把每個txt文件的URL地址進行加密后生成二維碼,也就是說,每一個txt文檔都有其所對應的二維碼圖片,并且在編輯頁面的右上角都會顯示二維碼圖片。
2.5 ?掃碼文件的生成
iText是一個產生PDF文件并且對PDF文件進行操作的Java類庫,它可用來根據XML文件或者數據庫內容動態生成PDF文件;使用PDF文件的交互性特征;在PDF文件上添加標記、頁碼、二維碼等;對PDF文件進行分頁、連接和其他處理;為PDF文件添加數字簽名;自動填寫PDF表格等。iText一般用于以下情況:并不能提前獲取相關內容,這些內容是基于用戶輸入的或者實時數據庫中的內容;因為大量的頁數或者文檔無法手動生成PDF文件;文檔需要自動創建,并且批處理;文檔的內容需要按照客戶的要求或者是私人定制。當需要動態提交內容到瀏覽器時就會遇到以上這些情況。一般地,我們會以HTML的表單來提交信息,但是如PDF之類的文檔,用iText類庫可以使提交的PDF文件有更好的打印質量、更安全并且可以減少存儲的空間。
系統需要在最終生成的PDF文檔中添加二維碼圖片,并且需要批量生成PDF文檔,所以選用iText類庫[6]。首先創建一個document對象,然后創建一個PdfWriter實例,將文件輸出流指向一個最終生成PDF的地址,接著用open()方法打開文檔,用add()方法在文檔中增加段落和生成的二維碼圖片,從編輯保存后的txt文件中讀取的數據流作為段落添加到最后的PDF文件中,而生成的二維碼則可以作為圖片添加到PDF文件中,并且可以用setAlignment()方法對圖片放置的位置、文字環繞的方式進行設置,本文考慮到視障人群的需求,將二維碼圖片放置在每一頁的右上角,并且是文字環繞圖片,最終文檔只是比原文檔的右上角多了一個和該頁對應的二維碼。當然,如果管理員有對該頁進行編輯修改,那么生成的便是編輯保存后的頁面。
2.6 ?中文亂碼問題
手動設置源文件和HTML頁面的參數,指定使用字符集編碼和瀏覽器一致,統一設置編碼格式為UTF-8,在JSP頁面加上:<%@ page language="java" pageEncoding= "UTF-8"%>,這是指JSP文件的存儲編碼格式為UTF-8。
<meta http-equiv="Content-Type" content="text/html charset=UTF-8">是控制瀏覽器的解碼方式,如果頁面中嵌入頁面,比如本文嵌入了CKEditor編輯器,而CKEditor的默認編碼是UTF-8,這時就要考慮到它提交表單的編碼字符集,頁面編碼要與編輯器編碼設置為一致,以免亂碼。
用request.seCharacterEncoding ("UTF-8")對請求統一進行編碼,因為瀏覽器默認使用UTF-8編碼方式來發送請求。
利用response.setContentType("text/html;charset= UTF-8")來控制數據庫亂碼問題,利用InputStreamReader()和Out putStreamWriter()指定字符集,控制文件讀寫亂碼。
按照以上詳述設置后,信息在頁面中顯示、在數據庫中存取以及文件讀寫時,都不會出現亂碼問題。
3 ?結 ?論
本文從系統目標、功能需求進行分析,得到系統的狀態轉換圖和系統流程圖,再對系統的各個功能通過編寫代碼進行實現。通過系統的實現,紙質文件無需單獨印發盲文,只需要含有對應的電子文件即可,減少了大量工作量,方便了視障人群的閱讀。
參考文獻:
[1] 孟曉,劉向東.一維多進制色條碼編碼研究 [J].浙江大學學報(工學版),2004,38(5):559-561.
[2] 謝長杉.CC講壇朱清毅:視障人群如何不被信息時代落下 [EB/OL].(2018-12-22).http://finance.sina.com.cn/hy/hyjz/2018-12-22/doc-ihqhqcir9287610.shtml.
[3] 張敏.二維碼技術在高校管理中的應用研究 [D].保定:河北農業大學,2015.
[4] 楊勇.基于機器視覺的條形碼及二維碼識別系統的設計 [J].微型電腦應用,2018,34(11):63-66.
[5] 張研.淺談二維碼技術在企業檔案管理中的應用 [J].機電兵船檔案,2017(6):65-66.
[6] 楊黎,王楓.EAST文檔自動化的研究與實現 [J].計算機應用與軟件,2016,33(1):53-56.
作者簡介:張慧(1984-),女,漢族,江西宜豐人,講師,碩士,研究方向:計算機應用技術。