欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ArcGIS API for javascript如何解决打印输出的中文为乱码问题?

程序员文章站 2023-11-15 12:32:52
前言 arcgis js中的地图打印功能本质上是调用gp服务,只不过这个gp已经在arcgis server中封装好了,地图打印gp服务的过程是gp服务的异步调用,所以,地图输出...

前言

arcgis js中的地图打印功能本质上是调用gp服务,只不过这个gp已经在arcgis server中封装好了,地图打印gp服务的过程是gp服务的异步调用,所以,地图输出功能实际上是在服务器端完成的,并且在arcgisserver目录下保存了处理结果。

问题描述

调用arcgis api的print实现地图的打印输出,部分代码如下:

//打印输出的参数数组,为打印输出的模板提供参数准备  
var layouts = [{  
    name:"letter ansi a landscape",  
    label:"landscape(pdf)",  
    format:"pdf",  
    options:{  
        "legendlayers":[legendlayer0,legendlayer1,legendlayer3],  
        'scalebarunit':"miles",  
        'titletext': dom.byid('print_title').value,  
        "authortext":dom.byid('print_author').value,  
        "copyrighttext":dom.byid('print_copyright').value  
    }  
},{  
    name:"letter ansi a portrait",  
    label:"portrait(image)",  
    format:"jpg",  
    options:{  
        "legendlayers":[legendlayer0,legendlayer1,legendlayer3],  
        "scalebarunit":"miles",  
        "titletext": dom.byid('print_title').value,  
        "authortext":dom.byid('print_author').value,  
        "copyrighttext":dom.byid('print_copyright').value  
    }  
}];  

//定义打印输出的模板  
 var templates = array.map(layouts,function(lo){  
     var t = new printtemplate();  
    t.layout = lo.name;  
    t.label = lo.label;  
     t.format = lo.format;  
    t.layoutoptions = lo.options;  
    return t;  
    });  

//打印输出功能  
    printer = new print({  
        map: map,  
        templates:templates,  
        url: "https://192.168.18.102:6080/arcgis/rest/services/utilities/printingtools/gpserver/export%20web%20map%20task"  
    }, dom.byid("printbutton"));  
   printer.startup();  
   });  

在端执行,输入图名、单位等信息并进行打印输出,选择打印的方式,如下:

ArcGIS API for javascript如何解决打印输出的中文为乱码问题?

遇到以下问题:

ArcGIS API for javascript如何解决打印输出的中文为乱码问题?

问题分析

仔细查阅,打印的api中也并为提供对printtemplate的字体的设置,然而printtask服务也是调用了arcgis server中内置的出图模板,找到目录,打开模板进行查看:

ArcGIS API for javascript如何解决打印输出的中文为乱码问题?

打开在代码中所使用的相应的模板进行查看,惊奇大发现:所有输出为乱码的图名、单位名称等在模板中的默认字体均为arial欧洲字体

ArcGIS API for javascript如何解决打印输出的中文为乱码问题?

问题解决:

修改每一处的字体为中文字体

以图名为例,右键单击图名选址properties,点击change symbol,修改字体类型。修改完毕后保存并关闭mxd文档。如下:

ArcGIS API for javascript如何解决打印输出的中文为乱码问题?

再次执行

ArcGIS API for javascript如何解决打印输出的中文为乱码问题?