<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

     

    H2P在很多人看來是個令人激動的方案,而且javaei網站提供h2p文件資源又是相當自然的一件事情,一想到h2p,我都很高興,因為這個方案是我提出來的,盡管實現h2p的技術很成熟。在這篇文章里,說一下實現h2p所涉及到的技術吧,既有核心的j2se應用,又有開源框架的使用。

    1dtd的應用,為了規范使用者正確的編輯h2p文件,我定義了h2p文件的dtd,當然我還有一個奢望,希望能成為一種規范。

    2)使用根據dtd校驗xmlh2p文件),h2p-tool需要解析xmlh2p文件)提取url生成pdf并合并,不合法的xml文件肯定不能正確的生成pdf,所以必須對xml文件進行校驗。

    3xml解析,編輯h2p,用JTree展示xml的樹形結構,這一部分用的是dom解析(具體的是JDom),獲取書簽的目錄結構并構建書簽的數據結構,這一部分用的是SAX解析,并借助于Stack。保存xml文件用的是dom

             4swing的應用,h2p-tool編輯功能用的是swing,展示并編輯樹形結構用的是JTree

             5C#組件,根據url生成單個的pdf,用的是c#組件,并在vs.net開發平臺上進行了簡單的開發。Javaei提供的h2p文件通常包含幾十條url,單就每條url生成pdf也需要一點時間,何況是幾十條,所以運用多線程是必須的方式,研究了一下c#的多線程(c#的多線程方式也很有意思,感覺比java的簡單),可是別人的組件在多線程下表現欠佳,無賴之下,只好還是采用單線程。本想用jnic#的調用封裝起來,但經過研究,據說比較麻煩,就放棄了,所以采用簡單的辦法,用批處理來調用。

    6iText的應用,生成單個pdf頁面以及合并pdf生成書簽用的是iText。在合并的時候,也研究過另一個框架就是pdfboxIText確實強悍,理論上,應用iText可以實現任意效果的輸出,應該可以實現瀏覽器的效果,但比較麻煩。iText在生成書簽這一塊,做得相當漂亮,書簽可以指向任意一個頁面的任意部分,還可以設置書簽對應頁面的打開效果,對書簽的開發也很便利,直接構造書簽的樹形數據結構我認為是最簡單的,iText還支持用xml描述書簽的結構。

             7Classloader的應用,h2p-tool的運行依賴于很多的jar包,通常我們開發的時候,都是把jar包放在指定的目錄,應用服務器會去加載依賴的jar包。在h2p-tool中,需要自己處理jar包。因為這是提供給用戶使用的工具,不應要求使用者去配置除了jdk環境變量以外的變量。所以解決jar包加載的問題通常的辦法是在主類(帶有main方法的類)所在jar包里的Manifest.mf文件里寫上jar包的相對路徑。這種辦法不太靈活,所以在h2p-tool中,對類加載進行了改寫,使其自動加載指定目錄下的jar包。

    8jvm參數的應用,因為要合并的pdf很多,再合并的時候會占用大量內存,很容易out of memery,所以在批處理文件里,需要配置適當的jvm參數,主要是兩個:-Xmx512m -Xms512m,這兩個參數的意義這里不再贅述,網上有很多的。

         總結一下,實現h2p-tool的技術細節貌似很多,實則很少,除了JDOmiText,再就是j2se核心的東西了,出列上面列到的,還包括流、字符集的處理等。H2p-tool及源代碼下載。

    Feedback

    # re: pdf生成的解決方案(H2p)之H2P技術細節  回復  更多評論   

    2009-09-22 14:10 by 路過
    其實java領域也有從html生成pdf比較好的解決方案,所謂的比較好主要指生成的pdf能夠比較好地還原出html的效果,不過就像樓主所有的.net組件一樣,是收費的。

    # re: pdf生成的解決方案(H2p)之H2P技術細節  回復  更多評論   

    2009-11-10 17:47 by cici
    感謝分享, 能詳細介紹一下第五步嗎

    # re: pdf生成的解決方案(H2p)之H2P技術細節[未登錄]  回復  更多評論   

    2009-11-11 22:52 by summeryhrb
    第五步其實很簡單,只是簡單的調用了一下C#的一個dll組件的一些方法,當然還有一些解析xml的代碼

    # re: pdf生成的解決方案(H2p)之H2P技術細節  回復  更多評論   

    2009-11-12 12:05 by cici
    根據url生成單獨的PDF這部分是由C#組件完成的嗎?

    # re: pdf生成的解決方案(H2p)之H2P技術細節[未登錄]  回復  更多評論   

    2009-11-17 12:28 by summeryhrb

    @cici
    根據url生成單獨的PDF這部分是由C#組件完成的

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    posts - 10, comments - 28, trackbacks - 0, articles - 0

    Copyright © summeryhrb

    主站蜘蛛池模板: 无遮挡免费一区二区三区| 亚洲AV日韩AV一区二区三曲| 永久免费AV无码网站国产| 国产亚洲精久久久久久无码77777| 国产成人不卡亚洲精品91| 免费少妇a级毛片| 羞羞视频在线观看免费| 久久精品亚洲男人的天堂| 久久成人18免费网站| 久久亚洲AV午夜福利精品一区| 99久久免费精品视频| 亚洲国产精品成人综合久久久 | 免费理论片51人人看电影| 亚洲AV无码一区二区三区牲色| 在线观看91精品国产不卡免费| 免费无码午夜福利片| 亚洲爆乳无码专区| 99精品在线免费观看| 国产91在线|亚洲| 亚洲国产高清在线一区二区三区| 久久国产美女免费观看精品| 亚洲欧洲国产日韩精品| 成年女人毛片免费观看97| 免费一级毛片在线播放放视频| 亚洲国产精品国自产拍AV| 97在线线免费观看视频在线观看| 国产亚洲高清在线精品不卡| 亚洲乱码中文字幕久久孕妇黑人 | 99久久久国产精品免费蜜臀| 亚洲欧洲日韩国产一区二区三区| 日本免费人成视频播放| 国产一区二区三区免费观在线| 亚洲综合图片小说区热久久| 免费国产a国产片高清| 久久久久久AV无码免费网站下载 | 亚洲国产精品国自产拍电影| 天堂在线免费观看中文版| 13小箩利洗澡无码视频网站免费| 亚洲高清视频在线| 亚洲国产精品无码中文字| 成人免费777777|