ArcGIS API for JavaScript - PrintTask 不工作
ArcGIS API for JavaScript - PrintTask dosen't work
我必须使用 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 服务器的响应:
此时一切正常,但是,当 运行ned sendRequestPrint 方法时,响应总是无效。
发生了什么事,为什么报告已创建但没有出现在响应中?
请查看 PrintTask
complete
函数参数。返回的类型是 DataFile
.
https://developers.arcgis.com/javascript/3/jsapi/datafile-amd.html
PrintTask
在内部解析来自服务器的响应和 returns 不同的对象。你应该简单地像下面这样使用
function sendRequestPrint(data){
console.log(data.url);
}
此行为是设计使然。您应该监听 onComplete 事件,检查 DataFile 对象并向返回的 url 发出另一个请求以获取您的 pdf。这是您已经在代码中执行的操作。
有关示例,请参阅 PrintTask 文档:https://developers.arcgis.com/javascript/3/jsapi/printtask-amd.html
在您张贴的图片中,文档的 url 位于 <>.value.url。
所以你的回调应该是这样的:
function sendRequestPrint(data){
var url = data.value.url;
// make a request to get the pdf
// do other stuff...
}
您可能希望使用 Print dijit 为您自动执行此过程,而不是直接处理 PrintTask:https://developers.arcgis.com/javascript/3/jsapi/print-amd.html
我试过了
function sendRequestPrint(data){
console.log(data.url);
}
有效
非常感谢大家。
我必须使用 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 服务器的响应:
此时一切正常,但是,当 运行ned sendRequestPrint 方法时,响应总是无效。
发生了什么事,为什么报告已创建但没有出现在响应中?
请查看 PrintTask
complete
函数参数。返回的类型是 DataFile
.
https://developers.arcgis.com/javascript/3/jsapi/datafile-amd.html
PrintTask
在内部解析来自服务器的响应和 returns 不同的对象。你应该简单地像下面这样使用
function sendRequestPrint(data){
console.log(data.url);
}
此行为是设计使然。您应该监听 onComplete 事件,检查 DataFile 对象并向返回的 url 发出另一个请求以获取您的 pdf。这是您已经在代码中执行的操作。
有关示例,请参阅 PrintTask 文档:https://developers.arcgis.com/javascript/3/jsapi/printtask-amd.html
在您张贴的图片中,文档的 url 位于 <>.value.url。
所以你的回调应该是这样的:
function sendRequestPrint(data){
var url = data.value.url;
// make a request to get the pdf
// do other stuff...
}
您可能希望使用 Print dijit 为您自动执行此过程,而不是直接处理 PrintTask:https://developers.arcgis.com/javascript/3/jsapi/print-amd.html
我试过了
function sendRequestPrint(data){
console.log(data.url);
}
有效
非常感谢大家。