Javaei网站建设至今,已经汇编了大量的优秀资源,这些资源以URL的形式呈现给大家,怎么对这些资源进行更好的利用是我一直思考的问题,比如以前推出的hta下载,hta的确是小巧、美观而又便捷,但是hta仍然只是以另一种形式展现了URL,并没有展现URL对应的实际资源,也就是URL对应的文章。按照这个思路,下一步要做的就是给大家提供真实的资源。
思路就是,根据URL,访问URL对应的资源,生成对应资源的文档。生成的文档的展现效果要和在浏览器里的效果一致,这就要求这个文档格式要有丰富的表现能力,自然就想到了现在流行的pdf格式。所以第一步就是要根据请求的URL得到的html生成pdf文档,这是可行的。
Javaei每周的URL都有几十条,生成几十个pdf文档是不好的,应该是生成一个合并的pdf,几十篇文章合并在一个pdf里,合并的时候是有顺序的,而且必须要有书签,所以,在生成pdf 的同时,必须要生成书签,而且书签是允许有层次的,这可借助于iText来实现。由于有合并顺序和书签这两个需求,所以需要对URL进行一定的表示,表示出合并的顺序和书签的属性结构, 自然就想到了用xml表示,然后开发一个工具对该xml文件进行处理,从而生成合并的有书签的pdf。
生成pdf的思路有了,那么javaei网站直接提供pdf下载吗?我感觉有可能会发生侵权,这不是好的方式。经过权衡,决定采取的方式是,提供工具和xml文件的下载,把该工具称为h2p-tool,把该xml文件称为h2p文件,由用户下载后自行用h2p-tool工具对h2p文件进行处理生成pdf,这样javaei网站就不会牵涉到侵权的问题了。同时,用户还应该可以利用h2p-tool对h2p文件进行编辑或构造自己的h2p文件。我感觉这有可能会产生一种新的互联网应用模式,如果h2p文件的格式成为一种固定的协议,h2p文件成为一种资源的话,各网站都支持h2p文件下载,h2p-tool由第三方开发,那么这将是第二个RSS了。
H2p-tool的开发费了些周折,主要是根据单个URL生成pdf这一部分采用的是别人的C#组件,网上虽然有很多介绍html生成pdf的文章,但我认为,肯定行不通,因为要达到pdf展现的效果和浏览器的效果完全相同,这无异于做个浏览器,输出一些简单的格式到pdf倒是可行的。本来可以用这个c#组件完成所有的开发,还是愿意用java完成剩下的工作,实在搞不定的才借助其他的手段。
H2p的初步方案实现了,初步效果觉得很满意。下图是利用h2p解决方案生成的pdf的示例。
有关h2p的文章: