??xml version="1.0" encoding="utf-8" standalone="yes"?>
dq时候,H然萌生?jin)做一个自q|站的想法。有?jin)创意,很快p动v来了(jin)Q从设计到开发到域名构思到购买I间Q大U两周的旉Q网站的雏Ş׃U了(jin)。后来逐步完善Q融入了(jin)更多的想法。其实当时ƈ没有很多IZ旉来做q个|站Q只因一时兴P把所有其它的事情全放C边了(jin)。当时我除了(jin)工作外,正在准备两个重要的考试Q一个是pȝ分析师考试Q一个是报考哈工大的博士招生考试?/span>
Javaei|站核心(j)功能是收?/span>java开发领域最_֍的博克、讨论最热烈的话题,其内容还包括数据库开发?/span>web前端开发等内容Q每周更Cơ,后来q加入了(jin)各大|站的一些优U的序列连载博客;跟学生交过E中Q发?/span>hta很有意思,又把|站每周的内容做?/span>hta文gQ供讉K者下载;再后来,我觉得把博克内容转换?/span>pdf很有必要Q就提出?/span>H2PQ设计了(jin)H2P文g?/span>xml格式、写?jin)一个简单编?/span>H2P文g的工Pq且Ҏ(gu)H2P文gQ把|站每周的内容生成一个有目录?/span>pdf?sh)子书,q种方式比某些网站推出的?sh)子书生成功能先q的多,同时Q还设计?/span>xsl?/span>H2P文g解析成树(wi)形结构的形式Qɾ|站可以以左Ҏ(gu)(wi)形目录右Ҏ(gu)C正文的形式览。后来接受网友的Qؓ(f)|站增加?/span>RSS订阅功能?/span>
|站的推q工作也做了(jin)一些,主要是做?jin)一些简单的SEO、写一些文章、和其它|站交换链接。在q里Q向和我交换链接的网站表C?j)的感谢。也曄想以邮g的方式推q,从各学生那里要来?jin)他们所在公司员工的emailQ但是这U大扚w的群发邮件必购C门的邮g服务才可以,所以邮件推q的方式放弃了(jin)。ؓ(f)?jin)推q我?/span>H2PQ向各大|站发vq倡议Q希望有更多的网站支?/span>H2PQ但回复者寥寥。我?/span>H2P做了(jin)单的整理Q向各开源网站提交,希望有更多的人来一起完?/span>H2PQ但是由于我自己_֊有限Q没有时间作后箋跟进?/span>
在系l分析师考试的前一周,|站的更新暂停了(jin)下来Q必Mؓ(f)考试做准备了(jin)。幸q的是,后来pȝ分析师通过?jin),但这个证书对我已l没有意义了(jin)。网站最后一ơ更新是2009q?/span>9?/span>12?/span>Q博士招生考试的时间已l(f)q,我必d力以赴的复习(fn)?jin),q是很幸q,我现在已l在上博?jin),|站依然没有旉更新Q而且现在正在忙着准备参加今年?/span>blog track评测Q网站的更新完全停下?jin)?/span>
|站域名和空间用期限马上就C(jin)Q写q篇短文U念我的|站Qƈ希望有h能接手这个网站,把我前段旉的工作gl下厅R?/span>
关于|站的介l请参考我的序列文章——徏站手记?br />
我的联系方式qqQ?/span>38295305Q?/span>emalQ?/span>yangjinfeng2010@gmail.com
H2p是一U?/span>Ҏ(gu)扚wURL生成一个有书签?/span>pdf文档的解x案?/span>H2p主要包括两部分:(x)h2p-file?/span>h2p-tool?/span>h2p-file是一?/span>xml文gQ该xml文g主要描述url的信息和url的层ơ结构,h2p-toolҎ(gu)h2p-file生成有书{pdf文档。还可以通过xsl直接展示url的层ơ结构,而且合作|站?/span>h2p的支持也变得简单?/span>
H2p是一U?/span>Ҏ(gu)扚wURL生成一个有书签?/span>pdf文档的解x案?/span>H2p主要包括两部分:(x)h2p-file?/span>h2p-tool?/span>h2p-file是一?/span>xml文gQ该xml文g主要描述url的信息和url的层ơ结构,h2p-toolҎ(gu)h2p-file生成有书{pdf文档。还可以通过xsl直接展示url的层ơ结构,而且合作|站?/span>h2p的支持也变得简单?/span>
但由于站长自w的技术局限性,而且站长本h_֊有限Q所以希望有?/span>javaei感兴的同仁能加盟?/span>
在Y件开发技术蓬勃发展的今天Q?/span>JavaEI不局限于JavaQ希望向其他技术领域(C++?/span>ruby?/span>python?/span>scala{等Q发展,
Z(jin)JavaEI的进一步发展和壮大Q诚邀(g)Ҏ(gu)目标感兴的同仁Q一h发展JavaEI。对h2p感兴的同仁Q也Ƣ迎与我们联p,
我们的联pL式是Q?/span>
QQQ?/span> |
1027816029 |
EmailQ?/span> |
javaei@163.com |
各网站管理员Q?/span>
我是javaei|站的管理员Q近D|_(d)我站提出h2p概念Qƈ推出h2p应用?/span>h2p?/span>html to pdf的意思,具体地说是根据批?/span>URL生成一个有书签?/span>pdf文档的解x案,该方案是一个完整的解决Ҏ(gu)。我觉得h2p是互联网应用的一U创斎ͼ值得推广Q经q调查,得到不少人的认可。但?/span>javaei|站的媄(jing)响力有限Q推q力度不够,Z(jin)能让h2p被大家认可ƈ得到推广Q特向各位发起倡议Q一h完善q推q这U应用,当然首先要得到各位的认可?/span>H2p在技术上微不道Q重要意义体现在应用模式上。就?/span>Rss一Prss本n技术上没什么可说的Q但应用模式上意义重大,rss从提出到被接受,也是l过?jin)曲折的历程。我U下里希望,h2p也能?/span>rss那样Q被qؓ(f)接受Q最l成ZU大家接受的应用模式而确立下来,更重要的是,q是中国的程序员发vq推q的Q这l对是零的突破?/span>
下面从三个方面来展开Q?/span>h2p具体介绍Qؓ(f)什么要推广h2pQ?/span>h2p完善和推q?br />
一?/span>H2P具体介绍
H2P?/span>javaei|站发展的结果?/span>H2P包括两个部分Q?/span>h2p-file?/span>h2p-tool?/span>h2p-file其实?/span>xml文gQ用来描q批量的URLQ主要描qC个信息,url的先后顺序和层次l构Q用于处理书{)(j)?/span>h2p-tool是一个客L(fng)工具Q用途目前主要有三个Q根?/span>dtd校验h2p-file的合法性、编?/span>h2p-file和根?/span>h2p-file生成有书{pdf文档?/span>
Q?/span>1Q?/span>h2p-file
在目前的Ҏ(gu)?/span>h2p-file包括两个xml文gQ?/span>href.h2p.xml?/span>outline.h2p.xml?/span>
href.h2p.xmlCZ如下
q个xml很简单,之所以这hqͼ是因?/span>URL通常?x)?/span>&而这个符号不能出现在xml里,而且作ؓ(f)属性的|q不能用<![CDATA[]]>Q所以就作ؓ(f)一个节点了(jin)?/span>
h2p-toolҎ(gu)q个xml生成的每?/span>pdf文gQ?/span>pdf文g的名字取id的|后缀?/span>pdf?/span>
outline.h2p.xmlCZ如下
q个xml描述?jin)每?/span>pdf合ƈ的顺序,href的值和上一?/span>xml?/span>id值对应,chapter标签嵌套的层ơ就是书{层次Q?/span>name的值就是书{名称?/span>H2p-toolҎ(gu)q个xml把每?/span>pdf合ƈ成一?/span>pdfQƈ生成书签?/span>
考虑?/span>h2p的发展,完全有理由把q两?/span>xml文g合ƈ成一?/span>xml文gQ可以定义成如下格式Q?/span>
对应?/span>dtd可以定义如下
在这个方案当中,h2p-fileh十分重要的意义,它作ZU资源被提供下蝲Q也可以在线使用Q?/span>h2p-file的格式作ZU协议,可以被各大网站支持,
Q?/span>2Q?/span>h2p-tool
h2p-tool是处?/span>h2p-file的客L(fng)工具Q目?/span>h2p-tool的功能主要有以下三个斚w
Ҏ(gu)dtd校验h2p-file的合法性,
~辑h2p-file~辑功能包括新徏、修攏V保存,
Ҏ(gu)h2p-file生成有书{pdf文档Q先Ҏ(gu)?/span>
目前h2p-tool一部分是用C#开发的Q一部分是用Java开发的。不?/span>h2p-tool用什么开发,通过什么方式用(在线或离U的Q,只要能处?/span>h2p-file卛_?/span>
h2p-tool的功能还可以有如下扩充:(x)
合ƈh2p-fileQ解?/span>h2p-file在线阅读Q这一点类ggoogle readerQ,也可以不需?/span>h2p-toolQ直接用xsl展示h2p-file?/span>
下图?/span>h2p生成pdf的一个示例?/span>二、ؓ(f)什么要推广H2P
其实是要回{?/span>h2p有什么h(hun)倹{自从有?/span>h2p构想以来Q我一直在思考这个问题?/span>
从以下几个方面说明我的思考:(x)
(1)各大|站已经U篏?jin)丰富的资料Q随着pdf的风行,导出pdf是很多用L(fng)需求,提供pdf导出功能的网站还不多Q实际上技术已很成熟,原因在于没有很好的模式。导?/span>pdf是个性需求,|站无法知道用户需要把哪些导出?/span>pdfQ而且在服务器端生?/span>pdfQ不仅会(x)增加服务器端压力。而且?x)增加管理员工作量。而如果网站只是提?/span>h2p-file下蝲Q由用户利用W三方工P也即h2p-toolQ自行编?/span>h2p-fileQ自行生?/span>pdfQ上面的问题p决了(jin)Q?strong>服务器端压力没有?/strong>Q只需生成h2p-fileQ用户可以根据自q需要对h2p-fileq行~辑Q?strong>生成pdf既满了(jin)个性需?/span>Q同?strong>把生?/strong>pdf的压力{UM(jin)用户Q这点小压力对单个用h可以接受的?/span>
Q?/span>2Q?strong>如果|站x?/strong>pdf导出的话Q那么只需提供h2p-fileQ就?/span>rss一P|站要提供订阅功能,只需提供rssp
Q?/span>3Q网站可以根据用L(fng)h动态的生成h2p-fileQ从?strong>间接的实现根据请求动态生?/strong>pdf的功?/span>Q这一Ҏ(gu)义非凡?/span>
Q?/span>4Q网站提?/span>h2p-fileQ会(x)D对网站内容的整理和挖?/strong>Q从而促(j)q站内智能搜索的应用?/span>
Q?/span>5Q满了(jin)用户的便P是赢利的开始。关于盈利,在网站广告投放这斚w一炚w不会(x)受媄(jing)响,pdf强的表现力_以完的表现q告效果Q在h2p-file里可以适当放一些广告链接,同时Q?/span>h2p-tool上也可以投放q告Q?/span>h2p-tool在生?/span>pdf的时候也能再适当位置加入q告?strong>把广告固化到pdf文g?/span>Q这U方式比在浏览器里显C的q告生命周期要长得多Q因?/span>pdf是只ȝ?/span>
Q?/span>6Q最后一点,是意义上的而非价g的,那就是如?/span>h2p推广开?jin),被h们接受了(jin)Q那?strong>q将是第一个由中国的程序员发vq推q的一个协议,一个互联网应用模式?/span>Bbs?/span>blog?/span>wiki?/span>twitter?/span>rss{等Q耳熟能详的东西,有技术含量吗Q真正有价值的是这些应用模式,正是q些应用模式推动着互联|的飞速发展。而搜索引擎却集优U的应用模式和先进的理论思想与技术于一w?/span>
Q?/span>7Q有可能带来其他斚w的媄(jing)响,比如|站内容的提炼和聚合?/span>
三?/span>H2P完善和推q?/span>
H2P刚刚产生Q是个雏儿,管核心(j)思想已经体现出来?jin),但在形式上和应用上还有需要大q度的完善。可从以下几个方面展开Q?/span>
Q?/span>1Q齐?j)协力共同制定和完?/span>h2p-file的格式,?/span>h2p应用更加便捷和丰富?/span>h2p-file可以分成两个文g独立描述Q也可以合ؓ(f)一个,前面已经阐述?jin)?/span>
Q?/span>2Q确定了(jin)h2p-file的格式,q一步完善和重新开?/span>h2p-toolQ?/span>h2p-tool可以有三个方向,一个方向就是目前的方向Q开发一个客L(fng)工具Qƈ且用浏览器的内核,把浏览器的功能集成进来,?/span>java开发方面已l有?/span>JDICq么一个框架了(jin)Q第二个方向是cMgoogle reader的方向,在线解析h2p-fileQ以?wi)Şl构昄q接Q提供在U的便捷阅读Q第三个方向采取最单的方式Q直接用xsl昄h2p-file?/span>
Q?/span>3Q博克文章、论坛帖子一般至有三分之一的内Ҏ(gu)q告或图片,直接Ҏ(gu)URL生成?/span>pdf显得很臃肿Q这是这个方案的~陷Q解册个问题最单的思\是|站针对h2p应用再提供一?/span>URLQ根据这?/span>URL得到的内容主要是文字形式的内容,之所以说它简单,是因为现在的界面的输出大多采用的模板技术,在模板上E作变动Q就可以输出没有太多q告和图片的内容。但考虑到网站需要投攑ֹ告,可以允许有少量广告,从而就产生?/span>h2p-file质量q个概念Q图片越广告越,那么生成?/span>pdfpq净体积p,h2p-file质量p高;反之Q生成的pdf像现在的报U怸P实质内容Ҏ(gu)在广告里而且体积q很大,h2p-file质量p低?/span>
Q?/span>4Q如果上面的思\得到?jin)采UI那么Ҏ(gu)一?/span>URL生成单个pdf 的技术就能很好的解决。目前的h2p-tool在这一部分的开发用的是一?/span>C#lgQ生成的pdf有水华ͼ我估计这个组件是调用?/span>IE览器的功能Q。之所以采用这个组Ӟ是因保证生成?/span>pdf展现效果和浏览器里的效果完全相同Q这无异于做一个浏览器Q难度可惌知。如果专门ؓ(f)h2p应用再提供一?/span>URLQ根据这?/span>URL得到的内容主要是文字形式的内容,没有复杂的标{֒样式Q这U情况下Q?/span>iText{框架生?/span>pdf是可行的?/span>Javaeye|站提供?/span>pdf下蝲和电(sh)字书制作得到?/span>pdf是q种情况Q提取博克文章的M内容生成pdf?/span>
Q?/span>5Q各|站?/span>h2p的支持很单,只需发布|站内容?/span>h2p-file卛_Q?/span>h2p-file从此׃协议或资源的w䆾出现在互联网中?/span>
以上三方面的内容分别阐述?/span>h2p应用模式?/span>h2p的意义和价值和h2p完善和发展的方向Q回{了(jin)Z么要发vq个h2p倡议。敬请各|站理员考虑我的意见Q推动这个新?/span>h2p应用Q不仅会(x)各网站带来新的赢利,而且q将是我们这些中国程序员的集体荣耀?br />
2009-8-7
Javaei|站
相关介绍Q?br />
投票——你认ؓ(f)h2p实用?/a>
Q?/span>1Q?/span>dtd的应用,Z(jin)规范使用者正的~辑h2p文gQ我定义?/span>h2p文g?/span>dtdQ当然我q有一个奢望,希望能成ZU规范?/span>
Q?/span>2Q用根?/span>dtd校验xmlQ?/span>h2p文gQ,h2p-tool需要解?/span>xmlQ?/span>h2p文gQ提?/span>url生成pdfq合qӞ不合法的xml文g肯定不能正确的生?/span>pdfQ所以必dxml文gq行校验?/span>
Q?/span>3Q?/span>xml解析Q编?/span>h2pQ用JTree展示xml的树(wi)形结构,q一部分用的?/span>dom解析Q具体的?/span>JDomQ,获取书签的目录结构ƈ构徏书签的数据结构,q一部分用的?/span>SAX解析Qƈ借助?/span>Stack。保?/span>xml文g用的?/span>dom?/span>
Q?/span>4Q?/span>swing的应用,h2p-tool~辑功能用的?/span>swingQ展Cƈ~辑?wi)Şl构用的?/span>JTree
Q?/span>5Q?/span>C#lgQ根?/span>url生成单个?/span>pdfQ用的是c#lgQƈ?/span>vs.net开发^Cq行?jin)简单的开发?/span>Javaei提供?/span>h2p文g通常包含几十?/span>urlQ单每?/span>url生成pdf也需要一Ҏ(gu)_(d)何况是几十条Q所以运用多U程是必ȝ方式Q研I了(jin)一?/span>c#的多U程Q?/span>c#的多U程方式也很有意思,感觉?/span>java的简单)(j)Q可是别人的lg在多U程下表现欠佻I无赖之下Q只好还是采用单U程。本想用jni?/span>c#的调用封装v来,但经q研IӞ据说比较ȝ(ch)Q就攑ּ?jin),所以采用简单的办法Q用批处理来调用?/span>
Q?/span>6Q?/span>iText的应用,生成单个pdf面以及(qing)合ƈpdf生成书签用的?/span>iText。在合ƈ的时候,也研I过另一个框架就?/span>pdfbox?/span>IText实强?zhn)Q理ZQ应?/span>iText可以实现L效果的输出,应该可以实现览器的效果Q但比较ȝ(ch)?/span>iText在生成书{这一块,做得相当漂亮Q书{֏以指向Q意一个页面的L部分Q还可以讄书签对应面的打开效果Q对书签的开发也很便利,直接构造书{?wi)Ş数据l构我认为是最单的Q?/span>iTextq支持用xml描述书签的结构?/span>
Q?/span>7Q?/span>Classloader的应用,h2p-tool的运行依赖于很多?/span>jar包,通常我们开发的时候,都是?/span>jar包放在指定的目录Q应用服务器?x)去加蝲依赖?/span>jar包。在h2p-tool中,需要自己处?/span>jar包。因是提供给用户使用的工P不应要求使用者去配置除了(jin)jdk环境变量以外的变量。所以解?/span>jar包加载的问题通常的办法是在主c(带有mainҎ(gu)的类Q所?/span>jar包里?/span>Manifest.mf文g里写?/span>jar包的相对路径。这U办法不太灵z,所以在h2p-tool中,对类加蝲q行?jin)改写,使其自动加蝲指定目录下?/span>jar包?/span>
Q?/span>8Q?/span>jvm参数的应用,因ؓ(f)要合q的pdf很多Q再合ƈ的时候会(x)占用大量内存Q很Ҏ(gu)out of memeryQ所以在批处理文仉Q需要配|适当?/span>jvm参数Q主要是两个Q?/span>-Xmx512m -Xms512mQ这两个参数的意义这里不再赘qͼ|上有很多的?/span>
ȝ一下,实现h2p-tool的技术细节貌似很多,实则很少Q除?/span>JDOm?/span>iTextQ再是j2se核心(j)的东西了(jin)Q出列上面列到的Q还包括、字W集的处理等?/span>H2p-tool?qing)源代码下蝲?/span>Q?/span>1Q详l描qC(jin)解决Ҏ(gu)的思\Q?/span>
Q?/span>2Q提Z(jin)一U描q?/span>URL?/span>xml文gQ称之ؓ(f)h2p文g
Q?/span>3Q根?/span>h2p文g生成pdf文档的工L(fng)?/span>h2p-toolQ同?/span>h2p-toolq能?/span>h2p文gq行~辑Q从而制作自qpdf?sh)子书?/span>
Q?/span>4Q?/span>h2p文g是该解决Ҏ(gu)的资源文Ӟ攉url是gҎ(gu)费力的事情,所以该解决Ҏ(gu)q提供了(jin)下蝲h2p文g的链?/span>
H2p是我自己定义的一U?/span>xml格式Q我U下里是希望q种格式能够被大家接受,所以我定义?/span>dtdQƈ且开发了(jin)一个编?/span>h2p文g的工?/span>h2p-toolQ而且?/span>javaei|站上提供了(jin)大量?/span>h2p文g作ؓ(f)资源下蝲。有?/span>h2pQ制作自qpdf?sh)子书将变得很容易?/span>
如果惌h2p为大家所接受Q?/span>h2p必须不断的发展。因为现?/span>h2p应用q是很简单很原始。主要表现在Q生成的pdf是原html的完全再玎ͼq是他的优点也是他的q?/span>
说是优点Q是因ؓ(f)pdf的呈现效果和在浏览器里风g栗?/span>
说是~点Q是因ؓ(f)既然生成?/span>pdfQ我们希?/span>pdf里主要突出文章的主题内容Q而不希望有原来网里的那么多的图片和q告Q而且q希望原来是分页的内容自动合q到一?/span>pdf里?/span>
所以,此~点Q我提出两个可能的展望?/span>
Q?/span>1Q制定一U规范,该规范要求网站ؓ(f)每篇博客提供一个ؓ(f)h2p专用的链接(姑且?/span>h2p链接吧)(j)Q根据这个链接打开的博客文章是没有q告的,那么h2p文g的连接采用这U?/span>h2p链接Q生成的pdf没有上q的~点?jin)。这个想法可能与|站的盈利相(zhn),因ؓ(f)如果提供h2p链接Q很多h会(x)之点?/span>h2p链接Q这P避开?jin)网站投攄q告?/span>
Q?/span>2Q第二种可能的展望就是,各网站提供一?/span>webservice的编E接口,通过该编E接口,用程序访问每博客文章,q样得到的文章就是没有广告的q净的文章?/span>
q两U展望的目的主要是ؓ(f)?jin)生成干净?/span>pdf文档Q显?dng)要实现这两个展望是很困难的,除非大家都很接?/span>h2pq个思\Qƈ且对q种应用很迫切,才会(x)有h来大力推动。想?/span>rss的普?qing),那也是一波三折,最l还是因为其便捷的用模式而被大家所接受?/span>
U下里是希望大家能接受ƈ喜欢h2p的?/span>