`
love19820823
  • 浏览: 974638 次
文章分类
社区版块
存档分类
最新评论

Webgis 打印实现原理

 
阅读更多
Webgis 打印实现原理
褫其华衮,示人本相系列之二
2006-9-18
cheungmine
一、问题的提出
Webgis提供了客户端免插件的地图浏览机制。任何位于WWW节点内的计算机都可以通过浏览器浏览地图。但是,打印地图成了Webgis遇到的一个问题。客户端如果使用IE的默认打印功能来输出地图,仅仅输出了当前显示的图象到打印机。无论从尺寸和分辨率上都不能满足高精度绘图的需要。如果客户要求输出一定比例尺(如:1/500)的大幅面地图(连续多幅),这就成了Webgis打印的技术壁垒。本文从实用的角度出发,阐述了Webgis打印的实现原理。
二、存在的几种解决方案
在解决这个问题的过程中,主要考虑了以下几种形式:
方案1:在客户端安装ActiveX插件,实现打印的功能。这是更换了问题的概念,并没有解决问题,我们的问题是如何在Webgis上实现打印?所以这种方案不可行。
方案2:服务端地图引擎生成某种格式的可打印的地图文件,此文件下载到客户端。当然最好是PDF格式。客户端必须安装PDF Reader,目前这个不是问题。
三、失败是成功之母
考虑方案2是最可行的。所以我采用了地图引擎打印到虚拟打印机的方法。我在服务端(当然,就是我自己的计算机)安装了Adobe Pdf WriterOffice2003 Document Imaging两个虚拟打印机,分别生成了.pdf文件和.mdi文件。但是,一旦程序做为Web服务运行,必须模拟本机用户登录,否则无法打印。我在程序中编码模拟了我自己机器的管理员(Administrator/密码)登录(使用APILogonUserImpersonateLoggedOnUser),结果很激动,打印的文件正确生成了。但是服务端不断生成错误事件,报告我一堆错误。很快事件日志就满了。
静静地想一想,即使没有那些错误发生,上面谈到的技术也不是一种好的解决办法,原因有:服务端必须安装Adobe Pdf WriterOffice2003 Document Imaging之一。这2个软件可都是要美圆的。另外Office2003 Document Imaging最大分辨率只为300dpi,而Adobe pdf4000dpi。我不禁佩服专业就是专业。
四、胜利在向我招手
我把目光转向开源领域的实现。那是GnuWin32的项目。很早我下了它的源代码,今天终于要派上用处了。我的原则是:必须最终能生成PDF文件,必须支持多页。我发现,CxImage就是这样一个能生成多页TIFF的免费开源实现。LIBTIFF里面有工具能支持TIFFPDF的转换,虽然是以tiff2pdf.exe提供的,但是有源代码.c文件。我用VS7很容易就可以重新编译成功。这样,我写了测试小程序,测试结果完全满意。一幅A0的地图,最终生成的PDF不大于1M。多页当然也没问题。
接下来就是集成到我的代码里来。我使用CxImage599cLIBTIFF3.8.2-1
五、小贴示
VC7里面有个CImage类,其功能当然无法与CxImage相比。而且我用CxImage生成的单页或多页TIFF都无法被Windows下的看图程序所读取。难道是CxImage生成了错误的tiff了么?而Adobe Pdf Writer可以成功打开这个TIFF,说明没错。是Windows做的不够好。
在很多方面,Windows做的都没有开源做的好。可惜我的代码里使用CImage的地方太多了,不然一定换成CxImage。下面的开源网址是我代码的源泉:
不知道我说明白没有?
分享到:
评论

相关推荐

    基于ARCIMS的webgis

    然而,理解ARCIMS对于理解WebGIS的发展历程以及现代WebGIS的构建原理仍然具有重要的意义。 总结来说,基于ARCIMS的WebGIS是地理信息系统与Web技术结合的早期尝试,它开启了GIS服务化的先河,为后续WebGIS的发展奠定...

    《WebGIS基础与应用》(课程设计)任务书

    本课程设计旨在通过实际项目操作,让学生掌握WebGIS的基本原理和技术方法,提高学生运用WebGIS解决实际问题的能力。具体目标包括但不限于: 1. **理解WebGIS的基本概念**:掌握WebGIS的基础理论知识,了解WebGIS的...

    webGIS开发 arcgis serveryu。net 源码

    5. 自学WebGIS:学习WebGIS开发需要掌握基础的GIS原理、Web开发技术以及ArcGIS Server和.NET框架的使用。可以参考Esri的官方文档、在线教程,以及参与社区论坛交流,实践项目以巩固理论知识并提升实战技能。 总的来...

    基于WebGIS的徐州公众信息服务平台的设计研究

    整个平台的设计和建设,运用了GIS软件工程的开发原理和步骤,结合了WebGIS技术的特点,使得平台具备了较强的功能性和实用性,能够满足不同人群的需求,尤其是对于外来旅游者而言,该平台能够帮助他们更快地获取所需...

    mapinfo基础教程

    9. **MapInfo扩展功能**:MapInfo支持多种插件和第三方工具,如MapXtreme和MapGuide,它们可以增强GIS的功能,实现WebGIS应用。通过教程,你可以了解到如何使用这些扩展功能来提升工作效率。 通过深入学习这份...

    MapXtreme for Windows中文培训教材

    这份内部培训资料采用PDF格式,保证了内容的清晰度和易读性,适合在线阅读或打印学习。 MapXtreme的核心功能包括地图创建、数据管理、空间分析以及Web服务发布。以下是对这些关键知识点的详细说明: 1. **地图创建...

Global site tag (gtag.js) - Google Analytics