百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

一种基于PDF动态标注的远程维修指导系统

yuyutoo 2024-10-22 18:36 5 浏览 0 评论

娄景艺,屈晓旭

(海军工程大学 电子工程学院,湖北 武汉 430033)

摘 要: 针对短波低速通信条件下船舶远程维修指导效率低下的问题,提出了一种新的基于PDF动态标注技术的远程维修指导信息交互手段。基于Acrobat SDK实现了PDF文档所见即所得方式的动态标注,其中重点解决了PDF文档动态加载、基于Windows钩子技术的PDF文档鼠标响应处理、PDF标注动态添加中的坐标空间变换以及PDF标注文本的动态修改等问题。实际应用表明,通过应用PDF动态标注技术,实现了窄带低速通信条件下的所见即所得的维修信息描述,为无视频通信辅助条件下的高效远程维修指导提供了一种可行手段。

0 引言

目前,短波通信因其应用范围广、抗毁性强、通信距离远(可全球通信)、运行成本低等特点,仍是船舶远洋航行中不可或缺的通信手段[1]。依托短波通信系统构建基于计算机辅助协同工作(Computer Supported Cooperative Work,CSCW)[2-3]技术的远程维修指导平台,对于保持和提高船舶的持续运行能力具有显著意义。但是,由于短波信道环境恶劣,短波通信带宽一般较窄,在美国国防部最新提出的MIL-STD-188-141C短波组网协议中,最大信道带宽也只有24 kHz[4],通常仅能支持话音和低速数据业务。现有基于语音的远程维修指导方式主要存在以下两方面问题:一是维修指导双方难以快速准确地描述指示灯和故障模块的位置、具体检修的方法和位置、显示的具体情况等辅助信息;二是通常短波语音通信可懂度低,维修指导过程开展困难。相比话音通信,短波低速数据通信的实时性稍差,但可靠性高。本文利用短波低速数据通信设备,基于PDF动态标注技术实现了一种窄带通信条件下的所见即所得(What You See Is What You Get,WYSIWYG)的高效维修信息描述和传递手段。

1 平台总体设计

维修指导过程中常见的信息包括故障位置、故障状态、自检结果、检修位置等,在低通信带宽条件下,将维修信息进行合理编码能够有效压缩数据流量,提高远程维修指导效率。维修信息编码过程本质上是一种信源编码过程,平台针对维修交互信息的特点,利用模型基压缩编码理论对维修交互信息进行高码率压缩,有效降低了信息码率。模型基信源编码的基本思想是在收发信者之间共享信源模型,将信源产生的原始消息建模为某种激励信号作用于信源模型,并在通信时仅传输此激励信号。理论研究表明,如果信源模型构建合理,所提取的激励信号码率将远低于原始消息码率。

本系统中将维修现场的装备相关信息(包括装备内外部结构、组成、连接关系、工作状态、维修手册、电路图册等)建模为信源模型,并从收发双方围绕装备展开的故障描述和维修指导信息中提取激励信号。具体设计中采用PDF文档承载信源模型,收发双方保存相同PDF文档库,利用PDF标注技术描述激励信号,使维修指导双方可以高效准确地描述各类维修信息,保证了低信道带宽条件下的维修信息交互效率。

远程维修指导平台依托普遍安装的陆地和船舶通信设施实现,由陆地部分和海上部分两部分组成,如图1所示。陆地部分和海上部分内部都使用以太网作为网络载体,二者之间经短波无线网关控制器利用短波数字通信设备互连互通。

厂家客户端和船舶客户端采用一致的架构设计。维修专家可利用PDF动态标注技术、实时VoIP语音和文本聊天等形式展开远程维修指导。基于以太网络的实时VoIP语音通信和文本聊天技术已很成熟,本文不再赘述。本文重点分析客户端中PDF动态标注技术的实现,这也是平台设计中的重点。

2 PDF动态标注技术的实现原理

便携式文档格式(PDF)是由Adobe公司于1993年开发出的一种文件格式,能容纳电子表单、网页、视频、音频、3D虚拟现实等丰富内容,便于集成各种媒体格式的维修资料。根据PDF文档规范,一个PDF文档(document)是由若干对象(object)组成的,这些对象共同组成了文档的页面(pages)。PDF标注(annotation,也称附注)是一类特殊的PDF对象。要对PDF标注进行动态控制,需要对PDF文档的结构进行解析。目前,PDF文档的解析工具有多种,主流的解析工具包括Apache公司推出的开源工具PDFBox[5]、著名开源站点Sourceforge的iTEXT[6]以及Adobe公司提供的Acrobat SDK[7]。前两者是开源项目,但功能有限,系统设计中选用Adobe SDK开发。

