我必须使用ArcGIS API for JavaScript来显示PDF报告,我使用该API,因为报告是从我的ArcGIS服务器创建的,这是我的方案。
JS代码:
function printReport(){
var printTask = new PrintTask({
url: ptReport,
mode: "async"
})
var template = new PrintTemplate({
format: "pdf",
exportOptions: {
dpi: 96
},
outputSize:[800, 1100],
layout: "",
layoutOptions: {
titleText: "",
authorText: ""
}
});
var params = new PrintParameters({
view: view,
template: template,
extraParameters: {
"pPerdidaCablesConectores" : "1 dB",
"pOtrasPerdidas" : "0 dB"
}
});
printTask.execute(params).then(sendRequestPrint, showError);
}
function sendRequestPrint(data){
console.log(data.value); //it always is void
}
当我运行printReport方法时它运行正常,事实上,报告是在服务器中创建的,我知道这是因为我正在分析来自ArcGIS服务器的响应:
此时所有工作正常,但是,当运行sendRequestPrint方法时,响应总是无效。
发生了什么,为什么报告是否已创建,它不会出现在回复中?
答案 0 :(得分:0)
请查看PrintTask
complete
个功能参数。返回的类型为DataFile
。
https://developers.arcgis.com/javascript/3/jsapi/datafile-amd.html
PrintTask
在内部解析来自服务器的响应并返回另一个对象。你应该只是使用如下
function sendRequestPrint(data){
console.log(data.url);
}
答案 1 :(得分:0)
此行为是设计使然。您应该监听onComplete事件,检查DataFile对象并向返回的url发出另一个请求以获取您的pdf。这是您已在代码中执行的操作。
有关示例,请参阅PrintTask文档:https://developers.arcgis.com/javascript/3/jsapi/printtask-amd.html
在您发布的图片中,文档的网址位于<> .value.url。
所以你的回调应该是这样的:
x = func(a)
您可能希望使用Print dijit为您自动执行此过程,而不是直接处理PrintTask:https://developers.arcgis.com/javascript/3/jsapi/print-amd.html
答案 2 :(得分:0)
我试过
function sendRequestPrint(data){
console.log(data.url);
}
它的工作
非常感谢你们。