Webgis 列印實現原理

來源:互聯網
上載者:User
 

Webgis 列印實現原理褫其華袞,示人本相系列之二2006-9-18cheungmine 一、問題的提出       Webgis提供了用戶端免外掛程式的地圖瀏覽機制。任何位於WWW節點內的電腦都可以通過瀏覽器瀏覽地圖。但是,列印地圖成了Webgis遇到的一個問題。用戶端如果使用IE的預設列印功能來輸出地圖,僅僅輸出了當前顯示的圖象到印表機。無論從尺寸和解析度上都不能滿足高精度繪圖的需要。如果客戶要求輸出一定比例尺(如:1/500)的大幅面地圖(連續多幅),這就成了Webgis列印的技術壁壘。本文從實用的角度出發,闡述了Webgis列印的實現原理。  二、存在的幾種解決方案       在解決這個問題的過程中,主要考慮了以下幾種形式: 方案1:在用戶端安裝ActiveX外掛程式,實現列印的功能。這是更換了問題的概念,並沒有解決問題,我們的問題是如何在Webgis上實現列印?所以這種方案不可行。 方案2:服務端地圖引擎產生某種格式的可列印的地圖檔案,此檔案下載到用戶端。當然最好是PDF格式。用戶端必須安裝PDF Reader,目前這個不是問題。  三、失敗是成功之母       考慮 方案2是最可行的。所以我採用了地圖引擎列印到虛擬印表機的方法。我在服務端(當然,就是我自己的電腦)安裝了Adobe Pdf Writer和Office2003 Document Imaging兩個虛擬印表機,分別產生了.pdf檔案和.mdi檔案。但是,一旦程式做為Web服務運行,必須類比本機使用者登入,否則無法列印。我在程式中編碼類比了我自己機器的管理員(Administrator/密碼)登入(使用API:LogonUserImpersonateLoggedOnUser),結果很激動,列印的檔案正確產生了。但是服務端不斷建置錯誤事件,報告我一堆錯誤。很快事件記錄就滿了。       靜靜地想一想,即使沒有那些錯誤發生,上面談到的技術也不是一種好的解決辦法,原因有:服務端必須安裝Adobe Pdf Writer和Office2003 Document Imaging之一。這2個軟體可都是要美圓的。另外Office2003 Document Imaging最大解析度只為300dpi,而Adobe pdf為4000dpi。我不禁佩服專業就是專業。  四、勝利在向我招手       我把目光轉向開源領域的實現。那是GnuWin32的項目。很早我下了它的原始碼,今天終於要派上用處了。我的原則是:必須最終能產生PDF檔案,必須支援多頁。我發現,CxImage就是這樣一個能產生多頁TIFF的免費開源實現。LIBTIFF裡面有工具能支援TIFF到PDF的轉換,雖然是以tiff2pdf.exe提供的,但是有原始碼.c檔案。我用VS7很容易就可以重新編譯成功。這樣,我寫了測試小程式,測試結果完全滿意。一幅A0的地圖,最終產生的PDF不大於1M。多頁當然也沒問題。       接下來就是整合到My Code裡來。我使用CxImage599c和LIBTIFF3.8.2-1。  五、小貼示       VC7裡面有個CImage類,其功能當然無法與CxImage相比。而且我用CxImage產生的單頁或多頁TIFF都無法被Windows下的看圖程式所讀取。難道是CxImage產生了錯誤的tiff了嗎?而Adobe Pdf Writer可以成功開啟這個TIFF,說明沒錯。是Windows做的不夠好。       在很多方面,Windows做的都沒有開源做的好。可惜My Code裡使用CImage的地方太多了,不然一定換成CxImage。下面的開源網址是我代碼的源泉:       http://www.zlib.nethttp://www.remotesensing.org/libtiffhttp://www.libpng.orghttp://www.ijg.orghttp://www.xdp.ithttp://gnuwin32.sourceforge.net        不知道我說明白沒有?

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.