ArcGIS API for javascript如何解决打印输出的中文为乱码问题?
程序员文章站
2022-06-19 21:54:33
前言
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(); });
在端执行,输入图名、单位等信息并进行打印输出,选择打印的方式,如下:
遇到以下问题:
问题分析
仔细查阅,打印的api中也并为提供对printtemplate的字体的设置,然而printtask服务也是调用了arcgis server中内置的出图模板,找到目录,打开模板进行查看:
打开在代码中所使用的相应的模板进行查看,惊奇大发现:所有输出为乱码的图名、单位名称等在模板中的默认字体均为arial欧洲字体
问题解决:
修改每一处的字体为中文字体
以图名为例,右键单击图名选址properties,点击change symbol,修改字体类型。修改完毕后保存并关闭mxd文档。如下:
再次执行