H2p在很多人看来是个令人激动的方案,而且javaei网站提供h2p文件资源又是相当自然的一件事情,一想到h2p,我都很高兴,因为这个方案是我提出来的,尽管实现h2p的技术很成熟。在这篇文章里,说一下实现h2p所涉及到的技术吧,既有核心的j2se应用,又有开源框架的使用。
(1)dtd的应用,为了规范使用者正确的编辑h2p文件,我定义了h2p文件的dtd,当然我还有一个奢望,希望能成为一种规范。
(2)使用根据dtd校验xml(h2p文件),h2p-tool需要解析xml(h2p文件)提取url生成pdf并合并,不合法的xml文件肯定不能正确的生成pdf,所以必须对xml文件进行校验。
(3)xml解析,编辑h2p,用JTree展示xml的树形结构,这一部分用的是dom解析(具体的是JDom),获取书签的目录结构并构建书签的数据结构,这一部分用的是SAX解析,并借助于Stack。保存xml文件用的是dom。
(4)swing的应用,h2p-tool编辑功能用的是swing,展示并编辑树形结构用的是JTree
(5)C#组件,根据url生成单个的pdf,用的是c#组件,并在vs.net开发平台上进行了简单的开发。Javaei提供的h2p文件通常包含几十条url,单就每条url生成pdf也需要一点时间,何况是几十条,所以运用多线程是必须的方式,研究了一下c#的多线程(c#的多线程方式也很有意思,感觉比java的简单),可是别人的组件在多线程下表现欠佳,无赖之下,只好还是采用单线程。本想用jni把c#的调用封装起来,但经过研究,据说比较麻烦,就放弃了,所以采用简单的办法,用批处理来调用。
(6)iText的应用,生成单个pdf页面以及合并pdf生成书签用的是iText。在合并的时候,也研究过另一个框架就是pdfbox。IText确实强悍,理论上,应用iText可以实现任意效果的输出,应该可以实现浏览器的效果,但比较麻烦。iText在生成书签这一块,做得相当漂亮,书签可以指向任意一个页面的任意部分,还可以设置书签对应页面的打开效果,对书签的开发也很便利,直接构造书签的树形数据结构我认为是最简单的,iText还支持用xml描述书签的结构。
(7)Classloader的应用,h2p-tool的运行依赖于很多的jar包,通常我们开发的时候,都是把jar包放在指定的目录,应用服务器会去加载依赖的jar包。在h2p-tool中,需要自己处理jar包。因为这是提供给用户使用的工具,不应要求使用者去配置除了jdk环境变量以外的变量。所以解决jar包加载的问题通常的办法是在主类(带有main方法的类)所在jar包里的Manifest.mf文件里写上jar包的相对路径。这种办法不太灵活,所以在h2p-tool中,对类加载进行了改写,使其自动加载指定目录下的jar包。
(8)jvm参数的应用,因为要合并的pdf很多,再合并的时候会占用大量内存,很容易out of memery,所以在批处理文件里,需要配置适当的jvm参数,主要是两个:-Xmx512m -Xms512m,这两个参数的意义这里不再赘述,网上有很多的。
总结一下,实现h2p-tool的技术细节貌似很多,实则很少,除了JDOm和iText,再就是j2se核心的东西了,出列上面列到的,还包括流、字符集的处理等。H2p-tool及源代码下载。
分享到:
相关推荐
哈弗H2汽车使用手册用户说明书pdf电子版下载
h2数据库的pdf,希望可以对你有帮助,这个数据库主要是嵌入式用的
1、h2.pdf (H2 API) 2、h2-1.3.173.jar (截止2013-8-15最新的H2.jar) 3、h2-2013-07-28.zip (截止2013-8-15最新的H2服务,包括API\JAR\服务) 4、H2Database_SQL语法.doc 5、H2Database高级特性.doc 6、H2...
h2数据库pdf,非常详细
安装VS2003时找不到H2INC.ERR文件问题的解决方案
无-H2N系列驱动器-技术应用手册第2版a-PDF.pdf
资料不好找 需要的拿走 下载的时候用了几十积分 好气 啊 需要的拿走资料不好找 需要的拿走资料不好找 需要的拿走
H2数据库是一个开源的关系型数据库。H2是一个嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时支持网络版和嵌入式版本,有比较好的兼容性,支持相当标准的sql标准,支持集群。
The main features of H2 are: •Very fast, open source, JDBC API •Embedded and server modes; in-memory databases •Browser based Console application •Small footprint: around 1 MB jar file size
长城哈弗H2红标汽车使用手册用户操作说明书pdf电子版下载
NULL 博文链接:https://summeryhrb.iteye.com/blog/445296
H2U系列以太网通讯卡用户手册pdf,为使H2U-XP系列PLC实现以太网通讯功能,在H2U-XP系列PLC主模块上配置H2U-ENET-BD以太网通讯卡。安装之后,可支持PLC接入TCP/IP以太网,在应用层通过Modbus TCP进行数据交换。(主站...
OrangePi_zero_H2_用户手册_v0.1 香橙派Zero是一款开源的单板电脑,新一代的arm开发板,它可以运行Android4.4、Ubuntu、Debian等操作系统。香橙派Zero使用全志H2系统级芯片,同时拥有256MB/512MB DDR3 内存(256MB为...
《H2U-8A91G-XP空压机专用控制器用户手册》.pdf
springboot+h2+mybatisplus+swagger使用例子 h2数据库例子 H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一 个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容...
h2数据库引擎开发文档h2.pdf Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console...
HASSELBLAD哈苏H2使用说明书.pdf
远程控制H2U-PLC手册pdf,远程控制H2U-PLC手册
20210302-申万宏源-A股年度复盘系列之六:复盘2011H2,转型的代价.pdf
H2数据库是一个开源的关系型数据库。H2是一个嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时支持网络版和嵌入式版本,有比较好的兼容性,支持相当标准的sql标准,支持集群。