视障人群获取文件信息的系统设计与实现
2019-09-10张慧廖一泽
张慧 廖一泽
摘 要:随着互联网的普及以及视障人群数量的上升,视障人群的教育问题越来越重要。本文提出了一个实现视障人群无障碍获取信息的方法,致力于建立一个专门为视障人群提供服务的平台,将视障人群的需求和服务资源进行有效对接,通过这个平台打破了普通人群与视障人群的障碍,使每个公民都有平等的受教育的机会。
关键词:视障人群;二维码;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-),女,汉族,江西宜丰人,讲师,硕士,研究方向:计算机应用技术。