Subject: H2P倡議——一種新的互聯(lián)網(wǎng)應(yīng)用模式(帶附件和示例圖片)
各網(wǎng)站管理員:
我是javaei網(wǎng)站的管理員,近段時(shí)間,我站提出h2p概念,并推出h2p應(yīng)用。h2p是html to pdf的意思,具體地說(shuō)是根據(jù)批量URL生成一個(gè)有書簽的pdf文檔的解決方案,該方案是一個(gè)完整的解決方案。我覺(jué)得h2p是互聯(lián)網(wǎng)應(yīng)用的一種創(chuàng)新,值得推廣,經(jīng)過(guò)調(diào)查,得到不少人的認(rèn)可。但是javaei網(wǎng)站的影響力有限,推廣力度不夠,為了能讓h2p被大家認(rèn)可并得到推廣,特向各位發(fā)起倡議,一起來(lái)完善并推廣這種應(yīng)用,當(dāng)然首先要得到各位的認(rèn)可。H2p在技術(shù)上微不足道,重要意義體現(xiàn)在應(yīng)用模式上。就像Rss一樣,rss本身技術(shù)上沒(méi)什么可說(shuō)的,但應(yīng)用模式上意義重大,rss從提出到被接受,也是經(jīng)過(guò)了曲折的歷程。我私下里希望,h2p也能像rss那樣,被廣為接受,最終成為一種大家接受的應(yīng)用模式而確立下來(lái),更重要的是,這是中國(guó)的程序員發(fā)起并推廣的,這絕對(duì)是零的突破。
下面從三個(gè)方面來(lái)展開(kāi):h2p具體介紹,為什么要推廣h2p,h2p完善和推廣
一、H2P具體介紹
H2P是javaei網(wǎng)站發(fā)展的結(jié)果。H2P包括兩個(gè)部分:h2p-file和h2p-tool。h2p-file其實(shí)是xml文件,用來(lái)描述批量的URL,主要描述兩個(gè)信息,url的先后順序和層次結(jié)構(gòu)(用于處理書簽)。h2p-tool是一個(gè)客戶端工具,用途目前主要有三個(gè),根據(jù)dtd校驗(yàn)h2p-file的合法性、編輯h2p-file和根據(jù)h2p-file生成有書簽的pdf文檔。
(1)h2p-file
在目前的方案中h2p-file包括兩個(gè)xml文件,href.h2p.xml和outline.h2p.xml。
href.h2p.xml示例如下
1 <href-info>
2 <href id="KxgYaRxG">
3 <value><![CDATA[http;//www.163.com]]></value>
4 </href>
5 <href id="53Bw5A32">
6 <value><![CDATA[http://www.sohu.com]]></value>
7 </href>
8 <href id="eyEis6ra">
9 <value><![CDATA[http;//news.163.com]]></value>
10 </href>
11 <href id="DMQoSN2t">
12 <value><![CDATA[http;//sports.163.com]]></value>
13 </href>
14 <href id="5vaf3LN7">
15 <value><![CDATA[http://news.sohu.com]]></value>
16 </href>
17 </href-info>
18
這個(gè)xml很簡(jiǎn)單,之所以這樣描述,是因?yàn)?/span>URL通常會(huì)有&而這個(gè)符號(hào)不能出現(xiàn)在xml里,而且作為屬性的值,還不能用<![CDATA[]]>,所以就作為一個(gè)節(jié)點(diǎn)了。
h2p-tool根據(jù)這個(gè)xml生成的每個(gè)pdf文件,pdf文件的名字取id的值,后綴為pdf。
outline.h2p.xml示例如下
1 <book name="我的PDF書">
2 <chapter name="163" href="KxgYaRxG">
3 <chapter name="163新聞" href="eyEis6ra" />
4 <chapter name="163體育" href="DMQoSN2t" />
5 </chapter>
6 <chapter name="sohu" href="53Bw5A32">
7 <chapter name="sohu新聞" href="5vaf3LN7" />
8 </chapter>
9 </book>
10
這個(gè)xml描述了每個(gè)pdf合并的順序,href的值和上一個(gè)xml的id值對(duì)應(yīng),chapter標(biāo)簽嵌套的層次就是書簽的層次,name的值就是書簽的名稱。H2p-tool根據(jù)這個(gè)xml把每個(gè)pdf合并成一個(gè)pdf,并生成書簽。
考慮到h2p的發(fā)展,完全有理由把這兩個(gè)xml文件合并成一個(gè)xml文件,可以定義成如下格式:
1 <book name="我的PDF書">
2 <chapter name="163">
3 <href><![CDATA[http://www.163.com]]></href>
4 <chapter name="163新聞">
5 <href><![CDATA[http://news.163.com]]></href>
6 </chapter>
7 <chapter name="163體育">
8 <href><![CDATA[http://sports.163.com]]></href>
9 </chapter>
10 </chapter>
11 <chapter name="sohu">
12 <href><![CDATA[http://www.sohu.com]]></href>
13 <chapter name="sohu新聞">
14 <href><![CDATA[http://news.sohu.com]]></href>
15 </chapter>
16 </chapter>
17 </book>
18
對(duì)應(yīng)的dtd可以定義如下
1 <!ELEMENT book (chapter+)>
2 <!ATTLIST book name CDATA #REQUIRED>
3 <!ELEMENT chapter (chapter*)>
4 <!ATTLIST chapter name CDATA #REQUIRED>
5 <!ATTLIST chapter href CDATA #IMPLIED>
6
在這個(gè)方案當(dāng)中,h2p-file具有十分重要的意義,它作為一種資源被提供下載,也可以在線使用,h2p-file的格式作為一種協(xié)議,可以被各大網(wǎng)站支持,
(2)h2p-tool
h2p-tool是處理h2p-file的客戶端工具,目前h2p-tool的功能主要有以下三個(gè)方面
根據(jù)dtd校驗(yàn)h2p-file的合法性,
編輯h2p-file編輯功能包括新建、修改、保存,
根據(jù)h2p-file生成有書簽的pdf文檔,先根據(jù)。
目前h2p-tool一部分是用C#開(kāi)發(fā)的,一部分是用Java開(kāi)發(fā)的。不管h2p-tool用什么開(kāi)發(fā),通過(guò)什么方式使用(在線或離線的),只要能處理h2p-file即可。
h2p-tool的功能還可以有如下擴(kuò)充:
合并h2p-file,解析h2p-file在線閱讀(這一點(diǎn)類似于google reader),也可以不需要h2p-tool,直接用xsl展示h2p-file。
下圖是h2p生成pdf的一個(gè)示例。
二、為什么要推廣H2P
其實(shí)就是要回答h2p有什么價(jià)值。自從有了h2p構(gòu)想以來(lái),我一直在思考這個(gè)問(wèn)題。
從以下幾個(gè)方面說(shuō)明我的思考:
(1)各大網(wǎng)站已經(jīng)積累了豐富的資料,隨著pdf的風(fēng)行,導(dǎo)出pdf是很多用戶的需求,提供pdf導(dǎo)出功能的網(wǎng)站還不多,實(shí)際上技術(shù)已很成熟,原因在于沒(méi)有很好的模式。導(dǎo)出pdf是個(gè)性需求,網(wǎng)站無(wú)法知道用戶需要把哪些導(dǎo)出成pdf,而且在服務(wù)器端生成pdf,不僅會(huì)增加服務(wù)器端壓力。而且會(huì)增加管理員工作量。而如果網(wǎng)站只是提供h2p-file下載,由用戶利用第三方工具(也即h2p-tool)自行編輯h2p-file,自行生成pdf,上面的問(wèn)題就解決了,服務(wù)器端壓力沒(méi)有了,只需生成h2p-file,用戶可以根據(jù)自己的需要對(duì)h2p-file進(jìn)行編輯,生成pdf既滿足了個(gè)性需求,同時(shí)把生成pdf的壓力轉(zhuǎn)移了用戶,這點(diǎn)小壓力對(duì)單個(gè)用戶是可以接受的。
(2)如果網(wǎng)站想支持pdf導(dǎo)出的話,那么只需提供h2p-file,就像rss一樣,網(wǎng)站要提供訂閱功能,只需提供rss就行
(3)網(wǎng)站可以根據(jù)用戶的請(qǐng)求動(dòng)態(tài)的生成h2p-file,從而間接的實(shí)現(xiàn)根據(jù)請(qǐng)求動(dòng)態(tài)生成pdf的功能,這一點(diǎn)意義非凡。
(4)網(wǎng)站提供h2p-file,會(huì)導(dǎo)致對(duì)網(wǎng)站內(nèi)容的整理和挖掘,從而促進(jìn)站內(nèi)智能搜索的應(yīng)用。
(5)滿足了用戶的便捷,就是贏利的開(kāi)始。關(guān)于盈利,在網(wǎng)站廣告投放這方面一點(diǎn)都不會(huì)受影響,pdf超強(qiáng)的表現(xiàn)力足可以完美的表現(xiàn)廣告效果,在h2p-file里可以適當(dāng)放一些廣告鏈接,同時(shí),h2p-tool上也可以投放廣告,h2p-tool在生成pdf的時(shí)候也能再適當(dāng)位置加入廣告。把廣告固化到pdf文件里,這種方式比在瀏覽器里顯示的廣告生命周期要長(zhǎng)得多,因?yàn)?/span>pdf是只讀的。
(6)最后一點(diǎn),是意義上的而非價(jià)值上的,那就是如果h2p推廣開(kāi)了,被人們接受了,那么這將是第一個(gè)由中國(guó)的程序員發(fā)起并推廣的一個(gè)協(xié)議,一個(gè)互聯(lián)網(wǎng)應(yīng)用模式。Bbs、blog、wiki、twitter、rss等等,耳熟能詳?shù)臇|西,有技術(shù)含量嗎?真正有價(jià)值的是這些應(yīng)用模式,正是這些應(yīng)用模式推動(dòng)著互聯(lián)網(wǎng)的飛速發(fā)展。而搜索引擎卻集優(yōu)秀的應(yīng)用模式和先進(jìn)的理論思想與技術(shù)于一身。
(7)有可能帶來(lái)其他方面的影響,比如網(wǎng)站內(nèi)容的提煉和聚合。
三、H2P完善和推廣
H2P剛剛產(chǎn)生,是個(gè)雛兒,盡管核心思想已經(jīng)體現(xiàn)出來(lái)了,但在形式上和應(yīng)用上還有需要大幅度的完善。可從以下幾個(gè)方面展開(kāi):
(1)齊心協(xié)力共同制定和完善h2p-file的格式,使h2p應(yīng)用更加便捷和豐富。h2p-file可以分成兩個(gè)文件獨(dú)立描述,也可以合為一個(gè),前面已經(jīng)闡述了。
(2)確定了h2p-file的格式,進(jìn)一步完善和重新開(kāi)發(fā)h2p-tool,h2p-tool可以有三個(gè)方向,一個(gè)方向就是目前的方向,開(kāi)發(fā)一個(gè)客戶端工具,并且使用瀏覽器的內(nèi)核,把瀏覽器的功能集成進(jìn)來(lái),在java開(kāi)發(fā)方面已經(jīng)有了JDIC這么一個(gè)框架了;第二個(gè)方向就是類似google reader的方向,在線解析h2p-file,以樹(shù)形結(jié)構(gòu)顯示連接,提供在線的便捷閱讀;第三個(gè)方向采取最簡(jiǎn)單的方式,直接用xsl顯示h2p-file。
(3)博克文章、論壇帖子一般至少有三分之一的內(nèi)容是廣告或圖片,直接根據(jù)URL生成的pdf就顯得很臃腫,這是這個(gè)方案的缺陷,解決這個(gè)問(wèn)題最簡(jiǎn)單的思路就是網(wǎng)站針對(duì)h2p應(yīng)用再提供一個(gè)URL,根據(jù)這個(gè)URL得到的內(nèi)容主要是文字形式的內(nèi)容,之所以說(shuō)它簡(jiǎn)單,是因?yàn)楝F(xiàn)在的界面的輸出大多采用的模板技術(shù),在模板上稍作變動(dòng),就可以輸出沒(méi)有太多廣告和圖片的內(nèi)容。但考慮到網(wǎng)站需要投放廣告,可以允許有少量廣告,從而就產(chǎn)生了h2p-file質(zhì)量這個(gè)概念,圖片越少?gòu)V告越少,那么生成的pdf就越干凈體積就越小,h2p-file質(zhì)量就越高;反之,生成的pdf就像現(xiàn)在的報(bào)紙一樣,實(shí)質(zhì)內(nèi)容淹沒(méi)在廣告里而且體積還很大,h2p-file質(zhì)量就越低。
(4)如果上面的思路得到了采納,那么根據(jù)一條URL生成單個(gè)pdf 的技術(shù)就能很好的解決。目前的h2p-tool在這一部分的開(kāi)發(fā)用的是一個(gè)C#組件(生成的pdf有水印,我估計(jì)這個(gè)組件是調(diào)用了IE瀏覽器的功能)。之所以采用這個(gè)組件,是因?yàn)橐WC生成的pdf展現(xiàn)效果和瀏覽器里的效果完全相同,這無(wú)異于做一個(gè)瀏覽器,難度可想而知。如果專門為h2p應(yīng)用再提供一個(gè)URL,根據(jù)這個(gè)URL得到的內(nèi)容主要是文字形式的內(nèi)容,沒(méi)有復(fù)雜的標(biāo)簽和樣式,這種情況下,使用iText等框架生成pdf是可行的。Javaeye網(wǎng)站提供的pdf下載和電字書制作得到的pdf就是這種情況,提取博克文章的主體內(nèi)容生成pdf。
(5)各網(wǎng)站對(duì)h2p的支持很簡(jiǎn)單,只需發(fā)布網(wǎng)站內(nèi)容的h2p-file即可,h2p-file從此就以協(xié)議或資源的身份出現(xiàn)在互聯(lián)網(wǎng)中。
以上三方面的內(nèi)容分別闡述了h2p應(yīng)用模式、h2p的意義和價(jià)值和h2p完善和發(fā)展的方向,回答了為什么要發(fā)起這個(gè)h2p倡議。敬請(qǐng)各網(wǎng)站管理員考慮我的意見(jiàn),推動(dòng)這個(gè)新的h2p應(yīng)用,不僅會(huì)各網(wǎng)站帶來(lái)新的贏利,而且這將是我們這些中國(guó)程序員的集體榮耀。
2009-8-7
Javaei網(wǎng)站
相關(guān)介紹:
投票——你認(rèn)為h2p實(shí)用嗎
H2P介紹
根據(jù)批量URL生成有書簽的PDF文檔的解決方案
pdf生成的解決方案(H2p)之H2P技術(shù)細(xì)節(jié)
pdf生成的解決方案(H2p)之H2P展望