• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 實現Internet/Intranet 所見即所得的打印功能

    發表于:2007-07-01來源:作者:點擊數: 標簽:
    實現 Internet/Intranet 所見即所得的打印功能 隨著Internet技術的飛速發展,越來越多的企業應用是基于Internet/Intranet。這樣用戶就可以通過瀏覽器(Browser)來完成各種數據的輸入、查詢功能。但由于目前瀏覽器的局限性,影響了它的一些應用。如HTML頁面交
     

    實現Internet/Intranet 所見即所得的打印功能


      




        隨著Internet技術的飛速發展,越來越多的企業應用是基于Internet/Intranet。這樣用戶就可以通過瀏覽器(Browser)來完成各種數據的輸入、查詢功能。但由于目前瀏覽器的局限性,影響了它的一些應用。如HTML頁面交互性不強、缺乏所見即所得的打印功能等。這些問題多是通過在網頁中嵌入Java Applet、ActiveX等控件或是使用Plug-in來解決。本文介紹一種解決所見即所得的打印方案


    一、瀏覽器的打印問題


        瀏覽器無法實現所見即所得的打印功能,主要原因是由于HTML缺乏精確定位和繪圖功能。標準HTML只能設置文本和圖片等元素的基本顯示屬性。這樣在打印時,不同的瀏覽器,不同的打印頁面設置,都會導致打印結果不同。


    二、主要解決方案


        解決Internet/Intranet的所見即所得的功能方法很多,但不外乎三種方式:一種是在網頁中使用所見即所得的打印控件,如使用Java Applet、ActiveX等;一種是編寫自己的客戶端所見即所得的打印程序或Plug-in,打印時瀏覽器從Web服務器上取得打印數據,再調用打印程序或Plug-in進行打??;第三種方式是利用第三方支持所見即所得打印功能的程序或Plug-in,打印時瀏覽器下載打印數據,再調用第三方程序或Plug-in進行打印。下面詳細介紹著三種方案。


    客戶端使用自己編寫的打印程序或Plug-in
      

    工作方式:客戶端要打印時,瀏覽器先從Web服務器上下載要打印的數據包,再調用自己編寫的程序或Plug-in打印??梢宰龅揭贿呄螺d,一邊打印。


    優點:打印數據包可以很小,適合各種帶寬通訊。自己可以定義數據包格式,做到數據量最少。


    缺點:客戶端需要安裝一次,開發設計工作量大,升級麻煩,增加了維護負擔。不僅服務器端要編寫生成打印數據的模塊,客戶端也要編寫打印程序或Plug-in。升級時要為不僅服務器要升級,客戶端的打印程序也要升級。


    客戶端使用第三方打印程序或Plug-in


    工作方式:基本與第二種方式相同,所不同的是客戶端用的是第三方程序或Plug-in。


    優點:設計工作量少,升級方便,維護簡單。由于使用的是第三方軟件,設計工作主要集中在服務器方,升級時也只用升級服務器。


    缺點:客戶端需要安裝一次,要求第三方軟件開發商能提供程序的數據接口,程序的使用需要授權。


        如果能找到一種操作簡單,客戶常用,支持所見即所得打印功能,且數據接口是開放的客戶端軟件是解決這個問題的最好方式。


        PDF電子文檔的免費閱讀器-Adobe Acrobat(R) Reader-正是我們要找的客戶端軟件。大多數網民可能都安裝有免費的Acrobat(R) Reader,用它可以查看PDF文件。它提供了所見即所得的打印功能,并且PDF文檔格式是開放的。只要在客戶端安裝免費的PDF閱讀器-Acrobat(R) Reader,在Web服務器端適時的把要打印的數據生成PDF文件,這樣就比較完美的解決了網上的打印問題。


    三、PDF的特點


        PDF(Portable Document Format)是一種通用開放文檔格式,它是由Adobe公司開發,適合網上使用的電子文檔格式。它事實上已成為電子文檔的標準。任何人都可利用免費提供的 Adobe Acrobat(R) Reader 軟件隨意地共享、查看、導航和打印 PDF 文件。免費的Adobe Acrobat(R) Reader可以隨意分發。


    PDF有以下特點:


    PDF文檔格式開放;
    可實現PDF文檔跨平臺:PDF的閱讀器(Acrobat(R) Reader)已有各種操作系統版本(Windows、Mac、Linux和各種Unix版),用不同的閱讀器查看和打印的字體、顏色和大小都完全一樣;
    PDF文檔內容可以壓縮,可有效降低文檔大??;
    PDF文檔是結構化的、面向對象的;
    PDF文檔還可嵌入圖片、聲音和視頻圖象,還提供書簽、Web連接、跨文檔連接等功能;
    PDF的閱讀器和Plug-in可免費提供。
    四、PDF文檔介紹


    下面簡單介紹PDF文檔的基本知識


    PDF的對象( Object )
    PDF文檔是由一系列基本對象構成,它們是:


    布爾對象( Boolean ):只有兩個值:True和False


    數值對象( Number ):可是整數和浮點數


    字符串和文字對象( String and Text ):是一串無符號的8位字節、寫為一串字符格式的對象


    名字對象( Name ):由”/”打頭,類似于字符串的對象


    數組對象( Array ):由任何對象組成的一組對象


    字典對象( Dictionary ):由對象對組成的表。對象對的第一個對象是健( key ),一定是名字對象;第二個為值( Value ),可是任何對象


    流對象( Stream ):類似于字符串,由一串字符組成。流對象一定是間接對象,它一般用在數據量較大時


    空對象( null ):null


    另外還有間接對象和對象引用。通過這些對象可以寫出任何內容的文檔


    文件結構
        PDF文件結構可分成四部分,如圖


    文件頭( Header ):標識PDF文件的版本號


    文件體( Body ):PDF文件的內容。它是由一系列對象(Object)組成,描述文件內容。


    交叉引用表( Cross-reference table ):文件體中各個對象偏移字節地址表,表的格式是固定的。PDF閱讀器通過交叉引用表,可以快速得到任何對象的數據。


    文件尾( Trailer ):標識文件結束,提供目錄(Catalog)對象的引用,并提供交叉引用表的偏移字節地址。PDF閱讀器從文件尾開始讀取數據,得到交叉引用表的地址,通過交叉引用表得到任何對象。


    PDF不用重寫整個文件就能更改文件內容,方法是在PDF文件末尾添加更新部分即可。更新部分也是有文件體、交叉引用表和文件尾組成。


    文檔結構
        PDF文檔是由PDF文件的文件體中的對象鏈來表述的?;窘Y構見下圖:




    每個PDF文檔由目錄(Catalog)對象開始,目錄對象中有文檔的頁面樹(Pages Tree)、綱要樹(Outlines Tree)等對象的間接引用。


        頁面樹對象中包括了所有PDF頁面(Page)對象的間接引用,也可以包含下一級頁面樹對象引用。


        頁面對象中可以包括可圖形化內容、頁面縮略圖和批注等對象的引用


        綱要樹對象包括了各綱要條目對象的引用。


        頁面對象可以繼承上一級的頁面屬性。


    可圖形化內容
        可圖形化內容是指PDF文當中所有可顯示的內容:文字、圖形、圖像等。PDF提供了一套完整的指令來描述這些內容。


    簡單示例說明
    這個例子只是簡單的顯示”Hello World”文字


    %PDF-1.0      文件頭PDF ver=1.0
    1 0 obj         文件體,目錄(Catalog)對象
    <<
    /Type /Catalog
    /Pages 3 0 R 頁面樹(Pages Tree)的引用
    /Outlines 2 0 R 概要樹(Outline Tree)的引用
    >>
    endobj
    2 0 obj 概要樹(Outline Tree)對象
    <<
    /Type /Outlines
    /Count 0 這里沒有概要條目
    >>
    endobj
    3 0 obj 頁面樹(Pages Tree)對象
    <<
    /Type /Pages
    /Count 1
    /Kids [4 0 R] 頁面對象引用數組,這里就一個頁面對象
    >>
    endobj
    4 0 obj 頁面(Page)對象
    <<
    /Type /Page
    /Parent 3 0 R
    /Resources << /Font << /F1 7 0 R >>/ProcSet 6 0 R 資源引用(這里是字體)
    >>
    /MediaBox [0 0 612 792] 頁面大小
    /Contents 5 0 R 頁面可圖形化內容的對象引用
    >>
    endobj
    5 0 obj 可圖形化內容對象,數據內容通常被壓縮
    << /Length 44 >>
    stream
    BT
    /F1 24 Tf
    100 100 Td (Hello World) Tj 顯示Hello World
    ET
    endstream
    endobj
    6 0 obj
    [/PDF /Text]
    endobj
    7 0 obj 字體資源對象
    <<
    /Type /Font
    /Subtype /Type1
    /Name /F1
    /BaseFont /Helvetica
    /Encoding /MacRomanEncoding
    >>
    endobj
    xref 交叉引用表(Cross-reference Table)
    0 8
    0000000000 65535 f
    0000000009 00000 n 1?。啊bj offset
    0000000074 00000 n 2 0 obj offset
    0000000120 00000 n 3?。啊bj offset
    0000000179 00000 n
    0000000322 00000 n
    0000000415 00000 n
    0000000445 00000 n
    trailer 文件尾
    <<
    /Size 8
    /Root 1 0 R 目錄(Catalog)對象引用
    >>
    startxref
    553 交叉引用表的偏移
    %%EOF
    五、PDF文檔實際應用


        由于PDF文檔是基于文本模式,具有面向對象和結構化等特點,所以其文檔生成器的編程難度較小,生成器的速度較快。


    現在我已經用Java編寫了一個PDF文件生成器,現已實現的主要功能有:


    支持常見14種西文字符集和三種True Type中文字符集的顯示。支持True Type中文字符集有:楷體、宋體和黑體;
    可繪制直線、圓?。E圓?。┖蛨A(橢圓),可設定線型、顏色
    支持裁剪操作及定制填充
    可嵌入JEPG格式的圖片,如jpg圖片文件
    可精確設定頁面尺寸和點的位置
    在使用中能很好的解決網上所見即所得的打印功能。


    查看實際生成的PDF文件


    六、總結


        PDF是一種通用開放文檔。它的文檔結構設計簡單、先進,相關文檔資料完備,網上相關資源豐富,具有免費的閱讀器和Plug-in。在服務器端使用PDF文檔生成器,可以有效的完成網上所見即所得的打印功能。其開發成本低,維護簡單,升級方便快捷。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>