ArcGIS API for Silverlight地图保存为PDF和图片.pdf_第1页
ArcGIS API for Silverlight地图保存为PDF和图片.pdf_第2页
ArcGIS API for Silverlight地图保存为PDF和图片.pdf_第3页
ArcGIS API for Silverlight地图保存为PDF和图片.pdf_第4页
ArcGIS API for Silverlight地图保存为PDF和图片.pdf_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ArcGIS API for SilverlightArcGIS API for Silverlight 地图保存为地图保存为 PDFPDF 和图片和图片 在使用 ArcGIS API for Silverlight 进行地图展示应用的时候 在客户端 经常需要将地图保存为 PDF 或图片 png jpg 等 在做保存的时候实际上都是 将地图写入到位图像素中 然后在保存为 PDF 或图片 这样在 Silverlight 的 SDK 中 提供了一个叫 WritableBitmapImage 的对象 使用该对象 可以很方便 地把我们应用程序中的 UIElement 渲染到该位图对象上 并提供读取该对象所包 含像素的接口 一 保存为一 保存为 PDFPDF 文档文档 在保存为PDF文档的时候需要第三方的类库文件 silverPDF silverPDF是 Silverlight库 它使开发人员能够在客户端上创建PDF文件更加容易 silverPDF 是基于两个开源的项目 PdfSharp 和 iTextSharp 下载这个类库文件 然后 加入到Silverlight项目工程的引用中 这样就可以使用 PdfSharp Pdf 和 PdfSharp Drawing 这两个命名空间 在VS项目中就可以使用 如下代码 PdfDocument document new PdfDocument PdfPage page document AddPage XImage img XImage FromStream stream if img PointWidth img PointHeight page Orientation PdfSharp PageOrientation Landscape else page Orientation PdfSharp PageOrientation Portrait document Pages 0 Width XUnit FromPoint img PointWidth document Pages 0 Height XUnit FromPoint img PointHeight XGraphics gfx XGraphics FromPdfPage page gfx DrawImage img 0 0 img PointWidth img PointHeight document Save streamOutPDF document Close document null stream Close stream null streamOutPDF null private void SaveMapToPDF Click object sender RoutedEventArgs e SaveFileDialog saveFileDialog new SaveFileDialog saveFileDialog Filter PDF file format pdf saveFileDialog DefaultExt pdf if saveFileDialog ShowDialog true Stream pdfstream saveFileDialog OpenFile try PDFExporterControls PDFExporter pdfExporter new PDFExporterControls PDFExporter pdfExporter SetParent pdfExporter SetOutputStream pdfstream pdfExporter SetMap myMap pdfExporter DoExport MessageBox Show string Format PDF is exported and saved in 0 saveFileDialog SafeFileName catch Exception ex MessageBox Show string Format Error creating PDF document 0 ex Message 通过silverPDF将地图保存为PDF文档 如下图 下载 silverPdf 类库文件 二 保存为图片二 保存为图片 大致的使用过程如下 1 添加两个辅助类 EditableImage 和 PngEncoder 详细见附件里的代码 2 在截取事件里创建 WritableBitmapImage 这里只需要把 ArcGIS 的 Map 控 件对象传入即可 如果需要对生成的图片进行放大或平移 可以创建一个 Transform 对象 并传给构建方法的第二个参数 WriteableBitmap bm new WriteableBitmap Map1 null 3 然后弹出保存文件对话框 var dlg new SaveFileDialog dlg DefaultExt png dlg Filter PNG File png if dlg ShowDialog true using var pngStream GetPngStream bm using var file dlg OpenFile byte binaryData new Byte pngStream Length long bytesRead pngStream Read binaryData 0 int pngStream Length file Write binaryData 0 int pngStream Length file Flush file Close 4 这里定义了一个 GetPngStream 的方法 在这个方法里 用到 EditableImage 和 PngEncoder 两个辅助类 读取 WriteableBitmap 的 Pixels 像素数组并把 它编码为 Png 格式的二进制流 private Stream GetPngStream WriteableBitmap bmp EditableImage imageData new EditableImage bmp PixelWidth bmp PixelHeight for int y 0 y bmp PixelHeight y for int x 0 x 16 return imageData GetStream 三 保存图片三 保存图片错误错误的解决方法的解决方法 运行后 在保存地图为 PDF 或图片时出现如下错误 这是由于 WritableBitmapImage 具有内容保护机制 即假如使用 WritableBitmap 渲染的内容来自另外一个应用域 不同应用程序名 不同端口 或不同服务器 则在读取 WritableBitmapImage 的像素数组时会报 Pixels are not accessible 的错误 多数情况下 我们使用的 Map 控件的地图内容会包含 缓存地图服务 例如 ArcGISTiledMapServicesLayer 这种情况下 地图控件的 内容来自 ArcGIS Server 配置指定的 arcgiscache 缓存目录 由于我们的应用程 序和 arcgiscahce 虚拟目录是分开的 亦即属于不同的应用域 所以在截图时 上述代码会出错 1 首先在对 arcgiscache 目录建立一个共享目录 例如共享路径为 localhost sharedcache 如下图 同时需要设置读写权限 如下图 2 然后在我们的 Silverlight 部署的应用程序目录里建立一个虚拟目录 指向 刚才我们的共享路径 指定一个别名 例如 arccache 如下图 3 然后使用 ArcCatalog 或ArcGIS Manager 配置ArcGIS Server 的Server属性 添加 cache 类型的目录 物理路径名为刚才我们创建的共享路径 虚拟路径 为我们的 Silverlight 应用程序里的刚才新建的虚拟目录路径 例如 http localhost SilverlightMapApp arccache 如下图 4 之后修改我们已经发布的缓存地图服务 修改其所使用的 cache 目录为我们 添加的共享路径

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论