Acrobat SDK采用OLE对象(SDK中称作IAC对象)实现Windows平台下的PDF文档显控[8]。IAC对象分两个层次,一是Application View(AV)层,使用该层控制PDF文档的显示,该层中包括AVDoc、AVPageView、AVMenu等对象,显示的文档形式与Acrobat reader显示非常相似,用户界面友好;二是Portable Document(PD)层,使用该层提供的对象可操作PDF文档中的内容,例如增减页面、操作PDF文档中的标注等。

需要指出的是,Acrobat SDK中PDF文档在客户程序中的显示是以COM接口形式实现的,该接口提供了PDF文档操作需要的基本功能,但是未提供鼠标响应事件。

实现PDF标注动态控制的过程须解决以下四个问题:(1)PDF文档在用户程序中的动态加载;(2)为显示的PDF文档增加鼠标响应等用户交互能力;(3)以所见即所得的方式添加PDF标注;(4)实现PDF标注文本的动态修改功能。

3 PDF文档动态加载的实现

PDF文档的加载流程如下:

//创建AVDoc对象,用于控制PDF文档的显示

AVDoc=new AcroAVDocClass;

//打开PDF文档,并将其关联至tabPage

AVDoc.OpenInWindowEx(fileFullName,tp1.Handle.ToInt32,..);

//创建PDDoc对象,用于解析和控制PDF文档的内容

PDDoc=(AcroPDDoc)AVDoc.GetPDDoc;

//获取当前文档的AVPageView对象

AVPageView=(AcroAVPageView)AVDoc.GetAVPageView;

//导航至首页

AVPageView.GoTo(0);

本设计中采用多标签页形式显示不同PDF文档,即每个TabPage上显示一个PDF文件。PDF文档显示到客户端TabPage上后,在TabPage的大小发生变化时,其上显示的PDF文档不会自动同步变化,需要程序自行控制。控制方法是在TabPage所在的TabControl的Resize事件中重设PDF视窗大小和位置,具体方法是首先使用系统API函数GetWindow获取PDF显示视窗句柄,然后利用系统API函数SetWindowPos将该窗体调整至合适位置。

4 基于Windows钩子技术的PDF文档鼠标响应处理

在PDF标注编辑过程中,采用鼠标指定标注所在位置的所见即所得的方法是最高效的方法,但Acrobat SDK未提供鼠标响应机制。为此,本系统设计中利用Windows的全局鼠标钩子机制为PDF文档视窗加入了鼠标事件。

钩子(Hook)是一种Windows消息处理机制,用户程序可在钩子上挂载自定义函数监视指定窗口的某种消息,被监视的窗口可以是其他线程创建的[9]。当指定消息发出时,在没有到达目的窗口前,钩子程序可以先捕获该消息。图2为鼠标钩子的实现流程图。

设计MouseHook类挂载和卸载鼠标钩子,捕获Windows标准鼠标事件及触发自定义的.Net事件OnMouseActivity。PDF显示窗口类订阅.Net事件响应鼠标事件。在钩子回调函数中,若满足以下条件,则触发鼠标事件MouseHookProc:(1)显示PDF的窗体可见且处于最上层;(2)鼠标位置在PDF窗体区域范围内。

钩子的挂载和卸载采用Windows API函数SetWindowsHookEx和UnhookWindowsHookEx实现。

5 PDF标注动态操作中不同坐标系间映射的实现

在对PDF标注进行添加、选中、修改过程中,需要解决屏幕坐标系、用户坐标系及设备坐标系间的相互映射问题。

在Windows操作系统中,屏幕坐标系以屏幕左上角为原点,向右、向下分别为横纵两个坐标轴的正方向。鼠标钩子返回的鼠标位置就是相对于此坐标系的。而用户坐标系(User Space)和设备坐标系(Device Space)是PDF文档操作中两个重要概念。用户坐标系如图3所示,缺省的用户坐标系为每次页面刚刚加载时的坐标系。该坐标系的原点位于该页媒体框(Media Box)的左下角。图中的Crop Box为PDF文件显示的区域,而Media Box则包含了PDF文件四周的灰色边框。缺省的用户坐标系的单位为1/72英寸。在Acrobat SDK中,PD层的各种对象均使用该坐标系,这是因为该坐标系与实现无关。

设备坐标系是PDF文件显示于屏幕上时使用的坐标系,其单位为像素,坐标轴取向与屏幕坐标轴取向相同,如图4所示。与用户坐标系不同,该坐标系用于PDF文件的显示。设备坐标系的原点位于Crop Box的左上角。众所周知,随着PDF文档的缩放,该区域的位置在屏幕上是变化的。

作为PDF文档的一种对象,PDF标注的位置和大小采用的坐标系为用户坐标系。由上可见,为了以一种所见即所得的方式添加标注,即将标注添加到鼠标指示的PDF文档位置上,必须将鼠标位置坐标(屏幕坐标系)映射到用户坐标系上,但Acrobat SDK未提供该映射接口,而是提供了设备坐标系到用户坐标系的接口。为了实现所见即所得的鼠标操作,需执行如下步骤:

(1)获取鼠标在屏幕上的位置Pm(屏幕坐标系);

(2)将Pm映射到设备坐标系Pd;

(3)将Pd映射到用户坐标系Pu。

Pm到Pd的映射可采用以下公式实现:

Pd.x=Pm.X-PdfWindowRect.Left+PdfWindowDeviceRect.Left

Pd.y=Pm.Y-PdfWindowRect.Top+PdfWindowDeviceRect.Top

其中,PdfWindowRect为PDF显示窗体中Media Box的矩形区域(采用屏幕坐标系),可直接根据Tabpage窗体客户区矩形获得;PdfWindowDeviceRect为PDF窗体Crop Box的矩形区域(采用用户坐标系),可利用AVPageView.GetAperture函数获得。Pd到Pu的映射可直接调用AVPageView.DevicePointToPage函数实现。

6 PDF标注文本的动态修改

PDF标注在添加到PDF页面上时,可以指定其对应的文本内容。但与Acrobat Reader中不同,该内容可以阅览,但不支持现场编辑。虽然如此,Acrobat SDK预留了PDF标注文本的设置接口,即AcroPDAnnot对象的SetContents和GetContents函数。系统设计中,使用此接口解决该问题。用户在指定文本框中输入的文本内容自动添加到PDF文件上选中的标注上。PDF文档标注本身并无选中与否的属性。为此,系统设计中为文档标注加入了选中属性,方法是当鼠标点击PDF文档时,自动判定当前位置是否有PDF标注,如果有,则在程序中记录该标注作为当前选中标注,同时更改该标注的颜色以突出显示。

7 平台应用效果及分析

图5为应用基于PDF动态标注技术的远程维修指导平台的用户界面示例。维修船员首先利用文本聊天和表单对故障进行了描述。陆地工程师根据故障现象,打开设备图册(一个PDF文件),并在“电源稳压单元内部结构图”页面的电源输出连接头处添加标注(图中左上方标注),指导船员检查连接器处是否损坏。船员客户端会自动同步打开同一PDF文件,并同步添加相同标注。船员检查后发现电源板中一个电解电容器损坏,故障排查完成。

由于在陆/船双方保存了相同的PDF文件资料库,上述过程中仅需传递PDF文件编号、标注页码、标注内容等信息,需要交互的信息量大大压缩,且故障位置、检修位置、维修手册翻阅等均以所见即所得的形式实现,提高了远程指导效率。由于PDF文件不仅可以存储装备使用说明书、技术说明书、检修手册、实物照片等静态信息,还可以存储视频、虚拟实境等动态对象,资源丰富,能够保证远程维修指导的顺利开展。

利用该平台进行维修指导时,陆地和海上部分之间的交互信息中既包含了故障现象,又包含了故障检测、分析和维修流程,因此可以作为设备维修案例库使用,用于类似故障维修的参考或设备维修教学中的生动素材。

8 结论

由于短波装备在各类军民用船只上安装广泛,且各种维修相关的纸质或电子版资料、照片甚至视频信息均可方便地集成于PDF文档中,平台的文档资料资源可以得到充分保证,因此平台的实际应用前景广阔。该方法亦可推广应用于带宽受限的基于卫星通信的远程维修指导平台,由于需要的通信带宽窄,成本低,可作为一种低成本的常规远程维修指导手段。

参考文献

[1] 罗利春,王越.短波通信100年与通信电子战的新课题[J].系统工程与电子技术,1998,20(11):42-44.

[2] 王旭辉,王彤.CSCW技术在装备远程维修支持信息系统中的应用[J].火力与指挥控制,2010,35(1):132-135.

[3] 刘建辉,张俊利,王爽.基于Agent的远程协同故障诊断系统研究[J].计算机测量与控制,2006,14(1):39-42.

[4] 郑雅敏.基于非连续频谱的短波传输技术研究[D].杭州:浙江大学,2014.

[5] 王晓娟,谭建龙,刘燕兵,等.基于自动机理论的PDF文本内容抽取[J].计算机应用,2012,32(9):2491-2495.

[6] 王鹏飞,杨和梅,丁俊松.利用Struts+iText在J2EE中实现PDF报表[J].现代电子技术,2006,29(22):46-48.

[7] 张英杰.快速批处理文件编辑系统的设计与实现[D].成都:电子科技大学,2012.

[8] Adobe.Acrobat XI SDK 10.1[EB/OL].[2014-12-01].http://www.adobe.com/devnet/acrobat/sdk/eula.html,2014.

[9] 郭津之,龙海,黄皓.Windows消息钩子的拦截和清除[J].计算机工程与设计,2009,30(18):4201-4206.

相关推荐

网站制作的流程是什么呢?简单大概的流程

关注我!了解更多网站建设的小干货~如今,随着网络时代的全面到来,网站在人们的生活和工作中发挥着极其重要的作用。网站制作的发展使更多的人加入了这个行业。如果你想掌握网站制作的知识,你可以在学校或网上学习...

一款谷歌(Google)打造的广告网页设计制作软件

GoogleWebDesigner是由谷歌(Google)打造的一款广告网页设计制作软件,它能够帮助从事于广告网页设计工作或是有这方面需求的用户更加有效快速的进行完成相关的行业设计工作,软件可以支...

普通网站如何制作一个网站?

对行外人来讲,在预备做一个网站项目时,最想了解的无非就是网站制作的悉数流程。网站制作是要有计划的,事先策划好才能更快更好的完成。网站的几个基本组成元素:域名+空间+程序+模板+维护经验+日常管理.网站...

用纯Python就能写一个漂亮的网页,再见HTML

再见HTML!用纯Python就能写一个漂亮的网页我们在写一个网站或者一个网页界面的时候,需要学习很多东西,对小白来说很困难!比如我要做一个简单的网页交互:天啊,听听头都大呢!其实我就给老板做一个...

HTML表单4(form的action、method属性)——零基础自学网页制作

表单的工作过程表单的信息发送与处理过程可以简单的进行图示,如下图。以注册会员为例,用户在自己的电脑上打开相应的注册表单页面填写信息,完成填写后点击提交按钮,也就是图中1所示过程。这时浏览器会将这些信息...

官网网站设计网页制作模板建站前端自适应响应式网站仿站门户

案例背景航科慧联无人机搜索雷达能够在多种天气下检测到无人机的入侵、并获得目标的距离、方向和高度等具体信息,是无人机反制作战中的关键设备。航科慧联无人机搜索雷达能够在多种天气下检测到无人机的入侵、并获得...

软网推荐:在线制作软件图标

在制作PPT演示、软件、网页或其他程序时,我们往往需要用到一些个性化的图标。现在,即便是不安装任何软件,也可以上网在线制作自己需要的图标。首先访问如下制作网址:http://www.rw-design...

自定义跳转的h5网页如何制作?

文章来源:墨鹊微站...

网页如何制作?这几点要知道

这是一个个性张扬的时代,也是一个动手能力和动脑能力都比较强的时代,因此很多人对于能够自己动手完成的东西,都不太想假手于人。于是网页制作成了各大搜索引擎里面排名比较靠前的关键词之一。想要知道网页如何制作...

手机端网站简单制作教程,怎么快速制作一个移动端的网站

想要创建一个手机端的网站,需要有域名、已经完成网站页面的开发设计,零基础朋友不懂代码技术,直接在线套用乔拓云里面的网站模板来开发是比较简单可行的,进入乔拓云网,复制网站模板编辑网站的内容,注册域名后绑...

几张动图教你轻松了解Dreamweaver做网页

施老师:当今可是互联网时代,人们的生活、社交离不开互联网,那么不管你是网页设计师,还是销售达人,还是个体户,总必不可少的要在网上呈现一些页面给客户看,这个就是让你做网页,而Dreamweaver是做网...

用Deepseek制作网页版的汉诺塔游戏保姆级教程

在deepseek中输入:“帮我做一个网页版的汉诺塔演示游戏,游戏包含2层、3层、4层、5层的汉诺塔游戏演示,制作自动求解演示按钮,点击按钮就可以生成出步数,同时自动演示最优解动画。”...

JS制作网页版计算器

大家晚上好,我是洁哥,抱歉今天有点晚了,但是洁哥不会缺席哦,今天我们来看一个JS实现网页版计算器的例题,先来看一看出来的效果吧(123+123=246)(123-123=0)(123*123=1512...

网页制作流程哪几步

在数字化时代,网页制作成为企业和个人展示形象、传递信息的重要方式。但是,许多人对于网页制作的流程仍感到困扰。为了解决这一问题,我们将深入探讨网页制作的关键步骤,助您更好地理解和应用这一过程。第一步:需...

这4个设计技巧,教你做好个人网页制作

随着互联网发展,个人建站已经不是什么稀奇事,学生、求职者、插画师、摄影师、作家……都可以制作个人网站,用来展示自身形象,或者吸引粉丝。那么如何做好个人网站呢?在不懂设计和技术知识的情况下,个人网页制作...

取消回复欢迎 发表评论: